0029683: Add functionality to make the TopoDS_Shape periodic in 3D space
authoremv <emv@opencascade.com>
Mon, 19 Mar 2018 04:50:06 +0000 (07:50 +0300)
committerapn <apn@opencascade.com>
Fri, 7 Dec 2018 15:49:44 +0000 (18:49 +0300)
commit53a73fc1d14a589bafb85881fe970b370246e0b3
tree0720a5625905141cbfdbdd956bf3f83b6287a09c
parente9c073b86655e8c3e9e6a9ad10b52710af374496
0029683: Add functionality to make the TopoDS_Shape periodic in 3D space

Implementation of the new class *BOPAlgo_MakePeriodic* for making the shape periodic in 3D space.
Periodicity of the shape means that the shape can be repeated in any periodic direction any number of times without creation of the new geometry or splits.
The idea of this algorithm is to make the shape look similarly on the opposite sides or on the period bounds of periodic directions.
It does not mean that the opposite sides of the shape will be mirrored. It just means the the opposite sides of the shape should be split by each other and obtain the same geometry on opposite sides.
Such approach will allow repeating the shape, i.e. translating the copy of a shape on the period, without creation of new geometry because there will be no coinciding parts of different dimension.

Draw commands for the new algorithm:
* makeperiodic - makes the shape periodic in required directions;
* repeatshape - repeats the periodic shape in requested periodic direction;
* periodictwins - returns the periodic twins for the shape;
* clearrepetitions - clears all previous repetitions of the periodic shape.

Documentation & test cases for the algorithm.
31 files changed:
dox/user_guides/draw_test_harness/draw_test_harness.md
dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im001.png [new file with mode: 0644]
dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im002.png [new file with mode: 0644]
dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im003.png [new file with mode: 0644]
dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im004.png [new file with mode: 0644]
dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im005.png [new file with mode: 0644]
dox/user_guides/modeling_algos/images/modeling_algos_mkperiodic_im006.png [new file with mode: 0644]
dox/user_guides/modeling_algos/modeling_algos.md
src/BOPAlgo/BOPAlgo.msg
src/BOPAlgo/BOPAlgo_Alerts.hxx
src/BOPAlgo/BOPAlgo_BOPAlgo_msg.pxx
src/BOPAlgo/BOPAlgo_Builder_1.cxx
src/BOPAlgo/BOPAlgo_MakePeriodic.cxx [new file with mode: 0644]
src/BOPAlgo/BOPAlgo_MakePeriodic.hxx [new file with mode: 0644]
src/BOPAlgo/BOPAlgo_PaveFiller.cxx
src/BOPAlgo/BOPAlgo_PaveFiller.hxx
src/BOPAlgo/BOPAlgo_Splitter.cxx
src/BOPAlgo/BOPAlgo_Splitter.hxx
src/BOPAlgo/FILES
src/BOPTest/BOPTest.cxx
src/BOPTest/BOPTest.hxx
src/BOPTest/BOPTest_PeriodicityCommands.cxx [new file with mode: 0644]
src/BOPTest/FILES
tests/boolean/grids.list
tests/boolean/periodicity/A1 [new file with mode: 0644]
tests/boolean/periodicity/A2 [new file with mode: 0644]
tests/boolean/periodicity/A3 [new file with mode: 0644]
tests/boolean/periodicity/A4 [new file with mode: 0644]
tests/boolean/periodicity/A5 [new file with mode: 0644]
tests/boolean/periodicity/A6 [new file with mode: 0644]
tests/bugs/modalg_7/bug29502