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--- 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--- 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); }