0029301: Improve performance of Boolean Operations
authoremv <emv@opencascade.com>
Wed, 8 Nov 2017 06:16:35 +0000 (09:16 +0300)
committerbugmaster <bugmaster@opencascade.com>
Tue, 14 Nov 2017 12:57:00 +0000 (15:57 +0300)
commit86218548533c19fc289cd5d3dee94092cce3c17e
tree87590699f9d5b64c5544020f2d79a737d765b652
parentb39485d9e3cdacddaae740c3f03883b02a4e2acf
0029301: Improve performance of Boolean Operations

Improve performance of Boolean operations algorithm by:
- Improving the check of Same Domain faces (BOPAlgo_Builder::FillSameDomainFaces());
- Faster rejection of outer faces for solids using Bounding Box classification first (BOPAlgo_Builder::FillIn3DParts());
- Using IncAllocator for local containers.

Quality improvement has been made in BOPAlgo_PaveFiller class:
1. Method IsExistingPaveBlock() has been corrected to provide the correct edge tolerance and to obtain valid intermediate results in the test case "boolean gdml_private ZH3".
   New test case have been added to verify this improvement (bugs modalg_7 bug29301).
2. Method PutClosingPaveOnCurve() has been corrected to use the tolerance of the pave put on the bound for checking curve on closeness.
   Additional check for the curve to have valid range after addition of the pave on the other end has been added to prevent considering the small curves (covered by vertex tolerance) as closed ones.
   As a result of this modification the test case boolean gdml_public B2 has been fixed (TODO removed).

Adjustment of the test cases to current behavior:
- boolean bopcommon_complex J1 - the produced result was incorrect as it was self-interfered. There should be no common in this case.
- offset shape_type_i_c ZZ1 - the incorrect result is now produced instead of null shape.
src/BOPAlgo/BOPAlgo_Builder_2.cxx
src/BOPAlgo/BOPAlgo_Builder_3.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx
tests/boolean/bopcommon_complex/J1
tests/boolean/gdml_public/B2
tests/bugs/modalg_7/bug29301 [new file with mode: 0644]
tests/offset/shape_type_i_c/ZZ1