]> OCCT Git - occt-copy.git/commit
0029301: Improve performance of Boolean Operations
authoremv <emv@opencascade.com>
Wed, 8 Nov 2017 06:16:35 +0000 (09:16 +0300)
committerrnv <rnv@opencascade.com>
Tue, 6 Mar 2018 15:19:43 +0000 (18:19 +0300)
commit813cfec9099bda8be02517ca1ab4be1cc2966a2b
tree6aa3e21b67d7feced593dfb3d3e341d71719b243
parentb1e5dc83e0191fcd302c4254be9ad41cfdc13e09
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