// https://developer.rhino3d.com/guides/cpp/brep-data-structure/ private Topology ByBrep(Brep ghBrep, double tolerance) { BrepFaceList ghBrepFaces = ghBrep.Faces; List <Face> faces = new List <Face>(); foreach (BrepFace ghBrepFace in ghBrepFaces) { Face face = ByBrepFace(ghBrepFace); faces.Add(face); } if (faces.Count == 0) { return(null); } else if (faces.Count == 1) { return(faces[0]); } else { Shell shell = Shell.ByFaces(faces, tolerance); if (ghBrep.IsSolid) { Cell cell = Cell.ByShell(shell); return(cell); } return(shell); } }