]> 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)
committeremv <emv@opencascade.com>
Tue, 14 Nov 2017 10:23:00 +0000 (13:23 +0300)
commite2785edd92648306fb5821da3e5b60cce14e0bed
treed38a8875d22df9fe2690c97fd782d5c46ffa5b4e
parent333fa3e9bd185ca3e117812dbb70f8144a9b37a3
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