/// <summary> /// This is the method that actually does the work. /// </summary> /// <param name="DA">The DA object can be used to retrieve data from input parameters and /// to store data in output parameters.</param> protected override void SolveInstance(IGH_DataAccess DA) { IntPtr topoData = IntPtr.Zero; bool preview_mode = false; if (!DA.GetData(0, ref topoData)) { return; } if (!DA.GetData(1, ref preview_mode)) { return; } int n_part = TopoCreator.partNumber(topoData); if (preview_mode) { TopoCreator.preview(topoData); } else { TopoCreator.refresh(topoData); } List <Mesh> parts = new List <Mesh>(); List <Mesh> boundary = new List <Mesh>(); for (int partID = 0; partID < n_part; partID++) { Rhino.Geometry.Mesh mesh = new Rhino.Geometry.Mesh(); TopoCreator.getPartMesh(partID, mesh, topoData); if (TopoCreator.isBoundary(partID, topoData) == 1) { boundary.Add(mesh); } else { parts.Add(mesh); } } DA.SetDataList(0, parts); DA.SetDataList(1, boundary); }