Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }