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