occt: master 51db0179

Author Committer Branch Timestamp Parent
emv apn master 2016-11-30 10:29:37 master 483ce1bd
Changeset 0028165: Improve performance of Boolean Operations

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.
mod - src/BOPAlgo/BOPAlgo_BuilderFace.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_Builder_2.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller.hxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller_10.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_WireSplitter.cxx Diff File
mod - src/BOPAlgo/BOPAlgo_WireSplitter.hxx Diff File
mod - src/BOPAlgo/BOPAlgo_WireSplitter_1.cxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools.cxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools.hxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools2D.cxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools2D.hxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools3D.cxx Diff File
mod - src/BOPTools/BOPTools_AlgoTools3D.hxx Diff File
mod - src/BRepFeat/BRepFeat_Builder.cxx Diff File
mod - src/BRepOffset/BRepOffset_Tool.cxx Diff File
mod - src/IntTools/IntTools_BeanFaceIntersector.cxx Diff File
mod - src/IntTools/IntTools_Context.cxx Diff File
mod - src/IntTools/IntTools_Context.hxx Diff File
mod - src/IntTools/IntTools_EdgeFace.cxx Diff File
mod - src/IntTools/IntTools_EdgeFace.hxx Diff File
mod - src/IntTools/IntTools_FaceFace.cxx Diff File
mod - src/QANewModTopOpe/QANewModTopOpe_Tools.cxx Diff File
add - tests/bugs/modalg_6/bug28165_1 Diff File
add - tests/bugs/modalg_6/bug28165_2 Diff File
add - tests/bugs/modalg_6/bug28165_3 Diff File
add - tests/bugs/modalg_6/bug28165_4 Diff File