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