static public void Seal(this MeshBuilder item, Plane plane, float edge_tolerance, float plane_tolerance) { FaceCloud faces = new FaceCloud(edge_tolerance); PlaneSpace plane_space = plane.GetPlaneSpace(); foreach (LineSegment3 edge in item.GetTriangles().Convert(t => t.GetEdges()).Flatten().Unique()) { if (plane.IsCoplanar(edge, plane_tolerance)) { faces.AddFace(plane_space.ProjectLineSegment(edge).GetFace()); } } item.AddTriangles( plane_space.InflateTriangles(faces.Tesselate()) .Convert(t => t.GetReversedWinding()) ); }
static public void AddFaces(this FaceCloud item, IEnumerable <Face> faces) { faces.Process(f => item.AddFace(f)); }