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