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