public static IEnumerable <int> GroupBoundaryEdges(DMesh3 mesh) { int N = mesh.MaxEdgeID; for (int i = 0; i < N; ++i) { if (mesh.IsEdge(i)) { if (mesh.IsGroupBoundaryEdge(i)) { yield return(i); } } } }
// for all mesh boundary edges, disable flip/split/collapse // for all mesh boundary vertices, pin in current position public static void FixAllGroupBoundaryEdges(MeshConstraints cons, DMesh3 mesh, bool bPinVertices) { int NE = mesh.MaxEdgeID; for (int ei = 0; ei < NE; ++ei) { if (mesh.IsEdge(ei) && mesh.IsGroupBoundaryEdge(ei)) { cons.SetOrUpdateEdgeConstraint(ei, EdgeConstraint.FullyConstrained); if (bPinVertices) { Index2i ev = mesh.GetEdgeV(ei); cons.SetOrUpdateVertexConstraint(ev.a, VertexConstraint.Pinned); cons.SetOrUpdateVertexConstraint(ev.b, VertexConstraint.Pinned); } } } }