• emv's avatar
    0028165: Improve performance of Boolean Operations · 51db0179
    emv authored
    1. Unification of the usage of the BRepAdaptor_Surface in Boolean Operations algorithm.
    For each face when it is necessary the Adaptor is initialized only once and stored in Context.
    
    For that purpose the new IntTools_Context::SurfaceAdaptor(const TopoDS_Face&) method has been implemented.
    
    To provide possibility to take the Adaptor from the context, the context has been added as
    a parameter in following methods:
    BOPTools_AlgoTools::MakePCurve()
    BOPTools_AlgoTools::Sence()
    BOPTools_AlgoTools2D::BuildPCurveForEdgeOnFace()
    BOPTools_AlgoTools2D::PointOnSurface
    BOPTools_AlgoTools2D::CurveOnSurface
    BOPTools_AlgoTools2D::AdjustPCurveOnFace
    BOPTools_AlgoTools2D::Make2D
    BOPTools_AlgoTools2D::MakePCurveOnFace
    BOPTools_AlgoTools3D::GetNormalToFaceOnEdge
    
    It is also possible now to pass the context into BOPAlgo_WireSplitter algorithm.
    
    Also, the new IntTools_Context::UVBounds(const TopoDS_Face&) method
    has been implemented to get the UV bounds of a face.
    
    2. Additional improvement is a calculation of reduced intersection range only for the intersection
    type VERTEX during computation of Edge/Face interference.
    
    3. The methods IntTools_EdgeFace::Prepare() and IntTools_EdgeFace::FindProjectableRoot()
    and the fields IntTools_EdgeFace::myProjectableRanges and IntTools_EdgeFace::myFClass2d
    have been removed as obsolete.
    
    4. Test cases for the issue.
    51db0179
BOPAlgo_PaveFiller.hxx 18 KB