protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- List <Curve> curves = new List <Curve>(); MeshGeometry mesh = new MeshGeometry(); //---input--- if (!DA.GetDataList(0, curves)) { return; } if (!DA.GetData(1, ref mesh)) { return; } //---setup--- int u = mesh.GetU(); int v = mesh.GetV(); Brep origBrep = mesh.GetOrigBrep(); double volume = origBrep.GetVolume(); double sqrt3 = (double)1 / 3; double refLength = Math.Pow(volume, sqrt3); Brep brepSurface = Brep.CreateEdgeSurface(curves); Point3d[] vertices = brepSurface.DuplicateVertices(); Surface surface = brepSurface.Faces[0]; // --- solve --- List <Point3d> points = CreatePoints(surface, u, v); Color pointsColor = Color.FromArgb(135, 206, 255); (List <string> texts, List <Plane> planes) = CreateTextAndPlane(curves); double size = (double)refLength / 7; Color colorText = Color.Orange; // --- output --- DA.SetDataList(0, points); DA.SetData(1, pointsColor); DA.SetDataList(2, texts); DA.SetData(3, size); DA.SetDataList(4, planes); DA.SetData(5, colorText); }
protected override void SolveInstance(IGH_DataAccess DA) { // --- variables --- MeshGeometry mesh = new MeshGeometry(); // --- input --- if (!DA.GetData(0, ref mesh)) { return; } // --- solve --- List <Node> nodes = mesh.GetNodeList(); List <Element> elements = mesh.GetElements(); List <Point3d> globalPoints = mesh.GetGlobalPoints(); int sizeOfM = mesh.GetSizeOfMatrix(); List <List <Point3d> > elementPoints = mesh.GetElementPoints(); List <List <int> > connectivity = mesh.GetConnectivity(); List <List <Line> > edgesMesh = mesh.GetEdges(); List <List <Brep> > surfacesMesh = mesh.GetSurfaces(); DataTree <Point3d> treePoints = new DataTree <Point3d>(); DataTree <int> treeConnectivity = new DataTree <int>(); DataTree <Line> treeEdges = new DataTree <Line>(); DataTree <Brep> treeSurfaces = new DataTree <Brep>(); for (int i = 0; i < elementPoints.Count; i++) { treePoints.AddRange(elementPoints[i], new GH_Path(new int[] { 0, i })); treeConnectivity.AddRange(connectivity[i], new GH_Path(new int[] { 0, i })); treeEdges.AddRange(edgesMesh[i], new GH_Path(new int[] { 0, i })); treeSurfaces.AddRange(surfacesMesh[i], new GH_Path(new int[] { 0, i })); } // --- output --- DA.SetDataList(0, nodes); DA.SetDataList(1, elements); DA.SetDataList(2, globalPoints); DA.SetData(3, sizeOfM); DA.SetDataTree(4, treeConnectivity); DA.SetDataTree(5, treePoints); DA.SetDataTree(6, treeEdges); DA.SetDataTree(7, treeSurfaces); }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- int surfNo = 0; Vector3d forceVec = new Vector3d(); BrepGeometry brp = new BrepGeometry(); MeshGeometry mesh = new MeshGeometry(); //---input--- if (!DA.GetData(0, ref surfNo)) { return; } if (!DA.GetData(1, ref forceVec)) { return; } if (!DA.GetData(2, ref mesh)) { return; } //---solve--- brp = mesh.GetBrep(); Brep surface = mesh.GetSurfaceAsBrep(surfNo); double area = surface.GetArea(); List <Node> nodes = mesh.GetNodeList(); (List <string> pointLoads, double maxLoad) = FindPointLoads(surfNo, area, forceVec, nodes, brp); // For previewing of loads double refLength = brp.GetRefLength(); List <Line> arrows = DrawLoads(pointLoads, refLength, maxLoad); Color color = Color.FromArgb(135, 206, 255); //---output--- DA.SetDataList(0, pointLoads); DA.SetDataList(1, arrows); DA.SetData(2, color); }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- List <Curve> curves = new List <Curve>(); MeshGeometry mesh = new MeshGeometry(); //---input--- if (!DA.GetDataList(0, curves)) { return; } if (!DA.GetData(1, ref mesh)) { return; } //---setup--- Brep origBrep = mesh.GetOrigBrep(); double volume = origBrep.GetVolume(); double sqrt3 = (double)1 / 3; double refLength = Math.Pow(volume, sqrt3); (List <string> texts, List <Plane> planes) = CreateTextAndPlane(curves, refLength); Color colorText = Color.Orange; double size = (double)refLength / 7; //---output--- DA.SetDataList(0, texts); DA.SetData(1, size); DA.SetDataList(2, planes); DA.SetData(3, colorText); }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- int surfNo = 0; string restrains = "0,0,0"; MeshGeometry mesh = new MeshGeometry(); //---input--- if (!DA.GetData(0, ref surfNo)) { return; } if (!DA.GetData(1, ref mesh)) { return; } BrepGeometry brp = mesh.GetBrep(); List <Node> nodes = mesh.GetNodeList(); //---solve--- List <string> pointsBC = FindBCPoints(surfNo, restrains, nodes); //For previewing of bc double refLength = brp.GetRefLength(); List <Brep> cones = DrawBC(pointsBC, refLength); Color color = Color.FromArgb(0, 100, 255); //---output--- DA.SetDataList(0, pointsBC); DA.SetDataList(1, cones); DA.SetData(2, color); }
protected override void SolveInstance(IGH_DataAccess DA) { //NOTE: This meshing class only mesh geometry with straight lines. It may be twisted, but cant be curved //This is the meshing component for CASE 1. // ---variables-- - Brep brp = new Brep(); List <Point3d> cornersList = new List <Point3d>(); int u = 1; int v = 1; int w = 1; double removeVolume = 0; // --- input --- if (!DA.GetData(0, ref brp)) { return; } if (!DA.GetDataList(1, cornersList)) { return; } if (!DA.GetData(2, ref u)) { return; } if (!DA.GetData(3, ref v)) { return; } if (!DA.GetData(4, ref w)) { return; } if (!DA.GetData(5, ref removeVolume)) { return; } // --- solve --- if (u < 1 || v < 1 || w < 1) //None of the sides can be divided in less than one part { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "One of the input parameters is less than one."); return; } //Getting vertices for brep Point3d[] cornerPoints = brp.DuplicateVertices(); cornerPoints = RoundPoints(cornerPoints); //Round off to remove inaccuries List <Point3d> corners = RoundPointsList(cornersList); var tuple = CreateMesh(cornerPoints, u, v, w); List <List <Point3d> > elementPoints = tuple.Item1; List <List <int> > connectivity = tuple.Item2; List <List <Line> > edgeMesh = tuple.Item3; List <List <Brep> > surfacesMesh = tuple.Item4; List <Node> nodes = tuple.Item5; List <Element> elements = tuple.Item6; List <Point3d> globalPoints = tuple.Item7; int sizeOfMatrix = 3 * (u + 1) * (v + 1) * (w + 1); //Setting values for Mesh class MeshGeometry mesh = new MeshGeometry(u, v, w); mesh.SetConnectivity(connectivity); mesh.SetElementPoints(elementPoints); mesh.SetEdgesMesh(edgeMesh); mesh.SetSurfacesMesh(surfacesMesh); mesh.SetSizeOfMatrix(sizeOfMatrix); mesh.SetGlobalPoints(globalPoints); mesh.SetNodeList(nodes); mesh.SetElements(elements); mesh.SetOrigBrep(brp); mesh.SetBrep(new BrepGeometry(brp)); mesh.OrderSurfaces(corners); mesh.SetOptVolume(removeVolume); //---output--- DA.SetData(0, mesh); }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- MeshGeometry mesh = new MeshGeometry(); GH_Structure <GH_Number> treeStress = new GH_Structure <GH_Number>(); int dir = new int(); double scale = new double(); //---input--- if (!DA.GetData(0, ref mesh)) { return; } if (!DA.GetDataTree(1, out treeStress)) { return; } if (!DA.GetData(2, ref dir)) { return; } if (!DA.GetData(3, ref scale)) { return; } //---setup--- BrepGeometry brp = mesh.GetBrep(); Brep brep = brp.GetBrep(); Point3d centroid = brp.GetCentroid(); double refLength = brp.GetRefLength(); Point3d center = Point3d.Add(centroid, new Point3d(0, -refLength * 6.5, 0)); double angle = 90 * Math.PI / 180; //---solve--- List <Element> elements = mesh.GetElements(); List <Node> nodes = mesh.GetNodeList(); List <Brep> breps = CreateDefBreps(elements, scale, angle, center); //Getting colors for each brep (List <Color> brepColors, List <string> rangeValues) = ColorBreps(elements, breps, dir); //Creating breps stress legend List <Brep> brepRanges = CreateBrepRanges(centroid, refLength, center, angle); //Getting colors stress legend List <Color> colorRange = CreateColorRange(); //Output brep colors legend (List <Plane> planeRanges, double textSize) = CreateTextPlanes(brepRanges, refLength); List <double> textSizeRange = Enumerable.Repeat(textSize, rangeValues.Count).ToList(); //Output text legend size List <Color> textColorRange = Enumerable.Repeat(Color.White, rangeValues.Count).ToList(); // Output text color legend //Createing headline for area var tuple3 = CreateHeadline(centroid, angle, center, refLength); string headText = tuple3.Item1; double headSize = tuple3.Item2; Plane headPlane = tuple3.Item3; Color headColor = tuple3.Item4; //Adding the different text components together to one output. rangeValues.Add(headText); List <string> text = rangeValues; textSizeRange.Add(headSize); List <double> textSizes = textSizeRange; planeRanges.Add(headPlane); List <Plane> textPlanes = planeRanges; textColorRange.Add(headColor); List <Color> textColors = textColorRange; //---output--- DA.SetDataList(0, breps); DA.SetDataList(1, brepColors); DA.SetDataList(2, brepRanges); DA.SetDataList(3, colorRange); DA.SetDataList(4, text); DA.SetDataList(5, textSizes); DA.SetDataList(6, textPlanes); DA.SetDataList(7, textColors); }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- List <Brep> spheres = new List <Brep>(); Vector3d def = new Vector3d(0, 0, 0); MeshGeometry mesh = new MeshGeometry(); List <string> pointsString = new List <string>(); //---input--- if (!DA.GetDataList(0, spheres)) { return; } if (!DA.GetData(1, ref def)) { return; } if (!DA.GetData(2, ref mesh)) { return; } //---setup--- //Setting up values for reflength and angle for rotation of area Brep origBrep = mesh.GetOrigBrep(); VolumeMassProperties vmp = VolumeMassProperties.Compute(origBrep); double volume = origBrep.GetVolume(); double sqrt3 = (double)1 / 3; double refLength = Math.Pow(volume, sqrt3); //---solve--- List <Point3d> points = new List <Point3d>(); string text = ""; List <Plane> planeSphere = new List <Plane>(); for (int i = 0; i < spheres.Count; i++) { Brep sphere = spheres[i]; //List of global points with correct numbering List <Point3d> globalPoints = mesh.GetGlobalPoints(); VolumeMassProperties vmpSphere = VolumeMassProperties.Compute(sphere); Point3d centroidSphere = vmpSphere.Centroid; points.Add(FindClosestPoint(globalPoints, centroidSphere, refLength)); text = "Drag sphere to point"; planeSphere.Add(FindSpherePlane(centroidSphere, refLength)); } string pointString; foreach (Point3d p in points) { pointString = p.X.ToString() + "," + p.Y.ToString() + "," + p.Z.ToString(); pointsString.Add(pointString); } List <string> pointDef = new List <string>(); foreach (string s in pointsString) { pointDef.Add(s + ";" + def.ToString()); } double size = (double)refLength / 7; Color color = Color.Orange; //---output--- DA.SetDataList(0, pointDef); DA.SetData(1, text); DA.SetData(2, size); DA.SetDataList(3, planeSphere); DA.SetData(4, color); }
protected override void SolveInstance(IGH_DataAccess DA) { { //NOTE: This meshing class can mesh any type of geometry as long as it consist of 8 corners and no holes. //This is the meshing component for CASE 3. // ---variables-- - Brep brp = new Brep(); List <Point3d> corners = new List <Point3d>(); int u = 1; int v = 1; int w = 1; double removeVolume = 0; // --- input --- if (!DA.GetData(0, ref brp)) { return; } if (!DA.GetDataList(1, corners)) { return; } if (!DA.GetData(2, ref u)) { return; } if (!DA.GetData(3, ref v)) { return; } if (!DA.GetData(4, ref w)) { return; } if (!DA.GetData(5, ref removeVolume)) { return; } Curve[] edges = brp.DuplicateEdgeCurves(); Curve[] sortedEdges = SortEdges(corners, edges); Surface[] surfaces = CreateSortedSurfaces(brp, edges, corners); var tuple = CreateMesh(brp, u, v, w, sortedEdges, surfaces); List <List <Point3d> > elementPoints = tuple.Item1; List <List <int> > connectivity = tuple.Item2; List <List <Line> > edgeMesh = tuple.Item3; List <List <Brep> > surfacesMesh = tuple.Item4; List <Node> nodes = tuple.Item5; List <Element> elements = tuple.Item6; List <Point3d> globalPoints = tuple.Item7; int sizeOfMatrix = 3 * (u + 1) * (v + 1) * (w + 1); //Setting values for Mesh class MeshGeometry mesh = new MeshGeometry(u, v, w); mesh.SetConnectivity(connectivity); mesh.SetElementPoints(elementPoints); mesh.SetEdgesMesh(edgeMesh); mesh.SetSurfacesMesh(surfacesMesh); mesh.SetSizeOfMatrix(sizeOfMatrix); mesh.SetGlobalPoints(globalPoints); mesh.SetNodeList(nodes); mesh.SetElements(elements); mesh.SetOrigBrep(brp); mesh.SetBrep(new BrepGeometry(brp)); mesh.OrderSurfaces(corners); mesh.SetOptVolume(removeVolume); //---output--- DA.SetData(0, mesh); } }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- Brep sphere = new Brep(); MeshGeometry mesh = new MeshGeometry(); //---input--- if (!DA.GetData(0, ref sphere)) { return; } if (!DA.GetData(1, ref mesh)) { return; } //---setup--- //Setting up values for reflength and angle for rotation of area Brep origBrep = mesh.GetOrigBrep(); VolumeMassProperties vmp = VolumeMassProperties.Compute(origBrep); Point3d centroid = vmp.Centroid; double volume = origBrep.GetVolume(); double sqrt3 = (double)1 / 3; double refLength = Math.Pow(volume, sqrt3); //---solve--- //List of global points with correct numbering List <Point3d> globalPoints = mesh.GetGlobalPoints(); VolumeMassProperties vmpSphere = VolumeMassProperties.Compute(sphere); Point3d centroidSphere = vmpSphere.Centroid; Point3d point = FindClosestPoint(globalPoints, centroidSphere, refLength); String textSphere = "Drag sphere to point"; Plane textPlaneSphere = FindSpherePlane(centroidSphere, refLength); List <Node> nodeList = mesh.GetNodeList(); Node chosenNode = FindNode(nodeList, point); List <string> text = new List <string>(); if (chosenNode == null) { text.Add("No node is chosen"); } else { text = CreateText(chosenNode); } List <Plane> textPlane = CreateTextPlane(centroid, refLength, text); List <Color> colors = new List <Color>(); colors.Add(Color.Orange); colors.Add(Color.Orange); colors.Add(Color.White); double size = (double)refLength / 7; //---output--- DA.SetDataList(0, text); DA.SetData(1, size); DA.SetDataList(2, textPlane); DA.SetDataList(3, colors); DA.SetData(4, textSphere); DA.SetData(5, size); DA.SetData(6, textPlaneSphere); }
protected override void SolveInstance(IGH_DataAccess DA) { //---variables--- MeshGeometry mesh = new MeshGeometry(); GH_Structure <GH_Number> treeDef = new GH_Structure <GH_Number>(); double scale = 1; //---input--- if (!DA.GetData(0, ref mesh)) { return; } if (!DA.GetDataTree(1, out treeDef)) { return; } if (!DA.GetData(2, ref scale)) { return; } //---setup--- List <Brep> breps = new List <Brep>(); BrepGeometry brp = mesh.GetBrep(); Brep brep = brp.GetBrep(); Point3d centroid = brp.GetCentroid(); double refLength = brp.GetRefLength(); double refSize = (double)(refLength / 10); double angle = 270 * Math.PI / 180; Point3d center = Point3d.Add(centroid, new Point3d(0, -refLength * 6.5, 0)); //Center for viewpoint //---solve--- List <Element> elements = mesh.GetElements(); List <Node> nodes = mesh.GetNodeList(); breps = CreateDefBreps(elements, scale, angle, center); //Finding point with max deformation (double defMax, Node nodeMax) = GetMaxDeformation(nodes); Brep sphere = DrawSphere(nodeMax, angle, center, scale, refSize); Color colorSphere = Color.Orange; VolumeMassProperties vmpt = VolumeMassProperties.Compute(sphere); Point3d centroidt = vmpt.Centroid; //Creating text for displaying it for max value var tuple2 = CreateText(defMax, nodeMax, scale, refSize, angle, center); string textDef = tuple2.Item1; double textDefSize = tuple2.Item2; Plane textDefPlane = tuple2.Item3; Color textDefColor = tuple2.Item4; //Createing headline for area var tuple3 = CreateHeadline(centroid, angle, center, refLength); string headText = tuple3.Item1; double headSize = tuple3.Item2; Plane headPlane = tuple3.Item3; Color headColor = tuple3.Item4; //Adding geometry together for output List <Color> brepColors = AssignColors(breps); breps.Add(sphere); List <Brep> geoBreps = breps; brepColors.Add(colorSphere); List <Color> geoColor = brepColors; Curve[] lines = DrawOuterCurves(brep, angle, center); Color linesColor = Color.White; //Adding the different text components together to one output. List <string> text = new List <String> { textDef, headText, }; List <double> textSizes = new List <double> { textDefSize, headSize, }; List <Plane> textPlanes = new List <Plane> { textDefPlane, headPlane, }; List <Color> textColors = new List <Color> { textDefColor, headColor, }; //---output--- //Geometry DA.SetDataList(0, geoBreps); DA.SetDataList(1, geoColor); DA.SetDataList(2, lines); DA.SetData(3, linesColor); DA.SetDataList(4, text); DA.SetDataList(5, textSizes); DA.SetDataList(6, textPlanes); DA.SetDataList(7, textColors); }