0028284: Avoid classification of sub-shapes of arguments of BOPs relatively solids...
authoremv <emv@opencascade.com>
Mon, 9 Jan 2017 06:50:03 +0000 (09:50 +0300)
committerapn <apn@opencascade.com>
Thu, 26 Jan 2017 10:39:02 +0000 (13:39 +0300)
commit25dfc507be555a1684f109d0b7f8e365952fb039
treea3671889ac70bdc1754a4fb0beeb0bfdc30949e4
parentf542b7bbf1f3bc0b36b33c158580fb1909561a08
0028284: Avoid classification of sub-shapes of arguments of BOPs relatively solids during Intersection phase

1. The methods PerformVZ, PerformEZ, PerformFZ and PerformZZ have been transferred from BOPAlgo_PaveFiller to BOPAlgo_CheckerSI class
to perform intersection of sub-shapes with solids only in self-intersection mode.

2. The checks for solids built from the same (shared) faces have been added into methods building the result of Boolean operations -
BOPAlgo_BOP::BuildRC() and BOPAlgo_BOP::BuildSolid().

3. Since the NonDestructive mode is now natively supported by the BOPAlgo_PaveFiller the methods providing the support of this mode by CheckerSI
(BOPAlgo_CheckerSI::PrepareCopy() and BOPAlgo_CheckerSI::PostTreatCopy()) are not needed and have been removed.

4. The pairs of sub-shapes with interfering bounding boxes are now sorted before real intersection to guarantee the constant order of
intersection of sub-shapes and produce more stable result. The class BOPDS_PassKey has been replaced with simpler class BOPDS_Pair.

5. The class BOPDS_SubIterator has been refactored.

6. Test cases for the issue.

7. Adjustment of the test case boolean volumemaker D2.
40 files changed:
dox/dev_guides/upgrade/upgrade.md
src/BOPAlgo/BOPAlgo_ArgumentAnalyzer.cxx
src/BOPAlgo/BOPAlgo_BOP.cxx
src/BOPAlgo/BOPAlgo_CheckerSI.cxx
src/BOPAlgo/BOPAlgo_CheckerSI.hxx
src/BOPAlgo/BOPAlgo_CheckerSI_1.cxx [new file with mode: 0644]
src/BOPAlgo/BOPAlgo_PaveFiller.cxx
src/BOPAlgo/BOPAlgo_PaveFiller.hxx
src/BOPAlgo/BOPAlgo_PaveFiller_1.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_10.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_11.cxx [deleted file]
src/BOPAlgo/BOPAlgo_PaveFiller_2.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_3.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_4.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_5.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_6.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx
src/BOPAlgo/BOPAlgo_PaveFiller_9.cxx
src/BOPAlgo/FILES
src/BOPDS/BOPDS_DS.cxx
src/BOPDS/BOPDS_DS.hxx
src/BOPDS/BOPDS_DS.lxx
src/BOPDS/BOPDS_Iterator.cxx
src/BOPDS/BOPDS_Iterator.hxx
src/BOPDS/BOPDS_IteratorSI.cxx
src/BOPDS/BOPDS_MapOfPair.hxx [new file with mode: 0644]
src/BOPDS/BOPDS_Pair.hxx [new file with mode: 0644]
src/BOPDS/BOPDS_PairMapHasher.hxx [new file with mode: 0644]
src/BOPDS/BOPDS_SubIterator.cxx
src/BOPDS/BOPDS_SubIterator.hxx
src/BOPDS/BOPDS_VectorOfPair.hxx [new file with mode: 0644]
src/BOPDS/BOPDS_VectorOfVectorOfPair.hxx [new file with mode: 0644]
src/BOPDS/FILES
src/BOPTest/BOPTest_CheckCommands.cxx
src/BOPTest/BOPTest_DebugCommands.cxx
tests/boolean/volumemaker/D2
tests/bugs/modalg_1/bug10232
tests/bugs/modalg_6/bug28284_1 [new file with mode: 0644]
tests/bugs/modalg_6/bug28284_2 [new file with mode: 0644]
tests/bugs/modalg_6/bug28284_3 [new file with mode: 0644]