Search Results for

    Show / Hide Table of Contents

    Class PlanarHoleFiller

    Try to fill planar holes in a mesh. The fill is computed by mapping the hole boundary into 2D, filling using 2D algorithms, and then mapping back to 3D. This allows us to properly handle cases like nested holes (eg from slicing a torus in half).

    PlanarComplex is used to sort the input 2D polyons.

    MeshInsertUVPolyCurve is used to insert each 2D polygon into a generated planar mesh. The resolution of the generated mesh is controlled by .FillTargetEdgeLen

    In theory this approach can handle more geometric degeneracies than Delaunay triangluation. However, the current code requires that MeshInsertUVPolyCurve produce output boundary loops that have a 1-1 correspondence with the input polygons. This is not always possible.

    Currently these failure cases are not handled properly. In that case the loops will not be stitched.

    Inheritance
    Object
    PlanarHoleFiller
    Inherited Members
    Object.ToString()
    Object.Equals(Object)
    Object.Equals(Object, Object)
    Object.ReferenceEquals(Object, Object)
    Object.GetHashCode()
    Object.GetType()
    Object.MemberwiseClone()
    Namespace: g3
    Assembly: cs.temp.dll.dll
    Syntax
    public class PlanarHoleFiller

    Constructors

    PlanarHoleFiller(DMesh3)

    Declaration
    public PlanarHoleFiller(DMesh3 mesh)
    Parameters
    Type Name Description
    DMesh3 mesh

    PlanarHoleFiller(MeshPlaneCut)

    Declaration
    public PlanarHoleFiller(MeshPlaneCut cut)
    Parameters
    Type Name Description
    MeshPlaneCut cut

    Fields

    FailedInsertions

    Declaration
    public int FailedInsertions
    Field Value
    Type Description
    Int32

    FailedMerges

    Declaration
    public int FailedMerges
    Field Value
    Type Description
    Int32

    FillTargetEdgeLen

    fill mesh will be tessellated to this length, set to double.MaxValue to use zero-length tessellation

    Declaration
    public double FillTargetEdgeLen
    Field Value
    Type Description
    Double

    MergeFillBoundary

    in some cases fill can succeed but we can't merge w/o creating holes. In such cases it might be better to not merge at all...

    Declaration
    public bool MergeFillBoundary
    Field Value
    Type Description
    Boolean

    Mesh

    Declaration
    public DMesh3 Mesh
    Field Value
    Type Description
    DMesh3

    OutputHasCracks

    Declaration
    public bool OutputHasCracks
    Field Value
    Type Description
    Boolean

    PlaneNormal

    Declaration
    public Vector3d PlaneNormal
    Field Value
    Type Description
    Vector3d

    PlaneOrigin

    Declaration
    public Vector3d PlaneOrigin
    Field Value
    Type Description
    Vector3d

    Methods

    AddFillLoop(EdgeLoop)

    Declaration
    public void AddFillLoop(EdgeLoop loop)
    Parameters
    Type Name Description
    EdgeLoop loop

    AddFillLoops(IEnumerable<EdgeLoop>)

    Declaration
    public void AddFillLoops(IEnumerable<EdgeLoop> loops)
    Parameters
    Type Name Description
    IEnumerable<EdgeLoop> loops

    Fill()

    Compute the fill mesh and append it. This returns false if anything went wrong. The Error Feedback properties (.OutputHasCracks, etc) will provide more info.

    Declaration
    public bool Fill()
    Returns
    Type Description
    Boolean

    SetPlane(Vector3d, Vector3d)

    Declaration
    public void SetPlane(Vector3d origin, Vector3d normal)
    Parameters
    Type Name Description
    Vector3d origin
    Vector3d normal

    SetPlane(Vector3d, Vector3d, Vector3d, Vector3d)

    Declaration
    public void SetPlane(Vector3d origin, Vector3d normal, Vector3d planeX, Vector3d planeY)
    Parameters
    Type Name Description
    Vector3d origin
    Vector3d normal
    Vector3d planeX
    Vector3d planeY
    In This Article
    Back to top ViRGIS VR GIS