void fill_any_holes(out int nRemaining, out bool saw_spans) { MeshBoundaryLoops loops = new MeshBoundaryLoops(Mesh); nRemaining = 0; saw_spans = loops.SawOpenSpans; foreach (var loop in loops) { if (Cancelled()) { break; } MinimalHoleFill filler = new MinimalHoleFill(Mesh, loop); bool filled = filler.Apply(); if (filled == false) { if (Cancelled()) { break; } SimpleHoleFiller fallback = new SimpleHoleFiller(Mesh, loop); filled = fallback.Fill(); } } }
bool fill_minimal() { var minfill = new MinimalHoleFill(Mesh, FillLoop); bool bOK = minfill.Apply(); return(bOK); }
public AddTrianglesMeshChange fill_minimal(DMesh3 mesh, EdgeLoop loop) { AddTrianglesMeshChange addChange = null; MinimalHoleFill filler = new MinimalHoleFill(mesh, loop); filler.IgnoreBoundaryTriangles = false; filler.OptimizeDevelopability = true; filler.OptimizeTriangles = this.OptimizeTriangles; filler.DevelopabilityTolerance = this.OptimizeTrisDeviationThresh; bool fill_ok = filler.Apply(); if (fill_ok) { addChange = new AddTrianglesMeshChange(); addChange.InitializeFromExisting(mesh, filler.FillVertices, filler.FillTriangles); } return(addChange); }
void fill_trivial_holes(out int nRemaining, out bool saw_spans) { var loops = new MeshBoundaryLoops(Mesh); nRemaining = 0; saw_spans = loops.SawOpenSpans; foreach (var loop in loops) { if (Cancelled()) { break; } bool filled = false; if (loop.VertexCount == 3) { var filler = new SimpleHoleFiller(Mesh, loop); filled = filler.Fill(); } else if (loop.VertexCount == 4) { var filler = new MinimalHoleFill(Mesh, loop); filled = filler.Apply(); if (filled == false) { var fallback = new SimpleHoleFiller(Mesh, loop); filled = fallback.Fill(); } } if (filled == false) { ++nRemaining; } } }