]> OCCT Git - occt-copy.git/commit
0029322: Unify faces classification procedures in Boolean Operations
authoremv <emv@opencascade.com>
Mon, 13 Nov 2017 08:11:27 +0000 (11:11 +0300)
committeremv <emv@opencascade.com>
Wed, 22 Nov 2017 11:17:45 +0000 (14:17 +0300)
commit15da20700bf8bbc3bfc8e03686b680c2a71d5b54
tree4b634b936598222db4bd03274cb6f568715d175b
parent1ced3e2ccf8719a04184141428458bcd8882c4f1
0029322: Unify faces classification procedures in Boolean Operations

1. Unify the faces classification procedure of the methods BOPAlgo_BuilderSolid::PerformInternalShapes() and BOPAlgo_Builder::FillIn3DParts() using the latter as a base.
The new method BOPAlgo_Tools::ClassifyFaces() has been created for that. Both methods mentioned above have been updated to use the new one.

2. Forced intersection of the edges after enlarge of the tolerance values of their vertices during the operation has been added into BOP's intersection algorithm (BOPAlgo_PaveFiller).
BOPAlgo_Tools::PerformCommonBlocks() method has been updated to avoid loosing faces of the already created Common blocks.

As a result the case "boolean gdml_private ZF6" became more stable, because the intermediate result is no longer invalid.
Additional test cases have been added to verify this improvement (bugs modalg_7 bug29322_*)

3. When building PCurves for edges on faces, check the existing PCurves on its validity for periodic surfaces and adjust PCurves if necessary.
The improvement helps to produce the valid result in the test case "bugs moddata_1 bug152".

4. Avoid creation of empty Edge-Edge interference if the intersection point is lying close to a shared vertex.
The improvement helps obtain the valid result of the "bopcheck" operation in the test case "bugs modalg_7 bug27683".

Adjustment of the test case to current behavior:
- Avoid usage of the self-intersecting torus in the test case "boolean gdml_public A9".
- Fix the input shape in the test case "boolean bopfuse_complex H1" to provide valid result.
- Test cases "bugs moddata_1 bug152_1 bug152_2" have been unified into single test case "bugs moddata_1 bug152". Now, the case rebuilds invalid input data and performs all types of Boolean operations.
- Change the test case "bugs modalg_7 bug22750" to produce valid intermediate results used in subsequent operations as arguments.
- The following test cases are improvements:
- "boolean volumemaker D8"
- "boolean volumemaker G1"
- "bugs modalg_7 bug27683"
29 files changed:
src/BOPAlgo/BOPAlgo_BuilderSolid.cxx
src/BOPAlgo/BOPAlgo_BuilderSolid.hxx
src/BOPAlgo/BOPAlgo_Builder_2.cxx
src/BOPAlgo/BOPAlgo_Builder_3.cxx
src/BOPAlgo/BOPAlgo_PaveFiller.cxx
src/BOPAlgo/BOPAlgo_PaveFiller.hxx
src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx
src/BOPAlgo/BOPAlgo_Tools.cxx
src/BOPAlgo/BOPAlgo_Tools.hxx
src/BOPCol/BOPCol_DataMapOfShapeBox.hxx [new file with mode: 0644]
src/BOPCol/FILES
src/BOPDS/BOPDS_DS.cxx
src/BOPTools/BOPTools_AlgoTools3D.cxx
tests/boolean/bfuse_complex/O6
tests/boolean/bopfuse_complex/H1
tests/boolean/gdml_public/A9
tests/boolean/volumemaker/D8
tests/boolean/volumemaker/G1
tests/bugs/modalg_7/bug22750
tests/bugs/modalg_7/bug27683
tests/bugs/modalg_7/bug29322_1 [new file with mode: 0644]
tests/bugs/modalg_7/bug29322_2 [new file with mode: 0644]
tests/bugs/modalg_7/bug29322_3 [new file with mode: 0644]
tests/bugs/modalg_7/bug29322_4 [new file with mode: 0644]
tests/bugs/modalg_7/bug29322_5 [new file with mode: 0644]
tests/bugs/moddata_1/bug152 [new file with mode: 0644]
tests/bugs/moddata_1/bug152_1 [deleted file]
tests/bugs/moddata_1/bug152_2 [deleted file]