Exemplo 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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
0
        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);
            }
        }
Exemplo n.º 10
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);
        }
Exemplo n.º 11
0
        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);
        }