Exemplo n.º 1
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.º 2
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.º 3
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.º 4
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.º 5
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.º 6
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);
        }