From 1a457208fe5beb57ed8e0cdfddb9c9602761e905 Mon Sep 17 00:00:00 2001 From: ysn Date: Mon, 31 Mar 2014 11:09:22 +0400 Subject: [PATCH] 0024649: Update user's guide for Boolean operations New User's Guide on Boolean operations added. --- dox/FILES_HTML.txt | 3 +- dox/FILES_PDF.txt | 3 +- .../boolean_operations/boolean_operations.md | 1892 +++++++++++ .../images/boolean_image001.svg | 173 ++ .../images/boolean_image002.svg | 232 ++ .../images/boolean_image004.png | Bin 0 -> 962 bytes .../images/boolean_image005.png | Bin 0 -> 492 bytes .../images/boolean_image006.png | Bin 0 -> 1623 bytes .../images/boolean_image007.png | Bin 0 -> 490 bytes .../images/boolean_image008.png | Bin 0 -> 2771 bytes .../images/boolean_image009.png | Bin 0 -> 492 bytes .../images/boolean_image010.svg | 210 ++ .../images/boolean_image011.svg | 322 ++ .../images/boolean_image012.svg | 231 ++ .../images/boolean_image013.svg | 231 ++ .../images/boolean_image014.svg | 205 ++ .../images/boolean_image015.svg | 250 ++ .../images/boolean_image016.svg | 152 + .../images/boolean_image017.svg | 152 + .../images/boolean_image018.svg | 148 + .../images/boolean_image019.png | Bin 0 -> 2142 bytes .../images/boolean_image020.png | Bin 0 -> 933 bytes .../images/boolean_image021.png | Bin 0 -> 2118 bytes .../images/boolean_image022.png | Bin 0 -> 1527 bytes .../images/boolean_image023.png | Bin 0 -> 1448 bytes .../images/boolean_image024.png | Bin 0 -> 14335 bytes .../images/boolean_image025.png | Bin 0 -> 7179 bytes .../images/boolean_image026.png | Bin 0 -> 6570 bytes .../images/boolean_image027.png | Bin 0 -> 2674 bytes .../images/boolean_image028.png | Bin 0 -> 8402 bytes .../images/boolean_image029.png | Bin 0 -> 4772 bytes .../images/boolean_image030.png | Bin 0 -> 4389 bytes .../images/boolean_image031.png | Bin 0 -> 7807 bytes .../images/boolean_image032.png | Bin 0 -> 8308 bytes .../images/boolean_image033.png | Bin 0 -> 3446 bytes .../images/boolean_image034.png | Bin 0 -> 3894 bytes .../images/boolean_image035.png | Bin 0 -> 4200 bytes .../images/boolean_image036.png | Bin 0 -> 6383 bytes .../images/boolean_image037.png | Bin 0 -> 6543 bytes .../images/boolean_image038.png | Bin 0 -> 4479 bytes .../images/boolean_image039.png | Bin 0 -> 4758 bytes .../images/boolean_image040.png | Bin 0 -> 5052 bytes .../images/boolean_image041.png | Bin 0 -> 5236 bytes .../images/boolean_image042.png | Bin 0 -> 3190 bytes .../images/boolean_image043.png | Bin 0 -> 3437 bytes .../images/boolean_image044.png | Bin 0 -> 17154 bytes .../images/boolean_image045.png | Bin 0 -> 8765 bytes .../images/boolean_image046.png | Bin 0 -> 9187 bytes .../images/boolean_image047.png | Bin 0 -> 15366 bytes .../images/boolean_image048.png | Bin 0 -> 7500 bytes .../images/boolean_image049.png | Bin 0 -> 8038 bytes .../images/boolean_image050.png | Bin 0 -> 3619 bytes .../images/boolean_image051.png | Bin 0 -> 2069 bytes .../images/boolean_image052.png | Bin 0 -> 3424 bytes .../images/boolean_image053.png | Bin 0 -> 2087 bytes .../images/boolean_image054.png | Bin 0 -> 5672 bytes .../images/boolean_image055.png | Bin 0 -> 5280 bytes .../images/boolean_image056.png | Bin 0 -> 3303 bytes .../images/boolean_image057.png | Bin 0 -> 3724 bytes .../images/boolean_image058.png | Bin 0 -> 3773 bytes .../images/boolean_image059.png | Bin 0 -> 5123 bytes .../images/boolean_image060.png | Bin 0 -> 5091 bytes .../images/boolean_image061.png | Bin 0 -> 3467 bytes .../images/boolean_image062.png | Bin 0 -> 3564 bytes .../images/boolean_image063.png | Bin 0 -> 3883 bytes .../images/boolean_image064.png | Bin 0 -> 4147 bytes .../images/boolean_image065.png | Bin 0 -> 2295 bytes .../images/boolean_image066.png | Bin 0 -> 2416 bytes .../images/boolean_image067.png | Bin 0 -> 4735 bytes .../images/boolean_image068.png | Bin 0 -> 4983 bytes .../images/boolean_image069.png | Bin 0 -> 2763 bytes .../images/boolean_image070.png | Bin 0 -> 2658 bytes .../images/boolean_image071.png | Bin 0 -> 7288 bytes .../images/boolean_image072.png | Bin 0 -> 4257 bytes .../images/boolean_image073.png | Bin 0 -> 2135 bytes .../images/operations_image001.svg | 274 ++ .../images/operations_image002.svg | 591 ++++ .../images/operations_image003.svg | 590 ++++ .../images/operations_image004.svg | 750 +++++ .../images/operations_image005.svg | 650 ++++ .../images/operations_image006.svg | 817 +++++ .../images/operations_image007.svg | 687 ++++ .../images/operations_image008.svg | 690 +++++ .../images/operations_image009.svg | 430 +++ .../images/operations_image010.svg | 471 +++ .../images/operations_image011.svg | 483 +++ .../images/operations_image012.svg | 762 +++++ .../images/operations_image013.svg | 704 +++++ .../images/operations_image014.svg | 428 +++ .../images/operations_image015.svg | 403 +++ .../images/operations_image016.svg | 918 ++++++ .../images/operations_image017.svg | 399 +++ .../images/operations_image018.svg | 827 +++++ .../images/operations_image019.png | Bin 0 -> 27381 bytes .../images/operations_image020.svg | 240 ++ .../images/operations_image021.svg | 596 ++++ .../images/operations_image022.svg | 1010 ++++++ .../images/operations_image023.svg | 516 +++ .../images/operations_image024.svg | 584 ++++ .../images/operations_image025.svg | 806 +++++ .../images/operations_image026.svg | 1034 ++++++ .../images/operations_image027.png | Bin 0 -> 5160 bytes .../images/operations_image028.png | Bin 0 -> 5838 bytes .../images/operations_image029.png | Bin 0 -> 4793 bytes .../images/operations_image030.png | Bin 0 -> 8542 bytes .../images/operations_image031.png | Bin 0 -> 5829 bytes .../images/operations_image032.png | Bin 0 -> 9013 bytes .../images/operations_image033.svg | 563 ++++ .../images/operations_image036.svg | 195 ++ .../images/operations_image037.svg | 121 + .../images/operations_image038.svg | 2759 +++++++++++++++++ .../images/operations_image039a.png | Bin 0 -> 1446 bytes .../images/operations_image039b.png | Bin 0 -> 7298 bytes .../images/operations_image040.png | Bin 0 -> 1354 bytes .../images/operations_image041.png | Bin 0 -> 4822 bytes .../images/operations_image042.png | Bin 0 -> 5154 bytes .../images/operations_image043.png | Bin 0 -> 8709 bytes .../images/operations_image044.png | Bin 0 -> 3328 bytes .../images/operations_image045.png | Bin 0 -> 1569 bytes .../images/operations_image046.png | Bin 0 -> 3319 bytes .../images/operations_image047.png | Bin 0 -> 1031 bytes .../images/operations_image048.png | Bin 0 -> 1720 bytes .../images/operations_image049.png | Bin 0 -> 10535 bytes .../images/operations_image050.svg | 931 ++++++ .../images/operations_image051.svg | 331 ++ .../images/operations_image052.svg | 464 +++ .../images/operations_image053.svg | 2733 ++++++++++++++++ .../images/operations_image054.svg | 384 +++ .../images/operations_image055.svg | 347 +++ .../images/operations_image056.svg | 743 +++++ .../images/operations_image057.svg | 268 ++ .../images/operations_image058.svg | 926 ++++++ dox/user_guides/draw_test_harness.md | 287 +- .../modeling_algos/modeling_algos.md | 1 + dox/user_guides/user_guides.md | 1 + 135 files changed, 30914 insertions(+), 4 deletions(-) create mode 100644 dox/user_guides/boolean_operations/boolean_operations.md create mode 100644 dox/user_guides/boolean_operations/images/boolean_image001.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image002.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image004.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image005.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image006.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image007.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image008.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image009.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image010.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image011.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image012.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image013.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image014.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image015.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image016.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image017.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image018.svg create mode 100644 dox/user_guides/boolean_operations/images/boolean_image019.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image020.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image021.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image022.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image023.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image024.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image025.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image026.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image027.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image028.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image029.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image030.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image031.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image032.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image033.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image034.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image035.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image036.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image037.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image038.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image039.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image040.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image041.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image042.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image043.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image044.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image045.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image046.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image047.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image048.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image049.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image050.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image051.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image052.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image053.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image054.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image055.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image056.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image057.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image058.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image059.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image060.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image061.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image062.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image063.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image064.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image065.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image066.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image067.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image068.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image069.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image070.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image071.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image072.png create mode 100644 dox/user_guides/boolean_operations/images/boolean_image073.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image001.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image002.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image003.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image004.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image005.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image006.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image007.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image008.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image009.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image010.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image011.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image012.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image013.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image014.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image015.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image016.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image017.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image018.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image019.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image020.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image021.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image022.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image023.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image024.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image025.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image026.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image027.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image028.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image029.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image030.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image031.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image032.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image033.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image036.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image037.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image038.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image039a.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image039b.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image040.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image041.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image042.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image043.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image044.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image045.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image046.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image047.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image048.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image049.png create mode 100644 dox/user_guides/boolean_operations/images/operations_image050.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image051.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image052.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image053.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image054.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image055.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image056.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image057.svg create mode 100644 dox/user_guides/boolean_operations/images/operations_image058.svg diff --git a/dox/FILES_HTML.txt b/dox/FILES_HTML.txt index df2ba2b72c..e3ab1cba95 100644 --- a/dox/FILES_HTML.txt +++ b/dox/FILES_HTML.txt @@ -18,13 +18,14 @@ user_guides/user_guides.md user_guides/foundation_classes/foundation_classes.md user_guides/modeling_data/modeling_data.md user_guides/modeling_algos/modeling_algos.md +user_guides/boolean_operations/boolean_operations.md +user_guides/shape_healing/shape_healing.md user_guides/visualization/visualization.md user_guides/iges/iges.md user_guides/step/step.md user_guides/xde/xde.md user_guides/ocaf/ocaf.md user_guides/tobj/tobj.md -user_guides/shape_healing/shape_healing.md user_guides/draw_test_harness.md user_guides/brep_wp/brep_wp.md user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md diff --git a/dox/FILES_PDF.txt b/dox/FILES_PDF.txt index 69ac568aca..9d17f162bb 100644 --- a/dox/FILES_PDF.txt +++ b/dox/FILES_PDF.txt @@ -9,11 +9,12 @@ user_guides/foundation_classes/foundation_classes.md user_guides/iges/iges.md user_guides/modeling_data/modeling_data.md user_guides/modeling_algos/modeling_algos.md +user_guides/boolean_operations/boolean_operations.md +user_guides/shape_healing/shape_healing.md user_guides/ocaf/ocaf.md user_guides/ocaf_functionmechanism_wp/ocaf_functionmechanism_wp.md user_guides/ocaf_tree_wp/ocaf_tree_wp.md user_guides/ocaf_wp/ocaf_wp.md -user_guides/shape_healing/shape_healing.md user_guides/step/step.md user_guides/draw_test_harness.md user_guides/tobj/tobj.md diff --git a/dox/user_guides/boolean_operations/boolean_operations.md b/dox/user_guides/boolean_operations/boolean_operations.md new file mode 100644 index 0000000000..1fd8344ee9 --- /dev/null +++ b/dox/user_guides/boolean_operations/boolean_operations.md @@ -0,0 +1,1892 @@ +Boolean Operations {#occt_user_guides__boolean_operations} +========================= + +@tableofcontents + +@section occt_algorithms_1 Introduction + +This document provides comprehensive description of the Boolean Operation Algorithm (BOA) as implemented in Open CASCADE Technology. +Boolean Operation Algorithm is based on General Fuse Algorithm (GFA) which is also described by this document. +General Fuse Algorithm is also a basis of the Partition Algorithm (PA) implemented in SALOME and described in SALOME documentation. + +General Fuse Algorithm has a history-based architecture designed to allow using OCAF naming functionality. +The architecture of General Fuse Algorithm is expandable, that allows creating new algorithms basing on it. + +@section occt_algorithms_2 Overview + +@subsection occt_algorithms_2_1 Operators + +@subsubsection occt_algorithms_2_1_1 Boolean operator + +The Boolean operator provides the operations (Common, Fuse, Cut) between two arguments in terms of *TopoDS_Shape*. + +The operator can be represented as: + +RB=Bj (S1, S2), + +where: +* *Bj* - operation of type j (Common, Fuse, Cut), +* *RB* - result of the operation, +* *S1* and *S2* - arguments of the operation. + +@subsubsection occt_algorithms_2_1_2 General Fuse operator + +The General fuse operator can be applied to an arbitrary number of arguments in terms of *TopoDS_Shape*. + +The GFA operator can be represented as: + +RGF = GF (S1, S2 ... Sn), + +where +* *RGF* - result of the operation, +* *S1, S2 ... Sn* - arguments of the operation, +* *n* - number of arguments. + +The result of the Boolean operator, *RB*, can be obtained from *RGF*. + +For example, for two arguments *S1* and *S2* the result *RGF* is + +RGF = GF (S1, S2) = Sp1 + Sp2 + Sp12 + +@figure{/user_guides/boolean_operations/images/operations_image001.svg, "Operators"} + +This Figure shows that +* Bcommon (S1, S2) = Sp12; +* Bcut12 (S1, S2) = Sp1; +* Bcut21 (S1, S2) = Sp2; +* Bfuse (S1, S2) = Sp1+Sp2+Sp12= Rp; + +RGF=GF (S1, S2) = Bfuse = Bcommon+ Bcut12+ Bcut21. + +The fact that *RGF* contains the components of *RB* allows considering GFA as the general case of BOA. So it is possible to implement BOA as a subclass of GFA. + +@subsubsection occt_algorithms_2_1_3 Partition operator + +The Partition operator can be applied to an arbitrary number of arguments in terms of *TopoDS_Shape*. The arguments are divided on two groups: Objects, Tools. The result of PA contains all parts belonging to the Objects but does not contain the parts that belongs to the Tools only. + +The PA operator can be represented as follows: + +RP=PA (S1o, S2o … Sno, S1T, S2T … SnT), +where: +* RP - is the result of the operation; +* S1O, S2O … SnO - Arguments of the operation [Objects]; +* S1T, S2T … SnT - Arguments of the operation [Tools]; +* *nO* - Number of arguments [Objects]; +* *nT* - Number of arguments [Tools]. + +The result *RP* can be obtained from *RGF* . + +For example, for two arguments *S1O* and *S2T* the result *RP* is + +RP=PA(S1O,S2T)=Sp1+Sp12. + +In case when all arguments of the PA are Objects (no Tools), the result of PA is equivalent to the result of GFA. + +For example, for two arguments *S1O* and *S2O* the result *RP* is + +RP=PA(S1O, S2O) = Sp1 + Sp2 + Sp12 = GF (S1, S2) + +The fact that the *RGF* contains the components of *RP* allows considering GFA as the general case of PA. Thus, it is possible to implement PA as a subclass of GFA. + +@subsection occt_algorithms_2_2 Parts of algorithms + +GFA, BOA and PA have the same Data Structure (DS). The main goal of the Data Structure is to store all necessary information for input data and intermediate results. + +GFA, BOA and PA consist of two main parts: +* Intersection Part (IP). The main goal of IP is to compute the interferences between sub-shapes of arguments. The IP uses DS to retrieve input data and store the results of intersections. +* Building Part (BP). The main goal of BP is to build required result of an operation. This part also uses DS to retrieve data and store the results. + +As it follows from the definition of *RGF* and *RP* the main differences between GFA, BOA and PA are in the Building Part. The Intersection Part is the same for the algorithms. + +@section occt_algorithms_3 Terms and Definitions + +This chapter provides the background terms and definitions that are necessary to understand how the algorithms work. + +@subsection occt_algorithms_3_1 Interferences + +Each shape having a boundary representation (vertex, edge, face) contains an internal value of geometrical tolerance. The shapes interferes between each other in terms of theirs tolerances. + +The shapes are interfered when there is a part of 3D space where the distance between the underlying geometry of shapes is less or equal to the sum of tolerances of the shapes. For the three types of shapes (vertex, edge, face) there are six types of interferences. + +@subsubsection occt_algorithms_3_1_1 Vertex/Vertex interference + +Two vertices *Vi* and *Vj* have the distance between corresponding 3D points that is less then sum of the tolerances *Tol(Vi)* and *Tol(Vj)* of the vertices. + +@figure{/user_guides/boolean_operations/images/operations_image002.svg, "Vertex/vertex interference"} + + + +The result is a new vertex Vn with 3D point Pn and tolerance value Tol(Vn) that are computed by the formulas: + +~~~~~ +Pn = 0.5 * (Pi + Pj) +Tol(Vn) = max (Tol(Vi), Tol(Vj)) + 0.5 * D +~~~~~ + +where D = distance (Pi, Pj) + +@subsubsection occt_algorithms_3_1_2 Vertex/Edge interference + +For a vertex *Vi* and an edge *Ej* the distance *D* between 3D point of the vertex and its projection on the 3D curve of the edge *Ej* is less or equal than sum of tolerances of the vertex *Tol(Vi)* and the edge *Tol(Ej)*. + +@figure{/user_guides/boolean_operations/images/operations_image003.svg, "Vertex/edge interference"} + + +The result is vertex *Vi* with the corresponding tolerance value +~~~~~ +Tol(Vi) = max (Tol(Vi), Tol(Ej)) + 0.5 • D +~~~~~ +where D = distance (Pi, PPi); + +and parameter *ti* of the projected point *PPi* on 3D curve *Cj* of edge *Ej*. + +@subsubsection occt_algorithms_3_1_3 Vertex/Face interference + +For a vertex *Vi* and a face *Fj* the distance *D* between 3D point of the vertex and its projection on the surface of the face is less or equal than sum of tolerances of the vertex *Tol(Vi)* and the face *Tol(Fj)*. + +@figure{/user_guides/boolean_operations/images/operations_image004.svg, "Vertex/face interference"} + +The result is vertex *Vi* with the corresponding tolerance value: +~~~~~ +Tol(Vi) = max (Tol(Vi), Tol(Ej)) + 0.5 • D +~~~~~ +where D = distance (Pi, PPi) + +and parameters ui, vi of the projected point PPi on surface Sj of face Fj. + +@subsubsection occt_algorithms_3_1_4 Edge/Edge interference + +For two edges *Ei* and *Ej* (with the corresponding 3D curves *Ci* and *Cj*) there are some places where the distance between the curves is less than (or equal to) sum of tolerances of the edges. + +Let us examine two cases: + +In the first case two edges have one or several common parts of 3D curves in terms of tolerance. + +@figure{/user_guides/boolean_operations/images/operations_image005.svg, "Edge/edge interference: common parts"} + +The results are: +* Parametric range [ti1, ti2 ] for 3D curve *Ci* of edge *Ei*. +* Parametric range [tj1, tj2 ] for 3D curve *Cj* of edge *Ej*. + +In the second case two edges have one or several common points in terms of tolerance. + +@image html /user_guides/boolean_operations/images/operations_image006.svg "Edge/edge interference: common points" +@image latex /user_guides/boolean_operations/images/operations_image006.svg "Edge/edge interference: common points" + +The results are as follows: + +* one or several new vertices *Vn* with 3D point *Pn* and tolerance value *Tol(Vn)* that are calculated by the formulas: + @code + Pn = 0.5 • (Pi + Pj) + Tol(Vn) = max (Tol(Ei), Tol(Ej)) + 0.5 • D + @endcode + where: + * D = distance (Pi, Pj) + * *Pi* and *Pj* are the nearest 3D points for curves *Ci* and *Cj*. + +* Parameter *ti* of *Pi* for the 3D curve *Ci*. +* Parameter *tj* of *Pj* for the 3D curve *Cj*. + +@subsubsection occt_algorithms_3_1_5 Edge/Face interference + +For an edge *Ei* (with the corresponding 3D curve *Ci*) and a face *Fj* (with the corresponding 3D surface *Sj*) there are some places in 3D space, where the distance between *Ci* and surface *Sj* is less than (or equal to) the sum of tolerances of edge *Ei* and face *Fj*. + +Let us examine two cases: + +In the first case Edge *Ei* and Face *Fj* have one or several common parts in terms of tolerance. + +@figure{/user_guides/boolean_operations/images/operations_image007.svg, "Edge/face interference: common parts"} + +The result is a parametric range [ti1, ti2] for the 3D curve *Ci* of the edge *Ei*. + +In the second case Edge *Ei* and Face *Fj* have one or several common points in terms of tolerance. + +@figure{/user_guides/boolean_operations/images/operations_image008.svg, "Edge/face interference: common points"} + +The results are as follows: +* one or several new vertices *Vn* with 3D point *Pn* and tolerance value *Tol(Vn)* that are calculated by the formulas @code Pn = 0.5 • (Pi + Pj) @endcode and @code Tol(Vn) = max (Tol(Ei), Tol(Fj)) + 0.5 • D @endcode where: + * D = distance (Pi, Pj), + * *Pi* and *Pj* are nearest 3D points for the curve *Ci* and surface *Sj*. + +* Parameter *ti* of *Pi* for the 3D curve *Ci*. +* Parameters *ui* and *vi* of the projected point *PPi* on the surface *Sj* of the face *Fj*. + +@subsubsection occt_algorithms_3_1_6 Face/Face Interference + +For a face *Fi* and a face *Fj* (with the corresponding surfaces *Si* and *Sj*) there are some places in 3D space, where the distance between the surfaces is less than (or equal to) sum of tolerances of the faces. + +In the first case Face *Fi* and face *Fj* have one or several common curves Cijk (k = 0, 1, 2…kN) in terms of tolerance. + +@figure{/user_guides/boolean_operations/images/operations_image009.svg, "Face/face interference: common curves"} + +The result is an intersection of curves *Cijk (k = 0, 1, 2…kN,* where *kN* is the number of intersection curves) with corresponding values of tolerances *Tol(Cijk)*. + +In the second case Face *Fi* and face *Fj* have one or several common points in terms of tolerance + +@figure{/user_guides/boolean_operations/images/operations_image010.svg, "Face/face interference: common points"} + +The results are as follows: + +* one or several new vertices *Vijm* with 3D point *Pn* and tolerance value *Tol(Vn)* that are calculated by the formulas @code Pn = 0.5 • (Pi + Pj) @endcode and @code Tol(Vijm) = max (Tol(Fi), Tol(Fj)) + 0.5 • D @endcode where: + * D = distance (Pi, Pj), + * *Pi* and *Pj* are nearest 3D points for surfaces *Si* and *Sj*. + +* Parameters *uj*, *vj* of the projected point *PPj* on surface *Sj* of face *Fj*; +* Parameters *ui* and *vi* of the projected point *PPi* on surface *Si* of face *Fi*. + +@subsubsection occt_algorithms_3_1_7 Computation Order + +The interferences between shapes are computed on the basis of increasing of the dimension value of the shape in the following order: +* Vertex/Vertex, +* Vertex/Edge, +* Edge/Edge, +* Vertex/Face, +* Edge/Face, +* Face/Face. + +This order allows avoiding the computation of redundant interferences between upper-level shapes *Si* and *Sj* when there are interferences between lower sub-shapes *Sik* and *Sjm*. + +@subsubsection occt_algorithms_3_1_8 Results + +* The result of the interference is a shape that can be either interfered shape itself (or its part) or a new shape. +* The result of the interference is a shape with the dimension value that is less or equal to the minimal dimension value of interfered shapes. For example, the result of Vertex/Edge interference is a vertex, but not an edge. +* The result of the interference splits the source shapes on the parts each time as it can do that. + +@subsection occt_algorithms_3_2 Paves + +The result of interferences of the type Vertex/Edge, Edge/Edge and Edge/Face in most cases is a vertex (new or old) lying on an edge. + +The result of interferences of the type Face/Face in most cases is intersection curves, which go through some vertices lying on the faces. + +The position of vertex *Vi* on curve *C* can be defined by a value of parameter ti of the 3D point of the vertex on the curve. +Pave *PVi* on curve *C* is a structure containing the vertex *Vi* and correspondent value of the parameter ti of the 3D point of the vertex on the curve. Curve *C* can be a 3D or a 2D curve. + +@figure{/user_guides/boolean_operations/images/operations_image011.svg, "Paves"} + +Two paves *PV1* and *PV2* on the same curve *C* can be compared using the parameter value @code PV1 > PV2 if t1 > t2 @endcode + +The usage of paves allows binding of the vertex to the curve (or any structure that contains a curve: edge, intersection curve). + + +@subsection occt_algorithms_3_3 Pave Blocks + +A set of paves *PVi (i=1, 2...nPV)*, where *nPV* is the number of paves] of curve *C* can be sorted in the increasing order using the value of parameter *t* on curve *C*. + +A pave block *PBi* is a part of the object (edge, intersection curve) between neighboring paves. + +@figure{/user_guides/boolean_operations/images/operations_image012.svg, "Pave Blocks"} + +Any finite source edge *E* has at least one pave block that contains two paves *PVb* and *PVe*: +* Pave *PVb* corresponds to the vertex *Vb* with minimal parameter tb on the curve of the edge. +* Pave *PVe* corresponds to the vertex *Ve* with maximal parameter te on the curve of the edge. + +@subsection occt_algorithms_3_4 Shrunk Range + +Pave block *PV* of curve *C* is bounded by vertices *V1* and *V2* with tolerance values *Tol(V1)* and *Tol(V2)*. Curve *C* has own value of tolerance *Tol(C)*: +* In case of edge, the value of this tolerance is tolerance of the edge. +* In case of intersection curve, the value of the tolerance is tolerance obtained from an intersection algorithm. + +@figure{/user_guides/boolean_operations/images/operations_image013.svg, "Shrunk Range"} + +The theoretical parametric range of the pave block is [t1C, t2C]. + +The positions of the vertices *V1* and *V2* of the pave block can be different. The positions are determined by the following conditions: +~~~~ +Distance (P1, P1c) ≤ Tol(V1) + Tol(C) +Distance (P2, P2c) ≤ Tol(V2) + Tol(C) +~~~~ +The Figure shows that each tolerance sphere of a vertex can reduce the parametric range of the pave block to a range [t1S, t2S]. The range [t1S, t2S] is the shrunk range of the pave block. + +The shrunk range of the pave block is the part of 3D curve that can interfere with other shapes. + +@subsection occt_algorithms_3_5 Common Blocks + +The interferences of the type Edge/Edge, Edge/Face produce results as common parts. + +In case of Edge/Edge interference the common parts are pave blocks that have different base edges. + +@figure{/user_guides/boolean_operations/images/operations_image014.svg, "Common Blocks: Edge/Edge interference"} + +If the pave blocks PB1, PB2…PBNbPB , where *NbPB* is the number of pave blocks have the same bounding vertices and geometrically coincide, the pave blocks form common block *CB*. + + +In case of Edge/Face interference the common parts are pave blocks lying on a face(s). + +@figure{/user_guides/boolean_operations/images/operations_image015.svg, "Common Blocks: Edge/Face interference"} + +If the pave blocks *PBi* geometrically coincide with a face *Fj*, the pave blocks form common block *CB*. + +In general case a common block *CB* contains: +* Pave blocks *PBi (i=0,1,2, 3… NbPB)*. +* A set of faces *Fj (j=0,1... NbF), NbF* - number of faces. + + +@subsection occt_algorithms_3_6 FaceInfo + +The structure *FaceInfo* contains the following information: +* Pave blocks that have state **In** for the face; +* Vertices that have state **In** for the face; +* Pave blocks that have state **On** for the face; +* Vertices that have state **On** for the face; +* Pave blocks built up from intersection curves for the face; +* Vertices built up from intersection points for the face. + +@figure{/user_guides/boolean_operations/images/operations_image016.svg, "Face Info"} + +In the figure, for face *F1*: +* Pave blocks that have state **In** for the face: *PBin1*. +* Vertices that have state **In** for the face: *Vin1*. +* Pave blocks that have state **On** for the face: *PBon11*, *PBon12*, *PBon2*, *PBon31*, *PBon32*, *PBon4*. +* Vertices that have state **On** for the face: *V1, V2, V3, V4, V5, V6*. +* Pave blocks built up from intersection curves for the face: *PBsc1*. +* Vertices built up from intersection points for the face: none + + +@section occt_algorithms_4 Data Structure + +Data Structure (DS) is used to: +* Store information about input data and intermediate results; +* Provide the access to the information; +* Provide the links between the chunks of information. + +This information includes: +* Arguments; +* Shapes (and sub-shapes); +* Interferences; +* Pave Blocks; +* Common Blocks. + +Data Structure is implemented in the class *BOPDS_DS*. + +@subsection occt_algorithms_4_1 Arguments + +The arguments are shapes (in terms of *TopoDS_Shape*): +* Number of arguments is unlimited. +* Each argument is a valid shape (in terms of *BRepCheck_Analyzer*). +* Each argument can be of one of the following types (see the Table): + +| No | Type | Index of Type | +| :----- | :----- | :----- | +| 1 | COMPOUND | 0 | +| 2 | COMPSOLID | 1 | +| 3 | SOLID | 2 | +| 4 | SHELL | 3 | +| 5 | FACE | 4 | +| 6 | WIRE | 5 | +| 7 | EDGE | 6 | +| 8 | VERTEX | 7 | + +* The argument of type *0 (COMPOUND)* can include any number of shapes of an arbitrary type (0, 1…7). +* The argument should not be self-interfered, i.e. all sub-shapes of the argument that have geometrical coincidence through any topological entities (vertices, edges, faces) must share these entities. +* There are no restrictions on the type of underlying geometry of the shapes. The faces or edges of arguments *Si* can have underlying geometry of any type supported by Open CASCADE Technology modeling algorithms (in terms of *GeomAbs_CurveType* and *GeomAbs_SurfaceType*). + +@subsection occt_algorithms_4_2 Shapes +The information about Shapes is stored in structure *BOPDS_ShapeInfo*. The objects of type *BOPDS_ShapeInfo* are stored in the container of array type. The array allows getting the access to the information by an index (DS index). +The structure *BOPDS_ShapeInfo* has the following contents: + + +| Name | Contents | +| :-------- | :----- | +| *myShape* | Shape itself | +| *myType* | Type of shape | +| *myBox* | 3D bounding box of the shape | +| *mySubShapes* | List of DS indices of sub-shapes | +| *myReference* | Storage for some auxiliary information | +| *myFlag* | Storage for some auxiliary information | + +@subsection occt_algorithms_4_3 Interferences + +The information about interferences is stored in the instances of classes that are inherited from class BOPDS_Interf. + +| Name | Contents | +| :----- | :----- | +| *BOPDS_Interf* | Root class for interference | +| *Index1* | DS index of the shape 1 | +| *Index2* | DS index of the shape 2 | +| *BOPDS_InterfVV* | Storage for Vertex/Vertex interference | +| *BOPDS_InterfVE* | Storage for Vertex/Edge interference | +| *myParam* | The value of parameter of the point of the vertex on the curve of the edge | +| *BOPDS_InterfVF* | Storage for Vertex/Face interference | +| *myU, myV* | The value of parameters of the point of the vertex on the surface of the face | +| *BOPDS_InterfEE* | Storage for Edge/Edge interference | +| *myCommonPart* | Common part (in terms of *IntTools_CommonPart* ) | +| *BOPDS_InterfEF* | Storage for Edge/Face interference | +| *myCommonPart | Common part (in terms of *IntTools_CommonPart* ) | +| *BOPDS_InterfFF* | Storage for Face/Face interference | +| *myTolR3D, myTolR2D* | The value of tolerances of curves (points) reached in 3D and 2D | +| *myCurves* | Intersection Curves (in terms of *BOPDS_Curve*) | +| *myPoints* | Intersection Points (in terms of *BOPDS_Point*) | + + +The Figure shows inheritance diagram for *BOPDS_Interf* classes. + +@figure{/user_guides/boolean_operations/images/operations_image017.svg, "BOPDS_Interf classes"} + + +@subsection occt_algorithms_4_4 Pave, PaveBlock and CommonBlock + +The information about the pave is stored in objects of type *BOPDS_Pave*. + +| Name | Contents | +| :--- | :------ | +| *BOPDS_Pave* | | +| *myIndex1* | DS index of the vertex | +| *myParam* | Value of the parameter of the 3D point of vertex on curve. | + +The information about pave blocks is stored in objects of type *BOPDS_PaveBlock*. + +| Name | Contents | +| :--- | :------ | +| *BOPDS_PaveBlock* | | +| *myEdge* | DS index of the edge produced from the pave block | +| *myOriginalEdge* | DS index of the source edge | +| *myPave1* | Pave 1 (in terms of *BOPDS_Pave*) | +| *myPave2* | Pave 2 (in terms of *BOPDS_Pave*) | +| *myExtPaves* | The list of paves (in terms of *BOPDS_Pave*) that is used to store paves lying inside the pave block during intersection process | +| *myCommonBlock* | The reference to common block (in terms of *BOPDS_CommonBlock*) if the pave block is a common block | +| *myShrunkData* | The shrunk range of the pave block | + +* To be bound to an edge (or intersection curve) the structures of type *BOPDS_PaveBlock* are stored in one container of list type (BOPDS_ListOfPaveBlock). +* In case of edge, all the lists of pave blocks above are stored in one container of array type. The array allows getting the access to the information by index of the list of pave blocks for the edge. This index (if exists) is stored in the field *myReference*. + +The information about common block is stored in objects of type *BOPDS_CommonBlock*. + +| Name | Contents | +| :---- | :------ | +| *BOPDS_CommonBlock* | | +| *myPaveBlocks* | The list of pave blocks that are common in terms of @ref occt_algorithms_3_5 "Common Blocks" | +| *myFaces* | The list of DS indices of the faces, on which the pave blocks lie. | + + +@subsection occt_algorithms_4_5 Points and Curves +The information about intersection point is stored in objects of type *BOPDS_Point*. + +| Name | Contents | +| :---- | :----- | +| *BOPDS_Point* | | +| *myPnt* | 3D point | +| *myPnt2D1* | 2D point on the face1 | +| *myPnt2D2* | 2D point on the face2 | + +The information about intersection curve is stored in objects of type *BOPDS_Curve*. + +| Name | Contents | +| :---- | :----- | +| *BOPDS_Curve* | | +| *myCurve* | The intersection curve (in terms of *IntTools_Curve* ) | +| *myPaveBlocks* | The list of pave blocks that belong to the curve | +| *myBox* | The bounding box of the curve (in terms of *Bnd_Box* ) | + +@subsection occt_algorithms_4_6 FaceInfo +The information about *FaceInfo* is stored in a structure *BOPDS_FaceInfo*. +The structure *BOPDS_FaceInfo* has the following contents. + +| Name | Contents | +| :---- | :----- | +| *BOPDS_FaceInfo* | | +| *myPaveBlocksIn* | Pave blocks that have state In for the face | +| *myVerticesIn* | Vertices that have state In for the face | +| *myPaveBlocksOn* | Pave blocks that have state On for the face | +| *myVerticesOn* | Vertices that have state On for the face | +| *myPaveBlocksSc* | Pave blocks built up from intersection curves for the face | +| *myVerticesSc* | Vertices built up from intersection points for the face + + +The objects of type *BOPDS_FaceInfo* are stored in one container of array type. The array allows getting the access to the information by index. This index (if exists) is stored in the field *myReference*. + +@section occt_algorithms_5 Intersection Part + +Intersection Part (IP) is used to +* Initialize the Data Structure; +* Compute interferences between the arguments (or their sub-shapes); +* Compute same domain vertices, edges; +* Build split edges; +* Build section edges; +* Build p-curves; +* Store all obtained information in DS. +IP uses DS as input data. IP is implemented in the class *BOPAlgo_PaveFiller*. +The description provided in the next paragraphs is coherent with the implementation of the method *BOPAlgo_PaveFiller::Perform()*. + +@subsection occt_algorithms_5_1 Initialization +The input data for the step is the Arguments. The description of initialization step is shown in the Table. + +| No | Contents | Implementation | +| :--- | :----- | :----- | +| 1 | Initialization the array of shapes (in terms of @ref occt_algorithms_4_2 "Shapes"). Filling the array of shapes. | *BOPDS_DS::Init()* | +| 2 | Initialization the array pave blocks (in terms of @ref occt_algorithms_4_4 "Pave, PaveBlock, CommonBlock") | *BOPDS_DS::Init()* | +| 3 | Initialization of intersection Iterator. The intersection Iterator is the object that computes intersections between BRep sub-shapes of the arguments in terms of bounding boxes. The intersection Iterator provides approximate number of the interferences for given type (in terms of @ref occt_algorithms_3_1 "Interferences") | *BOPDS_Iterator* | +| 4 | Initialization of intersection Context. The intersection Context is an object that contains geometrical and topological toolkit (classifiers, projectors, etc). The intersection Context is used to cache the tools to increase the algorithm performance. | *BOPInt_Context* | + + +@subsection occt_algorithms_5_2 Compute Vertex/Vertex Interferences + +The input data for this step is the DS after the @ref occt_algorithms_5_1 "Initialization". The description of this step is shown in the table : + + +| No | Contents | Implementation | +| :--- | :---- | :----- | +| 1 | Initialize array of Vertex/Vertex interferences. | *BOPAlgo_PaveFiller::PerformVV()* | +| 2 | Access to the pairs of interfered shapes (nVi, nVj)k, k=0, 1…nk, where *nVi* and *nVj* are DS indices of vertices *Vi* and *Vj* and *nk* is the number of pairs. | *BOPDS_Iterator* | +| 3 | Compute the connexity chains of interfered vertices *nV1C, nV2C… nVnC)k, C=0, 1…nCs*, where *nCs* is the number of the connexity chains | *BOPAlgo_Tools::MakeBlocksCnx()* | +| 4 | Build new vertices from the chains *VNc. C=0, 1…nCs.* | *BOPAlgo_PaveFiller::PerformVV()* | +| 5 | Append new vertices in DS. | *BOPDS_DS::Append()* | +| 6 | Append same domain vertices in DS. | *BOPDS_DS::AddShapeSD()* | +| 7 | Append Vertex/Vertex interferences in DS. | *BOPDS_DS::AddInterf()* | + +* The pairs of interfered vertices are: (nV11, nV12), (nV11, nV13), (nV12, nV13), (nV13, nV15), (nV13, nV14), (nV14, nV15), (nV21, nV22), (nV21, nV23), (nV22, nV23); +* These pairs produce two chains: (nV11, nV12, nV13, nV14, nV15) and (nV21, nV22, nV23); +* Each chain is used to create a new vertex, *VN1* and *VN2*, correspondingly. + +The example of connexity chains of interfered vertices is given in the image: + +@figure{/user_guides/boolean_operations/images/operations_image018.svg, "Connexity chains of interfered vertices"} + + +@subsection occt_algorithms_5_3 Compute Vertex/Edge Interferences + +The input data for this step is the DS after computing Vertex/Vertex interferences. + +| No | Contents | Implementation | +| :--- | :--- | :--- | +| 1 | Initialize array of Vertex/Edge interferences | *BOPAlgo_PaveFiller::PerformVE()* | +| 2 | Access to the pairs of interfered shapes (nVi, nEj)k k=0, 1…nk, where *nVi* is DS index of vertex *Vi*, *nEj* is DS index of edge *Ej* and *nk* is the number of pairs. | *BOPDS_Iterator* | +| 3 | Compute paves. See @ref occt_algorithms_3_1_2 "Vertex/Edge Interference" | *BOPInt_Context::ComputeVE()* | +| 4 | Initialize pave blocks for the edges *Ej* involved in the interference | *BOPDS_DS:: ChangePaveBlocks()* | +| 5 | Append the paves into the pave blocks in terms of @ref occt_algorithms_4_4 "Pave, PaveBlock and CommonBlock" | *BOPDS_PaveBlock:: AppendExtPave()* | +| 6 | Append Vertex/Edge interferences in DS | *BOPDS_DS::AddInterf()* | + +@subsection occt_algorithms_5_4 Update Pave Blocks +The input data for this step is the DS after computing Vertex/Edge Interferences. + +| No | Contents | Implementation | +| :--- | :---- | :--- | +| 1 | Each pave block PB containing internal paves is split by internal paves into new pave blocks *PBN1, PBN2… PBNn*. PB is replaced by new pave blocks *PBN1, PBN2… PBNn* in the DS. | *BOPDS_DS:: UpdatePaveBlocks()* | + +@subsection occt_algorithms_5_5 Compute Edge/Edge Interferences + +The input data for this step is the DS after updating Pave Blocks. + +| No | Contents | Implementation | +| :---- | :---- | :----- | +| 1 | Initialize array of Edge/Edge interferences | *BOPAlgo_PaveFiller::PerformEE()* | +| 2 | Access to the pairs of interfered shapes (nEi, nEj)k, k=0, 1…nk, where *nEi* is DS index of the edge *Ei*, *nEj* is DS index of the edge *Ej* and *nk* is the number of pairs. | *BOPDS_Iterator* | +| 3 | Initialize pave blocks for the edges involved in the interference, if it is necessary. | *BOPDS_DS:: ChangePaveBlocks()* | +| 4 | Access to the pave blocks of interfered shapes: (PBi1, PBi2…PBiNi) for edge *Ei* and (PBj1, PBj2…PBjNj) for edge *Ej* | *BOPAlgo_PaveFiller::PerformEE()* | +| 5 | Compute shrunk data for pave blocks in terms of @ref occt_algorithms_4_4 "Pave, PaveBlock and CommonBlock", if it is necessary. | *BOPAlgo_PaveFiller::FillShrunkData()* | +| 6 | Compute Edge/Edge interference for pave blocks *PBix* and *PBiy*. The result of the computation is a set of objects of type *IntTools_CommonPart* | *IntTools_EdgeEdge* | +| 7.1 | For each *CommonPart* of type *VERTEX:* Create new vertices *VNi (i =1, 2…,NbVN),* where *NbVN* is the number of new vertices. Intersect the vertices *VNi* using the steps Initialization and compute Vertex/Vertex interferences as follows: a) create a new object *PFn* of type *BOPAlgo_PaveFiller* with its own DS; b) use new vertices *VNi (i=1, 2…,NbVN), NbVN* as arguments (in terms of *TopoDs_Shape*) of *PFn*; c) invoke method *Perform()* for *PFn*. The resulting vertices *VNXi (i=1, 2…,NbVNX)*, where *NbVNX* is the number of vertices, are obtained via mapping between *VNi* and the results of *PVn*. | *BOPTools_Tools::MakeNewVertex()* | +| 7.2 | For each *CommonPart* of type *EDGE:* Compute the coinciding connexity chains of pave blocks (PB1C, PB2C… PNnC)k, C=0, 1…nCs, where *nCs* is the number of the connexity chains. Create common blocks (CBc. C=0, 1…nCs) from the chains. Attach the common blocks to the pave blocks. | *BOPAlgo_Tools::PerformCommonBlocks()* | +| 8 | Post-processing. Append the paves of *VNXi* into the corresponding pave blocks in terms of @ref occt_algorithms_4_4 "Pave, PaveBlock and CommonBlock" | *BOPDS_PaveBlock:: AppendExtPave()* | +| 9 | Split common blocks CBc by the paves. | *BOPDS_DS:: UpdateCommonBlock()* | +| 10 | Append Edge/Edge interferences in the DS. | *BOPDS_DS::AddInterf()* | + +The example of coinciding chains of pave blocks is given in the image: + +@figure{/user_guides/boolean_operations/images/operations_image019.png, "Coinciding chains of pave blocks"} + +* The pairs of coincided pave blocks are: (PB11, PB12), (PB11, PB13), (PB12, PB13), (PB21, PB22), (PB21, PB23), (PB22, PB23). +* The pairs produce two chains: (PB11, PB12, PB13) and (PB21, PB22, PB23). + +@subsection occt_algorithms_5_6 Compute Vertex/Face Interferences + +The input data for this step is the DS after computing Edge/Edge interferences. + +| No | Contents | Implementation | +| :---- | :--- | :---- | +| 1 | Initialize array of Vertex/Face interferences | *BOPAlgo_PaveFiller::PerformVF()* | +| 2 | Access to the pairs of interfered shapes (nVi, nFj)k, k=0, 1…nk, where *nVi* is DS index of the vertex *Vi*, *nFj* is DS index of the edge *Fj* and *nk* is the number of pairs. | *BOPDS_Iterator* | +| 3 | Compute interference See @ref occt_algorithms_3_1_3 "Vertex/Face Interference" | *BOPInt_Context::ComputeVF()* | +| 4 | Append Vertex/Edge interferences in the DS | *BOPDS_DS::AddInterf()* | +| 5 | Repeat steps 2-4 for each new vertex *VNXi (i=1, 2…,NbVNX),* where *NbVNX* is the number of vertices. | *BOPAlgo_PaveFiller::TreatVerticesEE()* | + +@subsection occt_algorithms_5_7 Compute Edge/Face Interferences +The input data for this step is the DS after computing Vertex/Face Interferences. + +| No | Contents | Implementation | +| :---- | :---- | :---- | +| 1 | Initialize array of Edge/Face interferences | *BOPAlgo_PaveFiller::PerformEF()* | +| 2 | Access to the pairs of interfered shapes (nEi, nFj)k, k=0, 1…nk, where *nEi* is DS index of edge *Ei*, *nFj* is DS index of face *Fj* and *nk* is the number of pairs. | *BOPDS_Iterator* | +| 3 | Initialize pave blocks for the edges involved in the interference, if it is necessary. | *BOPDS_DS::ChangePaveBlocks()* | +| 4 | Access to the pave blocks of interfered edge (PBi1, PBi2…PBiNi) for edge *Ei* | *BOPAlgo_PaveFiller::PerformEF()* | +| 5 | Compute shrunk data for pave blocks (in terms of @ref occt_algorithms_4_4 "Pave, PaveBlock and CommonBlock") if it is necessary. | *BOPAlgo_PaveFiller::FillShrunkData()* | +| 6 | Compute Edge/Face interference for pave block *PBix*, and face *nFj*. The result of the computation is a set of objects of type *IntTools_CommonPart* | *IntTools_EdgeFace* | +| 7.1 | For each *CommonPart* of type *VERTEX:* Create new vertices *VNi (i=1, 2…,NbVN),* where *NbVN* is the number of new vertices. Merge vertices *VNi* as follows: a) create new object *PFn* of type *BOPAlgo_PaveFiller* with its own DS; b) use new vertices *VNi (i=1, 2…,NbVN), NbVN* as arguments (in terms of *TopoDs_Shape*) of *PFn*; c) invoke method *Perform()* for *PFn*. The resulting vertices *VNXi (i=1, 2…,NbVNX)*, where *NbVNX* is the number of vertices, are obtained via mapping between *VNi* and the results of *PVn*. | *BOPTools_Tools::MakeNewVertex()* and *BOPAlgo_PaveFiller::PerformVertices1()* | +| 7.2 | For each *CommonPart* of type *EDGE:* Create common blocks (CBc. C=0, 1…nCs) from pave blocks that lie on the faces. Attach the common blocks to the pave blocks. | *BOPAlgo_Tools::PerformCommonBlocks()* | +| 8 | Post-processing. Append the paves of *VNXi* into the corresponding pave blocks in terms of @ref occt_algorithms_4_4 "Pave, PaveBlock and CommonBlock". | *BOPDS_PaveBlock:: AppendExtPave()* | +| 9 | Split pave blocks and common blocks *CBc* by the paves. | *BOPAlgo_PaveFiller::PerformVertices1()*, *BOPDS_DS:: UpdatePaveBlock()* and *BOPDS_DS:: UpdateCommonBlock()* | +| 10 | Append Edge/Face interferences in the DS | *BOPDS_DS::AddInterf()* | +| 11 | Update *FaceInfo* for all faces having EF common parts. | *BOPDS_DS:: UpdateFaceInfoIn()* | + + +@subsection occt_algorithms_5_8 Build Split Edges + +The input data for this step is the DS after computing Edge/Face Interferences. + +For each pave block *PB* take the following steps: + +| No | Contents | Implementation | +| :--- | :--- | :--- | +| 1 | Get the real pave block *PBR*, which is equal to *PB* if *PB* is not a common block and to *PB1* if *PB* is a common block. *PB1* is the first pave block in the pave blocks list of the common block. See @ref occt_algorithms_4_4 "Pave, PaveBlock and CommonBlock". | *BOPAlgo_PaveFiller::MakeSplitEdges()* | +| 2 | Build the split edge *Esp* using the information from *DS* and *PBR*. | *BOPTools_Tools::MakeSplitEdge()* | +| 3 | Compute *BOPDS_ShapeInfo* contents for Esp | *BOPAlgo_PaveFiller::MakeSplitEdges()* | +| 4 | Append *BOPDS_ShapeInfo* contents to the DS | *BOPDS_DS::Append()* | + +@subsection occt_algorithms_5_9 Compute Face/Face Interferences + +The input data for this step is DS after building Split Edges. + +| No | Contents | Implementation | +| :--- | :--- | :--- | +| 1 | Initialize array of Edge/Face interferences | *BOPAlgo_PaveFiller::PerformFF()* | +| 2 | Access to the pairs of interfered shapes (nFi, nFj)k, k=0, 1…nk, where *nFi* is DS index of edge *Fi*, *nFj* is DS index of face *Fj* and *nk* is the number of pairs. | *BOPDS_Iterator* | +| 3 | Compute Face/Face interference | *IntTools_FaceFace* | +| 4 | Append Face/Face interferences in the DS. | *BOPDS_DS::AddInterf()* | + +@subsection occt_algorithms_5_10 Build Section Edges + +The input data for this step is the DS after building Split Edges. + +| No | Contents | Implementation | +| :---- | :---- | :---- | +| 1 | For each Face/Face interference *nFi, nFj*, retrieve @ref occt_algorithms_4_6 "FaceInfo". Create draft vertices from intersection points *VPk (k=1, 2…, NbVP)*, where *NbVP* is the number of new vertices, and the draft vertex *VPk* is created from an intersection point if *VPk ≠ Vm (m = 0, 1, 2… NbVm)*, where *Vm* is an existing vertex for the faces *nFi* and *nF,j* (*On* or *In* in terms of *TopoDs_Shape*), *NbVm* is the number of vertices existing on faces *nFi* and *nF,j* and ≠ - means non-coincidence in terms of @ref occt_algorithms_3_1_1 "Vertex/Vertex interference". | *BOPAlgo_PaveFiller::MakeBlocks()* | +| 2 | For each intersection curve *Cijk* | | +| 2.1 | Create paves PVc for the curve using existing vertices, i.e. vertices On or In (in terms of *FaceInfo*) for faces *nFi* and *nFj*. Append the paves *PVc* | *BOPAlgo_PaveFiller::PutPaveOnCurve()* and *BOPDS_PaveBlock::AppendExtPave()* | +| 2.2 | Create technological vertices *Vt*, which are the bounding points of an intersection curve (with the value of tolerance *Tol(Cijk)*). Each vertex *Vt* with parameter *Tt* on curve *Cijk* forms pave *PVt* on curve *Cijk*. Append technological paves. | *BOPAlgo_PaveFiller::PutBoundPaveOnCurve()* | +| 2.3 | Create pave blocks *PBk* for the curve using paves (k=1, 2…, NbPB), where *NbPB* is the number of pave blocks | *BOPAlgo_PaveFiller::MakeBlocks()* | +| 2.4 | Build draft section edges *ESk* using the pave blocks (k=1, 2…, NbES), where *NbES* is the number of draft section edges The draft section edge is created from a pave block *PBk* if *PBk* has state *In* or *On* for both faces *nFi* and *nF,j* and *PBk ≠ PBm (m=0, 1, 2… NbPBm)*, where *PBm* is an existing pave block for faces *nFi* and *nF,j* (*On* or *In* in terms of *FaceInfo*), *NbVm* is the number of existing pave blocks for faces *nFi* and *nF,j* and ≠ - means non-coincidence (in terms of @ref occt_algorithms_3_1_3 "Vertex/Face interference"). | *BOPTools_Tools::MakeEdge()* | +| 3 | Intersect the draft vertices *VPk (k=1, 2…, NbVP)* and the draft section edges *ESk (k=1, 2…, NbES)*. For this: a) create new object *PFn* of type *BOPAlgo_PaveFiller* with its own DS; b) use vertices *VPk* and edges *ESk* as arguments (in terms of @ref occt_algorithms_4_1 "Arguments") of *PFn*; c) invoke method *Perform()* for *PFn*. Resulting vertices *VPXk (k=1, 2… NbVPX)* and edges *ESXk (k=1, 2… NbESX)* are obtained via mapping between *VPk, ESk* and the results of *PVn*. | *BOPAlgo_PaveFiller::PostTreatFF()* | +| 4 | Update face info (sections about pave blocks and vertices) | *BOPAlgo_PaveFiller::PerformFF()* | + +@subsection occt_algorithms_5_11 Build P-Curves +The input data for this step is the DS after building section edges. + +| No | Contents | Implementation | +| :---- | :---- | :---- | +| 1 | For each Face/Face interference *nFi* and *nFj* build p-Curves on *nFi* and *nFj* for each section edge *ESXk*. | *BOPAlgo_PaveFiller::MakePCurves()* | +| 2 | For each pave block that is common for faces *nFi* and *nFj* build p-Curves on *nFi* and *nFj*. | *BOPAlgo_PaveFiller::MakePCurves()* | + +@subsection occt_algorithms_5_12 Process Degenerated Edges +The input data for this step is the DS after building P-curves. + +| No | Contents | Implementation | +| :---- | :---- | :---- | +| | For each degenerated edge *ED* having vertex *VD* | BOPAlgo_PaveFiller::ProcessDE() | +| 1 | Find pave blocks *PBi (i=1,2… NbPB)*, where *NbPB* is the number of pave blocks, that go through vertex *VD*. | *BOPAlgo_PaveFiller::FindPaveBlocks()* | +| 2 | Compute paves for the degenerated edge *ED* using a 2D curve of *ED* and a 2D curve of *PBi*. Form pave blocks *PBDi (i=1,2… NbPBD)*, where *NbPBD* is the number of the pave blocks for the degenerated edge *ED* | *BOPAlgo_PaveFiller::FillPaves()* | +| 3 | Build split edges *ESDi (i=1,2…NbESD)*, where *ESD* is the number of split edges, using the pave blocks *PBDi* | *BOPAlgo_PaveFiller:: MakeSplitEdge()* | + +@section occt_algorithms_6 General description of the Building Part + +Building Part (BP) is used to +* Build the result of the operation +* Provide history information (in terms of \::Generated(), \::Modified() and \::IsDeleted()) +BP uses the DS prepared by *BOPAlgo_PaveFiller* described at chapter 5 as input data. +BP is implemented in the following classes: +* *BOPAlgo_Builder* - for the General Fuse Algorithm (GFA). +* *BOPAlgo_BOP* - for the Boolean Operation Algorithm (BOA). + +@figure{/user_guides/boolean_operations/images/operations_image020.svg, "Diagram for BP classes"} + +The class *BOPAlgo_Algo* provides the base interface for all algorithms: +* Error status; +* Warning status; +* Checking data; +* Checking the result; +* Memory allocator. +The class *BOPAlgo_BuilderShape* provides the interface for algorithms that have: +* A Shape as the result; +* History information (in terms of \::Generated(), \::Modified() and \::IsDeleted()). + +@section occt_algorithms_7 General Fuse Algorithm +@subsection occt_algorithms_7_1 Arguments +The arguments of the algorithm are shapes (in terms of *TopoDS_Shape*). The main requirements for the arguments are described in @ref occt_algorithms_4_1 "Algorithms" chapter. + +@subsection occt_algorithms_7_2 Results + +During the operation argument *Si* can be split into several parts *Si1, Si2… Si1NbSp*, where *NbSp* is the number of parts. The set (Si1, Si2… Si1NbSp) is an image of argument *Si*. +* The result of the General Fuse (GF) operation is a compound. Each sub-shape of the compound (resulting shape) corresponds to the certain argument shape S1, S2…Sn and has shared sub-shapes in accordance with interferences between the arguments. +* For the arguments of the type EDGE, FACE, SOLID the result contains split parts of the argument. +* For the arguments of the type WIRE, SHELL, COMPSOLID, COMPOUND the result contains the image of the shape of the corresponding type (i.e. WIRE, SHELL, COMPSOLID or COMPOUND). +The types of resulting shapes depend on the type of the corresponding argument participating in the operation. See the table below: + +| No | Type of argument | Type of resulting shape | Comments | +| :--- | :---- | :--- | :--- | +| 1 | COMPOUND | COMPOUND | The resulting COMPOUND is built from images of sub-shapes of type COMPOUND COMPSOLID, SHELL, WIRE and VERTEX. Sets of split sub-shapes of type SOLID, FACE, EDGE. | +| 2 | COMPSOLID | COMPSOLID | The resulting COMPSOLID is built from split SOLIDs. | +| 3 | SOLID | Set of split SOLIDs | | +| 4 | SHELL | SHELL | The resulting SHELL is built from split FACEs | +| 5 | FACE | Set of split FACEs | | +| 6 | WIRE | WIRE | The resulting WIRE is built from split EDGEs | +| 7 | EDGE | Set of split EDGEs | | +| 8 | VERTEX | VERTEX | | + +@subsection occt_algorithms_7_3 Examples + +Please, have a look at the examples of compounds, which can help to better understand the definitions. + +@subsubsection occt_algorithms_7_3_1 Example 1: Three edges intersecting at a point + +Let us consider three edges: *E1, E2* and *E3* that intersect in one 3D point. + +@figure{/user_guides/boolean_operations/images/operations_image021.svg, "Three Intersecting Edges"} + +The result of the GFA operation is a compound containing 6 new edges: *E11, E12, E21, E22, E31*, and *E32*. These edges have one shared vertex *Vn1*. + +In this case: +* The argument edge *E1* has resulting split edges *E11* and *E12* (image of *E1*). +* The argument edge *E2* has resulting split edges *E21* and *E22* (image of *E2*). +* The argument edge *E3* has resulting split edges *E31* and *E32* (image of *E3*). + +@subsubsection occt_algorithms_7_3_2 Example 2: Two wires and an edge + +Let us consider two wires *W1 (Ew11, Ew12, Ew13)* and *W2 (Ew21, Ew22, Ew23)* and edge *E1*. + +@figure{/user_guides/boolean_operations/images/operations_image022.svg, "Two wires and an edge"} + +The result of the GF operation is a compound consisting of 2 wires: *Wn1 (Ew11, En1, En2, En3, Ew13)* and *Wn2 (Ew21, En2, En3, En4, Ew23)* and two edges: *E11* and *E12*. + +In this case : +* The argument *W1* has image *Wn1*. +* The argument *W2* has image *Wn2*. +* The argument edge *E1* has split edges *E11* and *E12*. (image of *E1*). +The edges *En1, En2, En3, En4* and vertex *Vn1* are new shapes created during the operation. Edge *Ew12* has split edges *En1, En2* and *En3* and edge *Ew22* has split edges *En2, En3* and *En4*. + +@subsubsection occt_algorithms_7_3_3 Example 3: An edge intersecting with a face + +Let us consider edge *E1* and face *F2*: + +@figure{/user_guides/boolean_operations/images/operations_image023.svg, "An edge intersecting with a face"} + +The result of the GF operation is a compound consisting of 3 shapes: +* Split edge parts *E11* and *E12* (image of *E1*). +* New face *F21* with internal edge *E12* (image of *F2*). + +@subsubsection occt_algorithms_7_3_4 Example 4: An edge lying on a face + +Let us consider edge *E1* and face *F2*: + +@figure{/user_guides/boolean_operations/images/operations_image024.svg, "An edge lying on a face"} + +The result of the GF operation is a compound consisting of 5 shapes: +* Split edge parts *E11, E12* and *E13* (image of *E1*). +* Split face parts *F21* and *F22* (image of *F2*). + + +@subsubsection occt_algorithms_7_3_5 Example 5: An edge and a shell + +Let us consider edge *E1* and shell *Sh2* that consists of 2 faces: *F21* and *F22* + +@figure{/user_guides/boolean_operations/images/operations_image025.svg, "An edge and a shell"} + +The result of the GF operation is a compound consisting of 5 shapes: +* Split edge parts *E11, E12 , E13* and *E14* (image of *E1*). +* Image shell *Sh21* (that contains split face parts *F211, F212, F221* and *F222*). + +@subsubsection occt_algorithms_7_3_6 Example 6: A wire and a shell + +Let us consider wire *W1 (E1, E2, E3, E4)* and shell *Sh2 (F21, F22)*. +@figure{/user_guides/boolean_operations/images/operations_image026.svg, "A wire and a shell"} + +The result of the GF operation is a compound consisting of 2 shapes: + +* Image wire *W11* that consists of split edge parts from wire *W1: E11, E12, E13* and *E14*. +* Image shell *Sh21* that contains split face parts: *F211, F212, F213, F221, F222* and *F223*. + +@subsubsection occt_algorithms_7_3_7 Example 7: Three faces + +Let us consider 3 faces: *F1, F2* and *F3*. @figure{/user_guides/boolean_operations/images/operations_image027.png, "Three faces"} + +The result of the GF operation is a compound consisting of 7 shapes: +* Split face parts: *Fn1, Fn2, Fn3, Fn4, Fn5, Fn6* and *Fn7*. + +@subsubsection occt_algorithms_7_3_8 Example 8: A face and a shell + +Let us consider shell *Sh1 (F11, F12, F13)* and face *F2*. +@figure{/user_guides/boolean_operations/images/operations_image028.png, "A face and a shell"} + +The result of the GF operation is a compound consisting of 4 shapes: +* Image shell *Sh11* that consists of split face parts from shell *Sh1: Fn1, Fn2, Fn3, Fn4, Fn5* and *Fn6*. +* Split parts of face *F2: Fn3, Fn6* and *Fn7*. + +@subsubsection occt_algorithms_7_3_9 Example 9: A shell and a solid + +Let us consider shell *Sh1 (F11, F12…F16)* and solid *So2*. @figure{/user_guides/boolean_operations/images/operations_image029.png, "A shell and a solid: arguments"} + +The result of the GF operation is a compound consisting of 2 shapes: +* Image shell *Sh11* consisting of split face parts of *Sh1: Fn1, Fn2 ... Fn8.* +* Solid *So21* with internal shell. (image of *So2*). +@figure{/user_guides/boolean_operations/images/operations_image030.png, "A shell and a solid: results"} + +@subsubsection occt_algorithms_7_3_10 Example 10: A compound and a solid + +Let us consider compound *Cm1* consisting of 2 solids *So11* and *So12*) and solid *So2*. +@figure{/user_guides/boolean_operations/images/operations_image031.png, "A compound and a solid: arguments"} + +The result of the GF operation is a compound consisting of 4 shapes: +* Image compound *Cm11* consisting of split solid parts from *So11* and *So12 (Sn1, Sn2, Sn3, Sn4)*. +* Split parts of solid *So2 (Sn2, Sn3, Sn5)*. + +@figure{/user_guides/boolean_operations/images/operations_image032.png, "A compound and a solid: results"} + +@subsection occt_algorithms_7_4 Class BOPAlgo_Builder + +GFA is implemented in the class *BOPAlgo_Builder*. + +@subsubsection occt_algorithms_7_4_1 Fields + +The main fields of the class are described in the Table: + +| Name | Contents | +| :---- | :---- | +| *myPaveFiller* | Pointer to the *BOPAlgo_PaveFiller* object | +| *myDS* | Pointer to the *BOPDS_DS* object | +| *myContext* | Pointer to the intersection Context | +| *myImages* | The Map between the source shape and its images | +| *myShapesSD* | The Map between the source shape (or split part of source shape) and the shape (or part of shape) that will be used in result due to same domain property. | + +@subsubsection occt_algorithms_7_4_2 Initialization + +The input data for this step is a *BOPAlgo_PaveFiller* object (in terms of @ref occt_algorithms_5 "Intersection") at the state after @ref occt_algorithms_5_12 "Processing of degenerated edges" with the corresponding DS. + +| No | Contents | Implementation | +| :---- | :---- | :---- | +| 1 | Check the readiness of the DS and *BOPAlgo_PaveFiller*. | *BOPAlgo_Builder::CheckData()* | +| 2 | Build an empty result of type Compound. | *BOPAlgo_Builder::Prepare()* | + +@subsubsection occt_algorithms_7_4_3 Build Images for Vertices + +The input data for this step is *BOPAlgo_Builder* object after Initialisation. + +| No | Contents | Implementation | +| :--- | :--- | :--- | +| 1 | Fill *myShapesSD* by SD vertices using the information from the DS. | *BOPAlgo_Builder::FillImagesVertices()* | + +@subsubsection occt_algorithms_7_4_4 Build Result of Type Vertex + +The input data for this step is *BOPAlgo_Builder* object after building images for vertices and *Type*, which is the shape type (*TopAbs_VERTEX*). + +| No | Contents | Implementation | +| :--- | :--- | :----- | +| 1 | For the arguments of type *Type*. If there is an image for the argument: add the image to the result. If there is no image for the argument: add the argument to the result. | *BOPAlgo_Builder::BuildResult()* | + +@subsubsection occt_algorithms_7_4_5 Build Images for Edges + +The input data for this step is *BOPAlgo_Builder object* after building result of type vertex. + +| No | Contents | Implementation | +| :---- | :---- | :----- | +| 1 | For all pave blocks in the DS. Fill *myImages* for the original edge *E* by split edges *ESPi* from pave blocks. In case of common blocks on edges, use edge *ESPSDj* that corresponds to the leading pave block and fill *myShapesSD* by the pairs *ESPi/ESPSDj*. | *BOPAlgo_Builder::FillImagesEdges()* | + +@subsubsection occt_algorithms_7_4_6 Build Result of Type Edge + +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex", but for the type *Edge*. + +@subsubsection occt_algorithms_7_4_7 Build Images for Wires + +The input data for this step is: +* *BOPAlgo_Builder* object after building result of type *Edge*; +* Original Shape - Wire +* *Type* - the shape type (TopAbs_WIRE). + +| No | Contents | Implementation | +| :---- | :---- | :----- | +| 1 | For all arguments of the type *Type*. Create a container C of the type *Type*. | *BOPAlgo_Builder::FillImagesContainers()* | +| 2 | Add to C the images or non-split parts of the *Original Shape*, taking into account its orientation. | *BOPAlgo_Builder::FillImagesContainers()* *BOPTools_Tools::IsSplitToReverse()* | +| 3 | Fill *myImages* for the *Original Shape* by the information above. | *BOPAlgo_Builder::FillImagesContainers()* | + +@subsubsection occt_algorithms_7_4_8 Build Result of Type Wire + +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex" but for the type *Wire*. + +@subsubsection occt_algorithms_7_4_9 Build Images for Faces + +The input data for this step is *BOPAlgo_Builder* object after building result of type *Wire*. + +| No | Contents | Implementation | +| :--- | :--- | :--- | +| 1 | Build Split Faces for all interfered DS shapes *Fi* of type *FACE*. | | +| 1.1 | Collect all edges or their images of *Fi(ESPij)*. | *BOPAlgo_Builder::BuildSplitFaces()* | +| 1.2 | Impart to ESPij the orientation to be coherent with the original one. | *BOPAlgo_Builder::BuildSplitFaces()* | +| 1.3 | Collect all section edges *SEk* for *Fi*. | *BOPAlgo_Builder::BuildSplitFaces()* | +| 1.4 | Build split faces for *Fi (Fi1, Fi2…FiNbSp)*, where *NbSp* is the number of split parts (see @ref occt_algorithms_7_2 "Building faces from a set of edges" for more details). | *BOPAlgo_BuilderFace* | +| 1.5 | Impart to (Fi1, Fi2…FiNbSp) the orientation coherent with the original face *Fi*. | *BOPAlgo_Builder::BuildSplitFaces()* | +| 1.6 | Fill the map mySplits with *Fi/(Fi1, Fi2…FiNbSp)* | *BOPAlgo_Builder::BuildSplitFaces()* | +| 2 | Fill Same Domain faces | *BOPAlgo_Builder::FillSameDomainFaces* | +| 2.1 | Find and collect in the contents of *mySplits* the pairs of same domain split faces (Fij, Fkl)m, where *m* is the number of pairs. | *BOPAlgo_Builder::FillSameDomainFaces* *BOPTools_Tools::AreFacesSameDomain()* | +| 2.2 | Compute the connexity chains 1) of same domain faces (F1C, F2C… FnC)k, C=0, 1…nCs, where *nCs* is the number of connexity chains. | *BOPAlgo_Builder::FillSameDomainFaces()* | +| 2.3 | Fill *myShapesSD* using the chains (F1C, F2C… FnC)k | *BOPAlgo_Builder::FillSameDomainFaces()* | +| 2.4 | Add internal vertices to split faces. | *BOPAlgo_Builder::FillSameDomainFaces()* | +| 2.5 | Fill *myImages* using *myShapesSD* and *mySplits*. | *BOPAlgo_Builder::FillSameDomainFaces()* | + + +The example of chains of same domain faces is given in the image: + +@figure{/user_guides/boolean_operations/images/operations_image033.svg, "Chains of same domain faces"} + +* The pairs of same domain faces are: (F11, F21), (F22, F31), (F41, F51) , (F41, F6) and (F51, F6). +* The pairs produce the three chains: (F11, F21), (F22, F31) and (F41, F51, F6). + +@subsubsection occt_algorithms_7_4_10 Build Result of Type Face +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex" but for the type *Face*. + +@subsubsection occt_algorithms_7_4_11 Build Images for Shells +The input data for this step is: +* *BOPAlgo_Builder* object after building result of type face; +* *Original Shape* - Shell; +* *Type* - the type of the shape (TopAbs_SHELL). + +The procedure is the same as for building images for wires. + +@subsubsection occt_algorithms_7_4_12 Build Result of Type Shell +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex" but for the type *Shell*. + +@subsubsection occt_algorithms_7_4_13 Build Images for Solids + +The input data for this step is *BOPAlgo_Builder* object after building result of type *Shell*. + +The following procedure is executed for all interfered DS shapes *Si* of type *SOLID*. + +| No | Contents | Implementation | +| :--- | :--- | :--- | +| 1 | Collect all images or non-split parts for all faces (FSPij) that have 3D state *In Si*. | *BOPAlgo_Builder::FillIn3DParts ()* | +| 2 | Collect all images or non-split parts for all faces of *Si* | *BOPAlgo_Builder::BuildSplitSolids()* | +| 3 | Build split solids for *Si -> (Si1, Si2…SiNbSp)*, where *NbSp* is the number of split parts (see @ref occt_algorithms_7_2 "Building faces from a set of edges" for more details) | *BOPAlgo_BuilderSolid* | +| 4 | Fill the map Same Domain solids *myShapesSD* | *BOPAlgo_Builder::BuildSplitSolids()* | +| 5 | Fill the map *myImages* | *BOPAlgo_Builder::BuildSplitSolids()* | +| 6 | Add internal vertices to split solids | *BOPAlgo_Builder::FillInternalShapes()* | + +@subsubsection occt_algorithms_7_4_14 Build Result of Type Solid +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex", but for the type Solid. + +@subsubsection occt_algorithms_7_4_15 Build Images for Type CompSolid + +The input data for this step is: +* *BOPAlgo_Builder* object after building result of type solid; +* *Original Shape* - Compsolid; +* *Type* - the type of the shape (TopAbs_COMPSOLID). + +The procedure is the same as for building images for wires. + +@subsubsection occt_algorithms_7_4_16 Build Result of Type Compsolid +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex", but for the type Compsolid. + +@subsubsection occt_algorithms_7_4_17 Build Images for Compounds +The input data for this step is as follows: +* *BOPAlgo_Builder* object after building results of type compsolid; +* *Original Shape* - Compound; +* *Type* - the type of the shape (TopAbs_COMPOUND). + +The procedure is the same as for building images for wires. + +@subsubsection occt_algorithms_7_4_18 Build Result of Type Compound + +This step is the same as @ref occt_algorithms_7_4_4 "Building Result of Type Vertex", but for the type Compound. + +@subsubsection occt_algorithms_7_4_19 Post-Processing +The purpose of the step is to correct tolerances of the result to provide its validity in terms of *BRepCheck_Analyzer.* + +The input data for this step is a *BOPAlgo_Builder* object after building result of type compound. + +| No | Contents | Implementation | +| :---- | :---- | :----- | +| 1 | Correct tolerances of vertices on curves | *BOPTools_Tools::CorrectPointOnCurve()* | +| 2 | Correct tolerances of edges on faces | *BOPTools_Tools::CorrectCurveOnSurface()* | + + +@section occt_algorithms_9 Boolean Operations Algorithm + +@subsection occt_algorithms_9_1 Arguments + +* The arguments of BOA are shapes in terms of *TopoDS_Shape*. The main requirements for the arguments are described in @ref occt_algorithms_4_1 "Algorithms" +* There are only two arguments in BOA @ref occt_algorithms_2_1 "Operators": + * Object (S1); + * Tool (S2). +* Each argument should contain objects of a single dimension (see the Table). + +| No | Type of Argument | Index of Type | Dimension | +| :---- | :---- | :----- | :---- | +| 1 | COMPOUND | 0 | One of 0, 1, 2, 3 | +| 2 | COMPSOLID | 1 | 3 | +| 3 | SOLID | 2 | 3 | +| 4 | SHELL | 3 | 2 | +| 5 | FACE | 4 | 2 | +| 6 | WIRE | 5 | 1 | +| 7 | EDGE | 6 | 1 | +| 8 | VERTEX | 7 | 0 | + +* For Boolean operation Fuse the arguments should have equal dimensions. +* For Boolean operation Cut the dimension of *S1* should not be less then the dimension of *S2*. + +@subsection occt_algorithms_9_2 Results + +During the operation the argument *Si* can be spited into parts *Si1, Si2 ... Si1NbSp*, where *NbSp* is the number of parts. The set (Si1, Si2… Si1NbSp) is an image of the argument *Si*. + +@subsection occt_algorithms_9_3 General Rules + +* The result of the BOA operation is a compound (if defined). Each sub-shape of the compound corresponds to the concrete argument *S1* and *S2* and has shared sub-shapes in accordance with interferences between the arguments. +* The content of the result depends on the type of the operation (Common, Fuse, Cut12, Cut21) and the dimensions of the arguments. +* The result of the operation Fuse is defined for arguments *S1* and *S2* that have the same dimension value : *Dim(S1)=Dim(S2)*. If the arguments have different dimension values the result of the operation Fuse is not defined. The dimension of the result is equal to the dimension of the arguments. For example, it is impossible to fuse an edge and a face. +* The result of the operation Fuse for arguments *S1* and *S2* contains the parts of arguments that have states **OUT** relative to the opposite arguments. +* The result of the operation Fuse for arguments *S1* and *S2* having dimension value 3 (Solids) is refined by removing all possible internal faces to provide minimal number of solids. +* The result of the operation Common for arguments *S1* and *S2* is defined for all values of the dimensions of the arguments. The dimension of the result is equal to the lower dimension of the arguments. For example, the result of the operation Common between edges can not be a vertex. +* The result of the operation Common for the arguments *S1* and *S2* contains the parts of the argument that have states **IN** and **ON** relative to the opposite argument. +* The result of the operation *Cut12[Cut21]* is defined for arguments *S1* and *S2* that have values of dimensions *Dim(S1)≤Dim(S2) [Dim(S1)≥Dim(S2)]*. The dimension of the result is equal to the lower dimension of the arguments. The result of the operation *Cut12[Cut21]* is not defined for other cases. For example, it is impossible to cut a solid from an edge, because such shape type as a solid without an edge is not defined. +* The result of the operation *Cut12* for arguments *S1* and *S2* contains the parts of argument *S1* that have state **OUT** relative to the opposite argument *S2*. +* The result of the operation *Cut21* for arguments *S1* and *S2* contains the parts of argument *S2* that have state **OUT** relative to the opposite argument *S1*. + +@subsection occt_algorithms_9_4 Examples + +@subsubsection occt_algorithms_9_4_1 Case 1: Two Vertices + +Let us consider two interfering vertices *V1* and *V2*: + +@figure{/user_guides/boolean_operations/images/boolean_image001.svg} + +* The result of *Fuse* operation is the compound that contains new vertex *V*. + +@figure{/user_guides/boolean_operations/images/boolean_image002.svg} + +* The result of *Common* operation is a compound containing new vertex *V*. +This compound is identical to the result of *Fuse* operation. + +* The result of *Cut12* operation is an empty compound. +* The result of *Cut21* operation is an empty compound. + +@subsubsection occt_algorithms_9_4_2 Case 2: A Vertex and an Edge + +Let us consider vertex *V1* and the edge *E2*, that intersect in a 3D point: + +@figure{/user_guides/boolean_operations/images/boolean_image004.png} + +* The result of *Fuse* operation is result is not defined because the dimension of the vertex (0) is not equal to the dimension of the edge (1). + +* The result of *Common* operation is a compound containing a new vertex *V1* as the argument *V1* has a common part with edge *E2*. + +@figure{/user_guides/boolean_operations/images/boolean_image005.png} + +* The result of *Cut12* operation is an empty compound. +* The result of *Cut21* operation is not defined because the dimension of the vertex (0) is less than the dimension of the edge (1). + +@subsubsection occt_algorithms_9_4_3 Case 3: A Vertex and a Face + +Let us consider vertex *V1* and face *F2*, that intersect in a 3D point: + +@figure{/user_guides/boolean_operations/images/boolean_image006.png} + +* The result of *Fuse* operation is not defined because the dimension of the vertex (0) is not equal to the dimension of the face (2). + +* The result of *Common* operation is a compound containing a new vertex *V1* as the argument *V1* has a common part with face *F2*. + +@figure{/user_guides/boolean_operations/images/boolean_image007.png} + +* The result of *Cut12* operation is an empty compound. +* The result of *Cut21* operation is not defined because the dimension of the vertex (0) is less than the dimension of the face (2). + +@subsubsection occt_algorithms_9_4_4 Case 4: A Vertex abd a Solid + +Let us consider vertex *V1* and solid *S2*, that intersect in a 3D point: + +@figure{/user_guides/boolean_operations/images/boolean_image008.png} + +* The result of *Fuse* operation is not defined because the dimension of the vertex (0) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is a compound containing a new vertex *V1* as the argument *V1* has a common part with solid *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image009.png} + +* The result of *Cut12* operation is an empty compound. +* The result of *Cut21* operation is not defined because the dimension of the vertex (0) is less than the dimension of the solid (3). + +@subsubsection occt_algorithms_9_4_5 Case 5: Two edges intersecting at one point + +Let us consider edges *E1* and *E2*, that intersect in a 3D point: + +@figure{/user_guides/boolean_operations/images/boolean_image010.svg} + +* The result of *Fuse* operation is a compound containing split parts of arguments i.e. 4 new edges *E11, E12, E21*, and *E22*. These edges have one shared vertex *Vn1*. +In this case: + * argument edge *E1* has resulting split edges *E11* and *E12* (image of *E1*); + * argument edge *E2* has resulting split edges *E21* and *E22* (image of *E2*). + +@figure{/user_guides/boolean_operations/images/boolean_image011.svg} + +* The result of *Common* operation is an empty compound because the dimension (0) of the common part between the edges (vertex) is less than the dimension of the arguments (1). + +* The result of *Cut12* operation is a compound containing split parts of the argument *E1*, i.e. 2 new edges *E11* and *E12*. These edges have one shared vertex *Vn1*. + +In this case the argument edge *E1* has resulting split edges *E11* and *E12 (image of *E1*). + +@figure{/user_guides/boolean_operations/images/boolean_image012.svg} + +* The result of *Cut21* operation is a compound containing split parts of the argument *E2*, i.e. 2 new edges *E21* and *E12*. These edges have one shared vertex *Vn1*. + +In this case the argument edge *E2* has resulting split edges *E21* and *E22* (image of *E2*). + +@figure{/user_guides/boolean_operations/images/boolean_image013.svg} + +@subsubsection occt_algorithms_9_4_6 Case 6: Two edges having a common block + +Let us consider edges *E1* and *E2*, that have a common block: + +@figure{/user_guides/boolean_operations/images/boolean_image014.svg} + +* The result of *Fuse* operation is a compound containing split parts of arguments i.e. 3 new edges *E11, E12 and *E22*. These edges have two shared vertices. +In this case: + * argument edge *E1* has resulting split edges *E11* and *E12* (image of *E1*); + * argument edge *E2* has resulting split edges *E21* and *E22* (image of *E2*); + * edge *E12* is common for the images of *E1* and *E2*. + +@figure{/user_guides/boolean_operations/images/boolean_image015.svg} + +* The result of *Common* operation is an empty compound containing split parts of arguments i.e. 1 new edge *E12*. In this case edge *E12* is common for the images of *E1* and *E2*. +The common part between the edges (edge) has the same dimension (1) as the dimension of the arguments (1). + +@figure{/user_guides/boolean_operations/images/boolean_image016.svg} + +* The result of *Cut12* operation is a compound containing a split part of argument *E1*, i.e. new edge *E11*. + +@figure{/user_guides/boolean_operations/images/boolean_image017.svg} + +* The result of *Cut21* operation is a compound containing a split part of argument *E2*, i.e. new edge *E22*. + +@figure{/user_guides/boolean_operations/images/boolean_image018.svg} + + +@subsubsection occt_algorithms_9_4_7 Case 7: An Edge and a Face intersecting at a point + +Let us consider edge *E1* and face *F2*, that intersect at a 3D point: + +@figure{/user_guides/boolean_operations/images/boolean_image019.png} + +* The result of *Fuse* operation is not defined because the dimension of the edge (1) is not equal to the dimension of the face (2). + +* The result of *Common* operation is an empty compound because the dimension (0) of the common part between the edge and face (vertex) is less than the dimension of the arguments (1). + +* The result of *Cut12* operation is a compound containing split parts of the argument *E1*, i.e. 2 new edges *E11* and *E12*. + +In this case the argument edge *E1* has no common parts with the face *F2* so the whole image of *E1* is in the result. + +@figure{/user_guides/boolean_operations/images/boolean_image020.png} + +* The result of *Cut21* operation is not defined because the dimension of the edge (1) is less than the dimension of the face (2). + +@subsubsection occt_algorithms_9_4_8 Case 8: A Face and an Edge that have a common block + +Let us consider edge *E1* and face *F2*, that have a common block: + +@figure{/user_guides/boolean_operations/images/boolean_image021.png} + +* The result of *Fuse* operation is not defined because the dimension of the edge (1) is not equal to the dimension of the face (2). + +* The result of *Common* operation is a compound containing a split part of the argument *E1*, i.e. new edge *E12*. + +In this case the argument edge *E1* has a common part with face *F2* so the corresponding part of the image of *E1* is in the result. The yellow square is not a part of the result. It only shows the place of *F2*. + +@figure{/user_guides/boolean_operations/images/boolean_image022.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *E1*, i.e. new edge *E11*. + +In this case the argument edge *E1* has a common part with face *F2* so the corresponding part is not included into the result. The yellow square is not a part of the result. It only shows the place of F2. + +@figure{/user_guides/boolean_operations/images/boolean_image023.png} + +* The result of *Cut21* operation is not defined because the dimension of the edge (1) is less than the dimension of the face (2). + +@subsubsection occt_algorithms_9_4_9 Case 9: An Edge and a Solid intersecting at a point + +Let us consider edge *E1* and solid *S2*, that intersect at a point: + +@figure{/user_guides/boolean_operations/images/boolean_image024.png} + +* The result of *Fuse* operation is not defined because the dimension of the edge (1) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is a compound containing a split part of the argument *E1*, i.e. new edge *E12*. + +In this case the argument edge *E1* has a common part with solid *S2* so the corresponding part of the image of *E1* is in the result. The yellow square is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image025.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *E1*, i.e. new edge *E11*. + +In this case the argument edge *E1* has a common part with solid *S2* so the corresponding part is not included into the result. The yellow square is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image071.png} + +* The result of *Cut21* operation is not defined because the dimension of the edge (1) is less than the dimension of the solid (3). + +@subsubsection occt_algorithms_9_4_10 Case 10: An Edge and a Solid that have a common block + +Let us consider edge *E1* and solid *S2*, that have a common block: + +@figure{/user_guides/boolean_operations/images/boolean_image072.png} + +* The result of *Fuse* operation is not defined because the dimension of the edge (1) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is a compound containing a split part of the argument *E1*, i.e. new edge *E12*. + +In this case the argument edge *E1* has a common part with solid *S2* so the corresponding part of the image of *E1* is in the result. The yellow square is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image073.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *E1*, i.e. new edge *E11*. + +In this case the argument edge *E1* has has a common part with solid *S2* so the corresponding part is not included into the result. The yellow square is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image026.png} + +* The result of *Cut21* operation is not defined because the dimension of the edge (1) is less than the dimension of the solid (3). + +@subsubsection occt_algorithms_9_4_11 Case 11: Two intersecting faces + +Let us consider two intersecting faces *F1* and *F2*: + +@figure{/user_guides/boolean_operations/images/boolean_image027.png} + +* The result of *Fuse* operation is an empty compound containing split parts of arguments i.e. 2 new faces *F11* and *F21*. These faces have one shared edge *En1*. + +@figure{/user_guides/boolean_operations/images/boolean_image028.png} + + +* The result of *Common* operation is an empty compound because the dimension (1) of the common part between *F1* and *F2* (edge) is less than the dimension of arguments (2). + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*, i.e. new face *F11*. + +@figure{/user_guides/boolean_operations/images/boolean_image029.png} + +* The result of *Cut21* operation is a compound containing split parts of the argument *F2*, i.e. 1 new face *F21*. + +@figure{/user_guides/boolean_operations/images/boolean_image030.png} + +@subsubsection occt_algorithms_9_4_12 Case 12: Two faces that have a common part + +Let us consider two faces *F1* and *F2* that have a common planar part: + +@figure{/user_guides/boolean_operations/images/boolean_image031.png} + +* The result of *Fuse* operation is a compound containing split parts of arguments, i.e. 3 new faces: *F11*, *F12* and *F22*. These faces are shared through edges In this case: + * the argument edge *F1* has resulting split faces *F11* and *F12* (image of *F1*) + * the argument face *F2* has resulting split faces *F12* and *F22* (image of *F2*) + * the face *F12* is common for the images of *F1* and *F2*. + +@figure{/user_guides/boolean_operations/images/boolean_image032.png} + +* The result of *Common* operation is a compound containing split parts of arguments i.e. 1 new face *F12*. +In this case: face *F12* is common for the images of *F1* and *F2*. +The common part between the faces (face) has the same dimension (2) as the dimension of the arguments (2). + + +@figure{/user_guides/boolean_operations/images/boolean_image033.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*, i.e. new face *F11*. + +@figure{/user_guides/boolean_operations/images/boolean_image034.png} + +* The result of *Cut21* operation is a compound containing split parts of the argument *F2*, i.e. 1 new face *F21*. + +@figure{/user_guides/boolean_operations/images/boolean_image035.png} + +@subsubsection occt_algorithms_9_4_13 Case 13: Two faces that have a common edge + +Let us consider two faces *F1* and *F2* that have a common edge: + +@figure{/user_guides/boolean_operations/images/boolean_image036.png} + +* The result of *Fuse* operation is a compound containing split parts of arguments, i.e. 2 new faces: *F11* and *F21*. These faces have one shared edge *En1*. + +@figure{/user_guides/boolean_operations/images/boolean_image037.png} + +* The result of *Common* operation is an empty compound because the dimension (1) of the common part between *F1* and *F2* (edge)is less than the dimension of the arguments (2) + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*, i.e. new face *F11*. The vertices are shown just to clarify the fact that the edges are spitted. + +@figure{/user_guides/boolean_operations/images/boolean_image038.png} + +* The result of *Cut21* operation is a compound containing split parts of the argument *F2*, i.e. 1 new face *F21*. The vertices are shown just to clarify the fact that the edges are spitted. + +@figure{/user_guides/boolean_operations/images/boolean_image039.png} + +@subsubsection occt_algorithms_9_4_14 Case 14: Two faces that have a common vertex + +Let us consider two faces *F1* and *F2* that have a common vertex: + +@figure{/user_guides/boolean_operations/images/boolean_image040.png} + +* The result of *Fuse* operation is a compound containing split parts of arguments, i.e. 2 new faces: *F11* and *F21*. These faces have one shared edge *Vn1*. + +@figure{/user_guides/boolean_operations/images/boolean_image041.png} + +* The result of *Common* operation is an empty compound because the dimension (0) of the common part between *F1* and *F2* (vertex) is less than the dimension of the arguments (2) + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*, i.e. new face *F11*. + +@figure{/user_guides/boolean_operations/images/boolean_image042.png} + +* The result of *Cut21* operation is a compound containing split parts of the argument *F2*, i.e. 1 new face *F21*. + +@figure{/user_guides/boolean_operations/images/boolean_image043.png} + + +@subsubsection occt_algorithms_9_4_15 Case 15: A Face and a Solid that have an intersection curve. + +Let us consider face *F1* and solid *S2* that have an intersection curve: + +@figure{/user_guides/boolean_operations/images/boolean_image044.png} + +* The result of *Fuse* operation is not defined because the dimension of the face (2) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is a compound contain split part of the argument *F1*. In this case the argument face *F1* has a common part with solid *S2*, so the corresponding part of the image of *F1* is in the result. The yellow contour is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image045.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*. In this case argument face *F1* has a common part with solid *S2* so the corresponding part is not included into the result. The yellow contour is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image046.png} + +* The result of *Cut21* operation is is not defined because the dimension of the face (2) is less than the dimension of the solid (3). + +@subsubsection occt_algorithms_9_4_16 Case 16: A Face and a Solid that have a common face. + +Let us consider face *F1* and solid *S2* that have a common part on face: + +@figure{/user_guides/boolean_operations/images/boolean_image047.png} + +* The result of *Fuse* operation is not defined because the dimension of the face (2) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is a compound contain split part of the argument *F1*. In this case the argument face *F1* has a common part with solid *S2*, so the corresponding part of the image of *F1* is in the result. The yellow contour is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image048.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*. In this case argument face *F1* has a common part with solid *S2* so the corresponding part is not included into the result. The yellow contour is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image049.png} + +* The result of *Cut21* operation is is not defined because the dimension of the face (2) is less than the dimension of the solid (3). + + +@subsubsection occt_algorithms_9_4_17 Case 17: A Face and a Solid that have a common edge. + +Let us consider face *F1* and solid *S2* that have a common part on edge: + +@figure{/user_guides/boolean_operations/images/boolean_image050.png} + +* The result of *Fuse* operation is not defined because the dimension of the face (2) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is an empty compound because the dimension (1) of the common part between *F1* and *S2* (edge) is less than the lower dimension of the arguments (2). + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*. In this case argument face *F1* has a common part with solid *S2* so the corresponding part is not included into the result. The yellow contour is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image051.png} + +* The result of *Cut21* operation is is not defined because the dimension of the face (2) is less than the dimension of the solid (3). + +@subsubsection occt_algorithms_9_4_18 Case 18: A Face and a Solid that have a common vertex. + +Let us consider face *F1* and solid *S2* that have a common part on vertex: + +@figure{/user_guides/boolean_operations/images/boolean_image052.png} + +* The result of *Fuse* operation is not defined because the dimension of the face (2) is not equal to the dimension of the solid (3). + +* The result of *Common* operation is an empty compound because the dimension (1) of the common part between *F1* and *S2* (vertex) is less than the lower dimension of the arguments (2). + +* The result of *Cut12* operation is a compound containing split part of the argument *F1*. In this case argument face *F1* has a common part with solid *S2* so the corresponding part is not included into the result. The yellow contour is not a part of the result. It only shows the place of *S2*. + +@figure{/user_guides/boolean_operations/images/boolean_image053.png} + +* The result of *Cut21* operation is is not defined because the dimension of the face (2) is less than the dimension of the solid (3). + +@subsubsection occt_algorithms_9_4_19 Case 19: Two intersecting Solids. + +Let us consider two intersecting solids *S1* and *S2*: + +@figure{/user_guides/boolean_operations/images/boolean_image054.png} + +* The result of *Fuse* operation is a compound composed from the split parts of arguments *S11, S12* and *S22* *(Cut12, Common, Cut21)*. All inner webs are removed, so the result is one new solid *R*. + +@figure{/user_guides/boolean_operations/images/boolean_image055.png} + +* The result of *Common* operation is a compound containing split parts of arguments i.e. one new solid *S12*. In this case solid *S12* is common for the images of *S1* and *S2*. The common part between the solids (solid) has the same dimension (3) as the dimension of the arguments (3). The yellow contour is not a part of the result. It only shows the place of *S1*. + +@figure{/user_guides/boolean_operations/images/boolean_image056.png} + +* The result of *Cut12* operation is a compound containing split part of the argument *S1*, i.e. 1 new solid *S11*. + +@figure{/user_guides/boolean_operations/images/boolean_image057.png} + +* The result of *Cut21* operation is a compound containing split part of the argument *S2*, i.e. 1 new solid *S21*. + +@figure{/user_guides/boolean_operations/images/boolean_image058.png} + +@subsubsection occt_algorithms_9_4_20 Case 20: Two Solids that have a shared face. + +Let us consider two solids *S1* and *S2* that have a common part on face: + +@figure{/user_guides/boolean_operations/images/boolean_image059.png} + +* The result of *Fuse* operation is a compound composed from the split parts of arguments *S11, S12* and *S22* *(Cut12, Common, Cut21)*. All inner webs are removed, so the result is one new solid *R*. + +@figure{/user_guides/boolean_operations/images/boolean_image060.png} + +* The result of *Common* operation is an empty compound because the dimension (2) of the common part between *S1* and *S2* (face) is less than the lower dimension of the arguments (3). + +* The result of *Cut12* operation is a compound containing split part of the argument *S1*, i.e. 1 new solid *S11*. + +@figure{/user_guides/boolean_operations/images/boolean_image061.png} + +* The result of *Cut21* operation is a compound containing split part of the argument *S2*, i.e. 1 new solid *S21*. +@figure{/user_guides/boolean_operations/images/boolean_image062.png} + + +@subsubsection occt_algorithms_9_4_21 Case 21: Two Solids that have a shared edge. + +Let us consider two solids *S1* and *S2* that have a shared edge: + +@figure{/user_guides/boolean_operations/images/boolean_image063.png} + +* The result of *Fuse* operation is a compound composed from the split parts of arguments i.e. 2 new solids *S11* and *S21*. These solids have one shared edge *En1*. + +@figure{/user_guides/boolean_operations/images/boolean_image064.png} + +* The result of *Common* operation is an empty compound because the dimension (1) of the common part between *S1* and *S2* (edge) is less than the lower dimension of the arguments (3). + +* The result of *Cut12* operation is a compound containing split part of the argument *S1*. In this case +argument *S1* has a common part with solid *S2* so the corresponding part is not included into the result. + +@figure{/user_guides/boolean_operations/images/boolean_image065.png} + +* The result of *Cut21* operation is a compound containing split part of the argument *S2*. In this case +argument *S2* has a common part with solid *S1* so the corresponding part is not included into the result. +@figure{/user_guides/boolean_operations/images/boolean_image066.png} + +@subsubsection occt_algorithms_9_4_22 Case 22: Two Solids that have a shared vertex. + +Let us consider two solids *S1* and *S2* that have a shared vertex: + +@figure{/user_guides/boolean_operations/images/boolean_image067.png} + +* The result of *Fuse* operation is a compound composed from the split parts of arguments i.e. 2 new solids *S11* and *S21*. These solids have one shared edge *Vn1*. + +@figure{/user_guides/boolean_operations/images/boolean_image068.png} + +* The result of *Common* operation is an empty compound because the dimension (1) of the common part between *S1* and *S2* (vertex) is less than the lower dimension of the arguments (3). + +* The result of *Cut12* operation is a compound containing split part of the argument *S1*. In this case +argument *S1* has a common part with solid *S2* so the corresponding part is not included into the result. + +@figure{/user_guides/boolean_operations/images/boolean_image069.png} + +* The result of *Cut21* operation is a compound containing split part of the argument *S2*. In this case +argument *S2* has a common part with solid *S1* so the corresponding part is not included into the result. + +@figure{/user_guides/boolean_operations/images/boolean_image070.png} + + +@subsection occt_algorithms_9_5 Class BOPAlgo_BOP + +BOA is implemented in the class *BOPAlgo_BOP*. The main fields of this class are described in the Table: + +| Name | Contents | +| :---- | :--- | +| *myOperation* | The type of the Boolean operation (Common, Fuse, Cut) | +| *myArgs[2]* | The arguments | +| *myDims[2]* | The values of the dimensions of the arguments | +| *myRC* | The draft result (shape) | + +The main steps of the *BOPAlgo_BOP* are the same as of @ref occt_algorithms_7_4 "BOPAlgo_Builder" except for some aspects described in the next paragraphs. + +@subsection occt_algorithms_9_6 Building Draft Result + +The input data for this step is as follows: +* *BOPAlgo_BOP* object after building result of type *Compound*; +* *Type* of the Boolean operation. + +| No | Contents | Implementation | +| :---- | :----- | :----- | +| 1 | For the Boolean operation *Fuse* add to *myRC* all images of arguments. | *BOPAlgo_BOP::BuildRC()* | +| 2 | For the Boolean operation *Common* or *Cut* add to *myRC* all images of argument *S1* that are +*Common* for the Common operation and are *Not Common* for the Cut operation | *BOPAlgo_BOP::BuildRC()* | + +@subsection occt_algorithms_9_7 Building the Result + +The input data for this step is as follows: +* *BOPAlgo_BOP* object the state after building draft result. + +| No | Contents | Implementation | +| :---- | :---- | :------ | +| 1 | For the Type of the Boolean operation Common, Cut and *myDim[0] < 3* | | +| 1.1 | Compute minimal dimension *Dmin = min(myDim[0], myDim[1])* | *BOPAlgo_BOP:: BuildShape()* | +| 1.2 | Make connexity blocks from sub-shapes of *myRS*, taking into account the value of *Dmin* | *BOPTools_Tools::MakeConnexityBlocks()* | +| 1.3 | Build the result from shapes made from the connexity blocks | *BOPAlgo_BOP:: BuildShape()* | +| 2 | For the Type of the Boolean operation Common, Cut and *myDim[0] = 3* | | +| 2.1 | *myShape = myRC* | BOPAlgo_BOP::BuildShape () | +| 3 | For the Type of the Boolean operation Fuse and *myDim[0] = 3* | | +| 3.1 | Find internal faces (FWi) in *myRC* | *BOPAlgo_BOP::BuildSolid()* | +| 3.2 | Collect all faces of *myRC* except for internal faces (FWi) -> SFS | *BOPAlgo_BOP::BuildSolid ()* | +| 3.3 | Build solids (SDi) from *SFS*. | *BOPAlgo_BuilderSolid* | +| 3.4 | Add the solids (SDi) to the result | | + +@section occt_algorithms_10 Algorithm Limitations + +The chapter describes the problems that are considered as Algorithm limitations. In most cases an Algorithm failure is caused by a combination of various factors, such as self-interfered arguments, inappropriate or ungrounded values of the argument tolerances, adverse mutual position of the arguments, tangency, etc. + +A lot of bugs and failures of GFA algorithm can be caused by problems in low-level algorithms: Intersection Algorithm, Projection Algorithm, Approximation Algorithm, Classification Algorithm, etc. +* The Intersection, Projection and Approximation Algorithms are mostly used at the Intersection step. Their bugs directly cause wrong section results (i.e. incorrect section edges, section points, missing section edges or micro edges). It is not possible to obtain a correct final result of the GFA if a section result is wrong. +* The Projection Algorithm is used at the Intersection step. The purpose of Projection Algorithm is to compute 2D-curves on surfaces. Wrong results here lead to incorrect or missing faces in the final GFA result. +* The Classification Algorithm is used at the Building step. The bugs in the Classification Algorithm lead to errors in selecting shape parts (edges, faces, solids) and ultimately to a wrong final GFA result. + +The description below illustrates some known GFA limitations. It does not enumerate exhaustively all problems that can arise in practice. Please, address cases of Algorithm failure to the OCCT Maintenance Service. + + +@subsection occt_algorithms_10_1 Arguments + +@subsubsection occt_algorithms_10_1_1 Common requirements + +Each argument should be valid (in terms of *BRepCheck_Analyzer*), or conversely, if the argument is considered as non-valid (in terms of *BRepCheck_Analyzer*), it cannot be used as an argument of the algorithm. + +The class *BRepCheck_Analyzer* is used to check the overall validity of a shape. In OCCT a Shape (or its sub-shapes) is considered valid if it meets certain criteria. If the shape is found as invalid, it can be fixed by tools from *ShapeAnalysis, ShapeUpgrade* and *ShapeFix* packages. + +However, it is important to note that class *BRepCheck_Analyzer* is just a tool that can have its own problems; this means that due to a specific factor(s) this tool can sometimes provide a wrong result. + +Let us consider the following example: + +The Analyzer checks distances between couples of 3D check-points (Pi, PSi) of edge *E* on face *F*. Point *Pi* is obtained from the 3D-curve (at the parameter *ti*) of the edge. *PSi* is obtained from 2D-curve (at the parameter *ti*) of the edge on surface *S* of face *F*. To be valid the distance should be less than *Tol(E)* for all couples of check-points. The number of these check-points is a pre-defined value (e.g. 23). + +Let us consider the case when edge *E* is recognized valid (in terms of *BRepCheck_Analyzer*). + +Further, after some operation, edge *E* is split into two edges *E1* and *E2*. Each split edge has the same 3D-curve and 2D-curve as the original edge *E*. + +Let us check *E1* (or E2). The Analyzer again checks the distances between the couples of check-points points (Pi, PSi). The number of these check-points is the same constant value (23), but there is no guarantee that the distances will be less than *Tol(E)*, because the points chosen for *E1* are not the same as for *E*. + +Thus, if *E1* is recognized by the Analyzer as non-valid, edge *E* should also be non-valid. However *E* has been recognized as valid. Thus the Analyzer gives a wrong result for *E*. + +The fact that the argument is a valid shape (in terms of *BRepCheck_Analyzer*) is a necessary but insufficient requirement to produce a valid result of the Algorithms. + +@subsubsection occt_algorithms_10_1_3 Pure self-interference + +The argument should not be self-interfered, i.e. all sub-shapes of the argument that have geometrical coincidence through any topological entities (vertices, edges, faces) should share these entities. + +#### Example 1: Compound of two edges +The compound of two edges *E1* and *E2* is a self-interfered shape and cannot be used as the argument of the Algorithms. + +@figure{/user_guides/boolean_operations/images/operations_image036.svg, "Compound of two edges"} + +#### Example 2: Self-interfered Edge +The edge *E* is a self-interfered shape and cannot be used as an argument of the Algorithms. + +@figure{/user_guides/boolean_operations/images/operations_image037.svg, "Self-interfered Edge"} + +#### Example 3: Self-interfered Face +The face *F* is a self-interfered shape and cannot be used as an argument of the Algorithms. + +@figure{/user_guides/boolean_operations/images/operations_image038.svg, "Self-interfered Face"} + +#### Example 4: Face of Revolution +The face *F* has been obtained by revolution of edge *E* around line *L*. + +@figure{/user_guides/boolean_operations/images/operations_image039a.png, "Face of Revolution: Arguments"} +@figure{/user_guides/boolean_operations/images/operations_image039b.png, "Face of Revolution: Result"} + +In spite of the fact that face *F* is valid (in terms of *BRepCheck_Analyzer*) it is a self-interfered shape and cannot be used as the argument of the Algorithms. + +@subsubsection occt_algorithms_10_1_4 Self-interferences due to tolerances +#### Example 1: Non-closed Edge + +Let us consider edge *E* based on a non-closed circle. @figure{/user_guides/boolean_operations/images/operations_image040.png, "Edge based on a non-closed circle"} + +The distance between the vertices of *E* is *D=0.69799*. The values of the tolerances *Tol(V1)=Tol(V2)=0.5*. +@figure{/user_guides/boolean_operations/images/operations_image041.png, "Distance and Tolerances"} + +In spite of the fact that the edge *E* is valid in terms of *BRepCheck_Analyzer*, it is a self-interfered shape because its vertices are interfered. Thus, edge *E* cannot be used as an argument of the Algorithms. + +#### Example 2: Solid containing an interfered vertex + +Let us consider solid *S* containing vertex V. @figure{/user_guides/boolean_operations/images/operations_image042.png, "Solid containing an interfered vertex"} + +The value of tolerance Tol(V)= 50.000075982061. + +@figure{/user_guides/boolean_operations/images/operations_image043.png, "Tolerance"} + +In spite of the fact that solid *S* is valid in terms of *BRepCheck_Analyzer* it is a self-interfered shape because vertex *V* is interfered with a lot of sub-shapes from *S* without any topological connection with them. Thus solid *S* cannot be used as an argument of the Algorithms. + +@subsubsection occt_algorithms_10_1_5 Parametric representation +The parameterization of some surfaces (cylinder, cone, surface of revolution) can be the cause of limitation. + +#### Example 1: Cylindrical surface +The parameterization range for cylindrical surface is: + +~~~~ +U: [0, 2π], V: ]-∞, + ∞[ +~~~~ + +The range of *U* coordinate is always restricted while the range of *V* coordinate is non-restricted. + +Let us consider a cylinder-based *Face 1* with radii *R=3* and *H=6*. + +@figure{/user_guides/boolean_operations/images/operations_image044.png, "Face 1"} + +@figure{/user_guides/boolean_operations/images/operations_image045.png, "P-Curves for Face 1"} + +Let us also consider a cylinder-based *Face 2* with radii *R=3000* and *H=6000* (resulting from scaling Face 1 with scale factor *ScF=1000*). + +@figure{/user_guides/boolean_operations/images/operations_image046.png, "Face 2"} + +@figure{/user_guides/boolean_operations/images/operations_image047.png, "P-Curves for Face 2"} + +Please, pay attention to the Zoom value of the Figures. + +It is obvious that starting with some value of *ScF*, e.g. *ScF>1000000*, all sloped p-Curves on *Face 2* will be almost vertical. At least, there will be no difference between the values of angles computed by standard C Run-Time Library functions, such as *double acos(double x)*. The loss of accuracy in computation of angles can cause failure of some BP sub-algorithms, such as building faces from a set of edges or building solids from a set of faces. + + +@subsubsection occt_algorithms_10_1_6 How to fix gaps using tolerance + +It is possible to create shapes that use sub-shapes of lower order to avoid gaps in the tolerance-based data model. + +Let us consider the following example: + +@figure{/user_guides/boolean_operations/images/operations_image048.png, "Example"} + +* Face *F* has two edges *E1* and *E2* and two vertices, the base plane is {0,0,0, 0,0,1}; +* Edge *E1* is based on line {0,0,0, 1,0,0}, Tol(E1) = 1.e-7; +* Edge *E2* is based on line {0,1,0, 1,0,0}, Tol(E2) = 1.e-7; +* Vertex *V1*, point {0,0.5,0}, Tol(V1) = 1; +* Vertex *V2*, point {10,0.5,0}, Tol(V2) = 1; +* Face *F* is valid (in terms of *BRepCheck_Analyzer*). + +The values of tolerances *Tol(V1)* and *Tol(V2)* are big enough to fix the gaps between the ends of the edges, but the vertices *V1* and *V2* do not contain any information about the trajectories connecting the corresponding ends of the edges. Thus, the trajectories are undefined. This will cause failure of some sub-algorithms of BP. For example, the sub-algorithms for building faces from a set of edges use the information about all edges connected in a vertex. The situation when a vertex has several pairs of edges such as above will not be solved in a right way. + + +@subsection occt_algorithms_11_1 Intersection problems +@subsubsection occt_algorithms_11_1_1 Pure intersections and common zones + +#### Example: Intersecting Edges + +Let us consider the intersection between two edges: +* *E1* is based on a line: {0,-10,0, 1,0,0}, Tol(E1)=2. +* *E2* is based on a circle: {0,0,0, 0,0,1}, R=10, Tol(E2)=2. + +@figure{/user_guides/boolean_operations/images/operations_image049.png, "Intersecting Edges"} + +The result of pure intersection between *E1* and *E2* is vertex *Vx {0,-10,0}*. + +The result of intersection taking into account tolerances is the common zone *CZ* (part of 3D-space where the distance between the curves is less than or equals to the sum of edge tolerances. + +The Intersection Part of Algorithms uses the result of pure intersection *Vx* instead of *CZ* for the following reasons: +* The Algorithms do not produce Common Blocks between edges based on underlying curves of explicitly different type (e.g. Line / Circle). If the curves have different types, the rule of thumb is that the produced result is of type **vertex**. This rule does not work for non-analytic curves (Bezier, B-Spline) and their combinations with analytic curves. +* The algorithm of intersection between two surfaces *IntPatch_Intersection* does not compute *CZ* of the intersection between curves and points. So even if *CZ* is computed by Edge/Edge intersection algorithm, its result cannot be treated by Face/Face intersection algorithm. + +@subsubsection occt_algorithms_11_2_2 Tolerances and inaccuracies + +The following limitations result from modeling errors or inaccuracies. + +#### Example: Intersection of planar faces + +Let us consider two planar rectangular faces *F1* and *F2*. + +The intersection curve between the planes is curve *C12*. The curve produces a new intersection edge *EC12*. The edge goes through vertices *V1* and *V2* thanks to big tolerance values of vertices *Tol(V1)* and *Tol(V2)*. So, two straight edges *(E12, EC12)* go through two vertices, which is impossible in this case. + +@figure{/user_guides/boolean_operations/images/operations_image050.svg, "Intersecting Faces"} + + +The problem cannot be solved in general, because the length of *E12* can be infinite and the values of *Tol(V1)* and *Tol(V2)* theoretically can be infinite too. + +In a particular case the problem can be solved in several ways: +* Reduce, if possible, the values of *Tol(V1)* and *Tol(V2)* (refinement of *F1*). +* Analyze the value of *Tol(EC12)* and increase *Tol(EC12)* to get a common part between the edges *EC12* and *E12*. Then the common part will be rejected as there is an already existing edge *E12* for face *F1*. + +It is easy to see that if *C12* is slightly above the tolerance spheres of *V1* and *V2* the problem does not appear. + +#### Example: Intersection of two edges + +Let us consider two edges *E1* and *E2*, which have common vertices *V1* and *V2*. The edges *E1* and *E2* have 3D-curves *C1* and *C2. Tol(E1)=1.e-7, Tol(E2)=1.e-7.* + +*C1* practically coincides in 3D with *C2*. The value of deflection is *Dmax* (e.g. *Dmax=1.e-6*). + +@figure{/user_guides/boolean_operations/images/operations_image051.svg, "Intersecting Edges"} + +The evident and prospective result should be the Common Block between *E1* and *E2*. However, the result of intersection differs. + +@figure{/user_guides/boolean_operations/images/operations_image052.svg, "Result of Intersection"} + +However, the result contains three new vertices *Vx1, Vx2* and *Vx3*, 8 new edges *(V1, Vx1, Vx2, Vx3, V2)* and no Common Blocks. This is correct due to the source data: *Tol(E1)=1.e-7, Tol(E2)=1.e-7* and *Dmax=1.e-6. + +In this particular case the problem can be solved by several ways: +* Increase, if possible, the values *Tol(E1)* and *Tol(E2)* to get coincidence in 3D between *E1* and *E2* in terms of tolerance. +* Replace *E1* by a more accurate model. + +The example can be extended from 1D (edges) to 2D (faces). + +@figure{/user_guides/boolean_operations/images/operations_image053.svg, "Intersecting Faces"} + +The comments and recommendations are the same as for 1D case above. + + +@subsubsection occt_algorithms_11_2_3 Acquired Self-interferences +#### Example 1: Vertex and edge + +Let us consider vertex *V1* and edge *E2*. + +@figure{/user_guides/boolean_operations/images/operations_image054.svg, "Vertex and Edge"} + +Vertex *V1* interferes with vertices *V12* and *V22*. +So vertex *V21* should interfere with vertex *V22*, which is impossible because vertices *V21* and *V22* are the vertices of edge *E2*, thus *V21* is not equal to *V22*. + +The problem cannot be solved in general, because the length can be as small as possible to provide validity of *E2* (in the extreme case: *Length (E2) = Tol(V21) + Tol(V22) + E,* where *e-> 0*). + +In a particular case the problem can be solved by refinement of arguments, i.e. by decreasing the values of *Tol(V21)*, *Tol(V22)* and *Tol(V1)*. + +It is easy to see that if *E2* is slightly above than tolerance sphere of *V1* the problem does not appear at all. + +#### Example 2: Vertex and wire + +Let us consider vertex *V2* and wire consisting of edges *E11* and *E12*. + +@figure{/user_guides/boolean_operations/images/operations_image055.svg, "Vertex and Wire"} + +The arguments themselves are not self-intersected. +Vertex *V2* interferes with edges *E11* and *E12*. Thus, edge *E11* should interfere with edge *E22*, but it is impossible because edges *E11* and *E12* cannot interfere by the condition. + +The cases when a non-self-interfered argument (or its sub-shapes) become interfered due to the intersections with other arguments (or their sub-shapes) are considered as limitations for the Algorithms. + +@section occt_algorithms_12 Appendix + +@subsection occt_algorithms_12_1 Building faces from set of edges + +The algorithm builds a set of faces from a surface and a set of edges having p-curves on the surface. + +@subsubsection occt_algorithms_12_1_1 Terms and definitions + +* **Original Face** - the source face *F* having an underlying surface *S* that is used as 2D domain. +* **ES** - a set of source edges having p-curves on surface *S*. +* **Contour** - a set of edges that is subset of *ES*. +* **Loop** - a closed Contour (in 2D). +* **Hole** - a Loop that has a negative mass property. +* **Growth** - a Loop that has a positive mass property. +* **Area** - a set of Loops within the one Growth and a number of Holes that are inside the Growth. +* **Deadlock** - a Contour that cannot be used as a Loop. +* **Result** - a set of faces LFR. + +See the illustration for the terms in the image: + +@figure{/user_guides/boolean_operations/images/operations_image056.svg, "Terms and definitions"} + + +@subsubsection occt_algorithms_12_1_2 Class BOPAlgo_BuilderArea +The class *BOPAlgo_BuilderArea* is a root class for implementations of algorithms to build areas (faces, solids) from a set of components (edges, faces). + +@figure{/user_guides/boolean_operations/images/operations_image057.svg, "Class inheritance diagram"} + +The main fields of the class *BOPAlgo_BuilderArea* are described in the Table: + +| Name | Contents | +| :---- | :---- | +| *myContext* | Pointer to the intersection Context | +| *myShapes* | Container for source shapes (edges, faces) | +| *myLoops* | Container for Loops | +| *myAreas* | Container for Areas | +| *myShapesToAvoid* | Container for Deadlocks | + +@subsubsection occt_algorithms_12_1_3 Class BOPAlgo_BuilderFace + +The class *BOPAlgo_BuilderFace* implements the algorithm to build faces from a set of edges. + +The main fields of the class BOPAlgo_BuilderFace are described in the Table: + +| Name | Contents | +| :---- | :----- | +| *myFace* | Original face | + +The main steps of the algorithm are described in the Table: + +| No | Contents | Implementation | +| :---- | :---- | :----- | +| 1 | Collect the Deadlocks (myShapesToAvoid). | *BOPAlgo_BuilderFace::PerformShapesToAvoid()* | +| 2 | Build Loops (myLoops). | *BOPAlgo_BuilderFace::PerformLoops()*, *BOPAlgo_WireSplitter* | +| 3 | Classify the Loops and build Areas (myAreas) | *BOPAlgo_BuilderFace::PerformAreas()* | +| 4 | Add internal shapes to the Areas | *BOPAlgo_BuilderFace::PerformInternalShapes()* | +| 5 | Build the Result using the Areas and *myFace*. | *BOPAlgo_BuilderFace::PerformInternalShapes()* | + +@subsubsection occt_algorithms_12_1_4 Class BOPAlgo_WireSplitter + +The class *BOPAlgo_WireSplitter* implements the algorithm to build Loops from a set of edges *ES* and face *F*. + +The main idea is to trace paths (in 2D) along the edges from the ES using the following conditions: +* Connectivity of the edges through vertices. +* Minimal clockwise angle (in 2D) between adjacent edges. +* Loop is closed. + +See the illustration in the figure: + +@figure{/user_guides/boolean_operations/images/operations_image058.svg} + +The input edges are *E1, E2...E16*. The edges in parentheses (E11, E15), (E12, E16), (E9, E13), (E10, E14) are the same with different orientations. + +The angles βij are computed in the node *k* between the direction of the edge that enters in the node *Ei* and all directions of the edges *j* that leave the node. +* Let us start from edge *E3*; +* For node *A* and entering edge *E3* there are 3 leaving edges *E10, E15* and *E4* and three angles: + * β3,10=angle(E3, E10), + * β3,15=angle(E3, E15), + * β3,4=angle(E3, E4). +* The minimal clockwise angle is β3,10, so: + * edge *E10* will be next to edge *E3*; + * edge *E2* will be next to edge *E10*. +* The edges *E3, E10* and *E2* form Loop *L1*. +* Let us start from the next non-processed edge (e.g. for *E4*). +* ... and so on + +The main steps of the algorithm are as follows: + +| No | Contents | Implementation | +| :---- | :---- | :----- | +| 1 | Build connexity blocks *CBi(i=1,2…NbCB)*, where *NbCB* is the number of connexity blocks from the ES. | *BOPAlgo_WireSplitter::MakeConnexityBlocks()* | +| 2 | For each connexity block *CBi*: a) Compute angles βij for each node (for entering and leaving edges); b) Compute Loops | *BOPAlgo_WireSplitter::SplitBlock()* | + + +@subsection occt_algorithms_12_2 Building solids from set of faces +The algorithm is to build a set of solids from a set of faces. + +@subsubsection occt_algorithms_12_2_1 Terms and definitions + +* **FS** - a set of source faces. +* **Contour** - a set of faces that is subset of FS. +* **Loop** - a closed Contour (in 3D). +* **Hole** - a Loop that has a negative mass property. +* **Growth** - a Loop that has a positive mass property. +* **Area** - a set of Loops within the one Growth and a number of Holes that are inside the Growth. +* **Deadlock** - a Contour that cannot be used as a Loop. +* **Result** - a set of solids *LSo*. + +@subsubsection occt_algorithms_12_2_2 Class BOPAlgo_BuilderSolid + +The class *BOPAlgo_BuilderSolid* contains the implementation of the algorithm to build solids from a set of faces. +The content of the main steps of the algorithm is described in the Table. + +| No | Contents | Implementation | +| :--- | :--- | :---- | +| 1 | Collect the Deadlocks (myShapesToAvoid). | *BOPAlgo_BuilderSolid::PerformShapesToAvoid()* | +| 2 | Build Loops (myLoops). | *BOPAlgo_BuilderSolid::PerformLoops()* | +| 3 | Classify the Loops and build Areas (myAreas). | *BOPAlgo_BuilderSolid::PerformAreas()* | +| 4 | Add to Areas the internal shapes. | *BOPAlgo_BuilderSolid::PerformInternalShapes()* | +| 5 | Build the Result using the Areas and *myFace*. | *BOPAlgo_BuilderSolid::PerformInternalShapes()* | + +@subsection occt_algorithms_12_3 Packaging + +The following packages contain the implementation of the algorithm: + +| No | Name | Contents | +| :---- | :---- | :---- | +| 1 | *BOPCol* | Collection classes for all algorithms | +| 2 | *BOPInt* | Auxiliary classes for IP | +| 3 | *BOPDS* | DS and a set of auxiliary classes for DS | +| 4 | *BOPTools* | Auxiliary classes for BP | +| 5 | *BOPAlgo* | IP, BP | +| 6 | *BOPTest* | Testing commands for Draw application | + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image001.svg b/dox/user_guides/boolean_operations/images/boolean_image001.svg new file mode 100644 index 0000000000..c9de2887ff --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image001.svg @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + V + 1 + + + + + V + 2 + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image002.svg b/dox/user_guides/boolean_operations/images/boolean_image002.svg new file mode 100644 index 0000000000..801bf48aa9 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image002.svg @@ -0,0 +1,232 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + V + 1 + + + + + V + 2 + + + V + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image004.png b/dox/user_guides/boolean_operations/images/boolean_image004.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d57e7689158b989db5272584c30c7d382085ff GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^M}WAGg9%7JWH&HlU|{a_ba4!+nDh3oebM6-nd6D+ zYPURZD{T^?&yVM5+gd$$Q`Ymo4j&d!Ma(x5}xDZ{OWNd1K4_2Kl!I`uXd( z-?;v4&a@d){&&MBr$t^mxxD1UtBhW)^!IPSC`)Wk^Iw{4U2>_&2?o@Q@SFprtNCGr!;WnoV@5ujn7 z{whG;?l}MT^Sx6I<8v$T?Umv!mXdC$5J&yssytl4{5 zwCWbm@>t)`*YEbWK7IG^==42RzM6OM?<-DdnY_80r?!_SeVmSe${fi*Vr>JYQ54D^&`N{5T@%%EnV4$lTzk)s$5S}Ik{D0rXW{>Oj7MPz|L#3wXN6koj-5+ z&i{?(`a7QZUUz)UJZo=9W{;As?C~QRyz+rtXQb)tZ+>i@VrJ%CHS5~<*;$5X=b6{a z=A?*JeJ?383jN-d+44)bQunvd<(oPCt?Q(9@7{`&79<|1MpAZeRcB`R@B> z=JhlG?Am$Kqf|a{?eUpq$yt`0uLWnC?QXq!#FV#Y+V)#t%LFEOU9M~aMm*59CzXL| zKr)beJmoH6AS_Xzqyx4Ag|}p}VCboT%3n5iF26Tn-i!5;{qtTV@7`rP>5}kt%lMvo yJI<_3n&KjVHgAec{k*dipI8VpFzoUC&!mx=Y`-u@R|S|i89ZJ6T-G@yGywo+kjF^? literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image005.png b/dox/user_guides/boolean_operations/images/boolean_image005.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ab116842fe5dbc05bfbbd31b72d7ceefe396c4 GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^hk&?`g9%8!k#s0zU|`(r>EaktG3V_aU%zGthK9gd z6#~=sY+CM`ew3(S5#nDMU2f~N-FKH^#pEjCEt#6Ci4CVRwD)X(aej)L&b~7YiYlCc zHZ7{rKX*^zhq&8|W!014E2M2cCO>IOp-fiSfh9p9p94(8OzP78}c3wxl*x zE9>l;sz0hbn2ge5kGq8m_qA}mD(u+1Sn*a#+LrjMCN8tj^{}|G_&)#kLD@@*PgSs; zwJ&3ei_9|BMS((v8l4t81q?mi)f<6wzMDDIyC*OF^F;c~#HU~T#3I#{&TX4N;Z)zI)Srsm zcNDf=?&}kM`^IZhVDIUE$JtkZr_Z{#?EKBke`7aQ?fvpE##pjd)~c%F%=OnlpIxdh zzM67n(HjlVXVdRZ)mC3@HhcN@{x7PL(HA;i7c2|gzl;SK#z63Y{&8-DDNr1;LPGUo xc(u0IBK^&Rg%)N?eCb(79_|u^C?$^Uxi4 z3zFh63`E(gJsbz(INXJ!%u&3g!vy-I|_?5 z$Z$lQV_eLT*dilvSTnO?#sYDI8-{$Tw2PS=pHA{lMTL}#SvD-&l3%I|BmSjY#cZ?*k9HExRE?r!laC&^m1(v%LZ4zsLB}5oWwAc}XvxP$=>s3#7SQoW zz(}LmdC>d0!tm%yqT@RTD9!tm+ImeX1G+7s|&;El<~X4;o#guFAPNJDU&>#u9!=%VN5Ze+Po4h>6mC# zSJH)F*v}%AjECk|%kISgllkIg-5@SP<$zWyO>t6XY4(KVx9j@^$8nOB4$%0yAXyJx z;;$(xW9J@(bf`g`bdk~lI6!Xr5)WN^xcamH)(QHdc1IJ=^otsp>ezz($ zd^dVgTSyuKUhzF}uqn;b>DHK7obx4mLcAL2fz13?!mmlzx+7anJ zHQ6`OAmQNW#5?-qM@J|ccARyi654f8jNdm>`J$HO$N1{#XJaFRxeh`xL-k0Kt)M>o z2^m9#zquFuvB-k> z5xSNiPXu)Name+A#xYOTmXl@^zZr8m-Zea(9(t@>R z0xr1TEAP>@rB4S3D)ywHvEDr#&-@qNXwirw|EoZHoVMUC@6(_m7xDDnh*8Ho?d$UV zXnphd`2D&MN2~h2p)OYwDsoav-_wzmXO(Td8_mBewb49sRd8?QlQT%)uRII3Np4TE z7yNdkIv2giKi0vuLi0DWVfW1T7wV~41!^Ob-l2_te^GCuL?G|ltgjh+J%C?|`Rv;9 ztXAtrD=SSVy4_l>v@6O0Y_2|hZvoSHC0lhe^Ub<@Rs!DoyHX<0=ITRy_8yKwXbv6( zXkl|o2Ug|aq|4t0Qdj=Vx zJv1=oe{P81Praj+XVaFr*kSPu*n}Y9_gu=(=)(f9Bo?&(Qxd?pcL&D{=mfkF%^9FQ zL{{JxsXeZFHtiD^(iCRECgdEvMrk{v&5qY+6wsBLk|=!A3Ky~r2VOGNWp^>~YK#m1 z_zQ~%GzHR&3n$@%6EQGqE)8UECN?1ztYw9sV$(pn80nk-z>f<~#L#U^C8Milz=_Nn z6}fA_48a8_Vo2)V)(3>T2b&NWnF2sB6rq8<&{YYk%hqtgi5M+yNp>!&9E}s1Un&Zt zcS%1kI1wXXA?-ep9G^{S7*eG&t6?k<4KyB+ni-cdB(}&neA*IfF8Lpq6WJNSmXHQI z54cW5&V_MNX`nM>Q(b!K{HV4iPGsMOMzLw2Z$z+junB!T{pF{D$deu)&_m=y!>q)K zjKnFo1r0<}WP1#o5Gm!zC^QhMWA7Mxh_o=zU!2HDFEkJ#gb+dqA%qY@2qA<(`3G=0 VHMA$X^4tIb002ovPDHLkV1fZ4{>=aY literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image007.png b/dox/user_guides/boolean_operations/images/boolean_image007.png new file mode 100644 index 0000000000000000000000000000000000000000..c3db07325f80ec09c0dccef65dc9af9fbf1e59c0 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^2Y|STg9%73RWWpDU|`(n>EaktG3V`V!@NTV5^NU~ zzADICe-TJ^er5Q8V`5cD+1q1+5fdX;eNp?OmZ{7kaMDb5S<|HNY#wu5PJKAJKiAS# zFl_t(uP4o2QrYMg zQhv$E>;9ffrLgxqQa>7Au;X>JaZzQz$oo=JRd9hX?_{|kAx0tDO)Y6}3X~+3rt?hn zwtUQ!(h;*u>6}B`303DOLFX8LoPX0Pw{7ul%LnUk3j69+FFL7e`(-)%BKu^8U&g)i zW|u1%8V=50|9bAKoG7*2%g;nEZEK7?ug>m!^`PXEsiEeMlQ)UT`)zpHa*Ji^=Wh#w zPW_mAnC0!K%Na&04zglG%wgUA>tBAU`xSIfPQL5t?WOmh&*BU?Vdm(6{%VnBTM!j^$uVV1Hpr$nr;5|cDI+?&wqP4 zUPs&LNa4#VCj^eaY&?<52I_=9 B#r^;Q literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image008.png b/dox/user_guides/boolean_operations/images/boolean_image008.png new file mode 100644 index 0000000000000000000000000000000000000000..703d39e06e29ad2734b1db14259f6b5c1dc8a1fa GIT binary patch literal 2771 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 xc(u0IBK^&Rg%)N?eCb(79_|u^C?$^Uxi4 + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + E + 2 + + + E + 1 + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image011.svg b/dox/user_guides/boolean_operations/images/boolean_image011.svg new file mode 100644 index 0000000000..f1a6ee11f4 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image011.svg @@ -0,0 +1,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + Vn + 1 + + + E + 21 + + + E + 11 + + + E + 12 + + + E + 22 + + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image012.svg b/dox/user_guides/boolean_operations/images/boolean_image012.svg new file mode 100644 index 0000000000..5e2691acdc --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image012.svg @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + Vn + 1 + + + E + 11 + + + E + 12 + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image013.svg b/dox/user_guides/boolean_operations/images/boolean_image013.svg new file mode 100644 index 0000000000..f275abdc12 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image013.svg @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + Vn + 1 + + + E + 21 + + + E + 22 + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image014.svg b/dox/user_guides/boolean_operations/images/boolean_image014.svg new file mode 100644 index 0000000000..00ea4c7154 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image014.svg @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + E + 2 + + + E + 1 + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image015.svg b/dox/user_guides/boolean_operations/images/boolean_image015.svg new file mode 100644 index 0000000000..a2fd3c62d3 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image015.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + E + 12 + + + E + 22 + + + E + 11 + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image016.svg b/dox/user_guides/boolean_operations/images/boolean_image016.svg new file mode 100644 index 0000000000..2d356b9111 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image016.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + E + 12 + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image017.svg b/dox/user_guides/boolean_operations/images/boolean_image017.svg new file mode 100644 index 0000000000..f8d6e2539d --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image017.svg @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + E + 11 + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image018.svg b/dox/user_guides/boolean_operations/images/boolean_image018.svg new file mode 100644 index 0000000000..a404906c14 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/boolean_image018.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + E + 22 + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/boolean_image019.png b/dox/user_guides/boolean_operations/images/boolean_image019.png new file mode 100644 index 0000000000000000000000000000000000000000..833f531f9aea1503760b1c37e0e92a2f68e5d0e5 GIT binary patch literal 2142 zcmV-k2%-0hP) zIdU6E7)BdaK8RROeF!6i%BgQaW=^3~7`YSZ2FlHhK86z)b(1lG5t@T#Fk3JG@?NP# zkRs7N?1%5~Zp@5A0000000000iL7dO0L0LoA0P$DqPck>fS+o200hto%}ea`O`DV= z)eP9_8mW;P!A_URj?4&l`a^tVMzGTpN+L6Yoo>(*nGx*tfkHI{cG^chDcO1V5bynMrNIc$AFyzAToQv&Z-cZ55dlQ5Sc?@ zXC>G(8Uc0|hdrawU}ssV=2O7VQm_D;4t5rS$eaasW`@XI0Cwht$Xo_?W`jMW#b9R! z*fUB5cBY1Eo(}9x2MeIoU}qwT%nV@XVu;LaVCOO_N2a8k9%TSK7r>rTX0US>>=_jS zJEy|}$P;=dPfe}PUN^jdZ*F*uGJ z*W;Hq`?udKbS^70?7VXER@UmsUjV(ntY35Xr3NzW>~c_3RB$R-03BoV+xirtn^U5O zk4S}ubdpk9YF6vcaKoGK-19u;-0qJLwr@@Iw$0XZIV5H0qtq;(U`pNrI)!A2Q_kJX z%kjg1-^0&2`sR_-csxqY^FQ5wPo}ID9GQ_eJMXU357{|8I?2u(22!(1WENfrrOWEg z{*UnGX_w%cAoRal@9i!&IVY)2?jMDNZ_`lwYQhe82(mOzK zg(y2~Er1H+=oGkx2(h!qb|#T29wBxTnIM-^r>0G4ByE2(9UZHp610hux$4P3&j>CN zVrR=Lmq7~7GlDyavNLq9GfX$AEP&J^&CZar%Ci7cjzBwG7KbR2sUNX+hWQ~%WLiP8 zoh_?r7jqDqhLCS(I9(JsE|%CcvV{se!|?gQ>={`^i=9V$7fMufqiC}8F#lYwEiHJKG!ccOf!i3|H3` zH3iNjlXPO)2b@7CjZSvPujLF;Kh@mNk!IrV_3WLG>0bHG#ZwC5`5M2h_;KQ+$Jk=CN;dHJ^OHYVW%}0Tq*|`i+B69-RS%|ZmMCJsrvlvZ# z^QKTz6`he8!OjAFI9c=rJmqQz?99&{N3x&aq`8`R!OnaW|C_c4lIfBZ))Q zN@PZ`GY1pmD_Mvdip&Uhre$V)Exi=PqM89ald{N>nN{9gH8)3=J7P?F(k5XiCOnbx zTY=c1vYqLhAC^7k%K@@d)6R^J^ggv4FPV4FCi{%<&PJ10@|6gaB7P6}1_8kO~?O;_ce>>NXl*y?Fh(yeY`40*FtL}bqT7LY(L zJ1cE@k8YDKc@5NmCo^4})0;IcDD%!+Dh>DC{eXhEx`i2})TzdFGew1_%1b57=|QE& z8mIc9vbS&(1c_j0;3f!Sac(D(DH_jq5}DF*YbQ6(RDeS}spe|%W+&BL6MpO@GNB5? z8`?9ryp_Fsvwv@HdEal!^#JZOe06R5C(ZiP^VpmW{V;O-rrl24mECtW->si&cVQuh z?ex3=+P=Mo^?DaSYySK-gnz!Q;+J$_(oWZr`RV!Z=J}}N$Cq~NRX7M*uTOKaXQ$`L zJo5eP=ckun4%uk{V|MZmP|I$;K7HJ5w_&$?t=ya0n6cA!HSb}w|LeDZpL9(%FEC@L z>uMfO`<>69jt_p!J6jHAzFLo_knqn6{H@ zt{l5|5}Eq3XeW_r1#@;1nTD`sCu-Wl#9+qTADB2Aumv~g00000000000DuGk1Nb51 UCre$%8UO$Q07*qoM6N<$f({H2fdBvi literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image020.png b/dox/user_guides/boolean_operations/images/boolean_image020.png new file mode 100644 index 0000000000000000000000000000000000000000..57db4adc8a414f18b70e6226ccf364dec522844c GIT binary patch literal 933 zcmeAS@N?(olHy`uVBq!ia0vp^SAlpL2NRGyG$nR70|Rr8r;B4q#hkZyt&462NU#MM zPHw$1*=%-!yV~guySJRudvSR}sfz4vkI5U$7bO@dd@+)U{mU`;vcyTY)jyu?u39)d z6=)U;$Pv9L?a<(VQ92;#iju`_*BtiX5bk)}zB_ZWU+v#i`eVv{mYCFkE&T`Iy4_xv zxV>P8lhW*jy~6v}{LFu&*>}yfcYo~RcUFmRDMDGVH!L&U9#e5D|IE7OAzf`O=Qdr_ zy)$j8vZ&tnl^Y)IIN@h;Tc0tPv`Nv6KY9O3=%L_}f8Un$XM~@XPw^GhnRP9G-IV<`TTk)tKM_9r zV#W4Vn@*gSein6X&mR5=&+FOGyjE*uS(hj2@85UNzBY2LP>qSa zX#L+@`Gd6r>AM>(9J$2#`Df4nY;#_$+y3u==5s>x_ve()F8=9s>|5%l?tP!1p3kp; zFYakKyEw-6->ok}Ew5|$AK!glyu5#Z_wl>8z9!UMTxO`cQm?1y*f&W4C3p5JQL zwDb4O3MCH%SC2Wre53M?NUdFM_y1DvvuMR57W;AoejDz1^y2p{r4tX%{X4|*<>`+9 ze5;wwT35dO^KU)Jq)VLN*GP3APdf5E-b!U(Ew|rdj!yL^mf)5n!j4Uy3I}_Rf*6`k zkAQ5K2?@uNKnxMZk3cri%49op@v5K}UH_C9?V3k2 z!sZ+6+!gVA@2~jH?CRtNekU0=cg(eDjo5cbt;A$<$K7Y2`P;St)o9!1Ei_sm5r1#4 zQ_jaPUw%El@BMA(^ZK)UN(92|Lo_Q-65-Yf9;xhW&Xe2K1-jU5;j})EY*Yi-hR)SVRk@Wf=^ z|Kh!UAP;QM7xZW0T!!Rlh*z=t(AC36P-TXa$~+DsA3-6YzH2`&^t<#oHnaWSXz?}q z!Gfy{Ku%gN|6c*eNw4{4a!iVeKGD+Oc;mnFjK}d!mjBsNvH}Wc zZFZY56hxDAy0|RJ%gJ7{lrDv)iH(f~MuPWo1#^EStrMfsX!J~kjNjgb5JCtcgb+dq zA%qY@2qA?qPYs8B4k`qHm+181i0Dy%Q4_eL(d@nEgOy2OU6sY2_+&D2+6J-7FJx_)BY zocM8cC9H4rzjKCqyuXX*p6uofRbhQQUtVo;e+Khw>MhtYNXw*!{n8d6^M*Z*f?&Ve}|I4pC9J>T%bjSrU%a! z!#;j8d(Y_QtAo69%IXtXVN{ykdd@2!ejxY?Nwm%JhrC|CzApD4T)uwJ4jvx@FpS@r zp|}ad3Zzo&*2m*H>{B@ZM;4RUnFP=hQC|JdP|+<_b9}MBzLD~}*bh!37L;%VcEXBb zGv}`#m&@<}2zgzfbm=d>YXZ^*_Qor>ioAY5aLZ_VUK@rPe}PMpZDD?n&#u4T!<(De z<^c|_W9`kU&^FQL)pdO!W36k~xZ*cxDYEr+FvAV>x%SfH;2jJDf!nr$p?Cy=@hIZo zU_kO7$wNA?+2G{WMTqS|9VBAxr!sy27R4?{9VSKF^YvTj1}prgv^+ORA!xMrv=QQv zBKwMIVNILip{;J{WvnqOwDU~s>;2(S4g4vRlpRHO!pr*)bnxPA)BI}%*@Z5ViVQIBEl3A73Dd z4mO``2VY-D@B&%TH}`D;fBss67YL%ks}5|%uMaGN7YL%NXwnVEufMK>7sz7Ks}6j` zU*D<+FA&5`GU@i=_YZ6UFObE3ix=HB{Qj&x;02PPn}y&1Y64y$gW>vx>Xof7YA;9d z0`n+B%Ja%Y5wDj|;00!|U<#(tx(dPcatXY^Kq|b*_9~|R>|U;d7wAv51$kTZBU{GT zF}y%e8hak@Ro2Mh6M+|K&5r1Wc$Hp8+5{wgW<>;lYrS*Dee&-lto!iRXr+r%*VvDgF6o0QE_-Bb-uoiKl07%O;|@>&J(ynaFbU( zx;wA=#rf-Zef5lMp{GYvm*eBxo0g+@>FW zm~>&X{yP0!o@-h!7wgQfdDxA|wJNg;Z67YyvC^0E^CGNQ2u8=*!GDBxGv!;r z?{I*+zFkwyxdG8LJMcTmK=vC!M4CA+auOe{t5O}c0hV9$7 zJ!0VUF9=@`nTJel(qtYaE&o#R_0WLO*Sm<8_Oy|@{0qX-LmS*1iJlg%jWs;wG?8`m z&;ZBQaz?nm)nQXY^?~sy$6bG|X}*8Xv;O*c!~_u6X0iu!CkPKS znmy3|femyRS)7L%twnTaPa7(Kop}bb)Ow%H?!|qofs%@&zRvfo(kNruBoSrv{ql zLJv(~8`naMeR;qNE5S;=3Bw9(#P{=IETHS_Kp|dWBlP}Yivw2J4ZOgubkH%HKAN5a zyujVid&tqpQL+GDpb_*!o31Ziz#4dg4$wP{zj~AfUZ5NFp5w312ZI;rPX`v@cR$5| z7Z?cL3;gaYee^!_1*SrG$5tP`w|s#B=pLE85a3@;@B&G6VAdXe^uF;0 zBB8ssVOHTMB3>Yy4(zMfNAC$=U?5Hv{m{aH$CPdJVie*de=YL~c-8UFnRN@~X#R~r2L zw-nYRU@(gK_s8lS;85%u&X^$VXhlgqCe7m-T(#PpQ&~MY4WpYCgz9#c)KjotlhUi! znt*hHBAUhV<^*9u2}hs^Wu{8evQX%u2^7%`<2Pm&Zo;qvMKt^z@D++su+7JOBUy07*qoM6N<$f<%!JiU0rr literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image022.png b/dox/user_guides/boolean_operations/images/boolean_image022.png new file mode 100644 index 0000000000000000000000000000000000000000..4c479d26d96ec8505ac459494677bda23ce7c53e GIT binary patch literal 1527 zcmV*Nl5Qbs8Di_IZRFxy-2-zyP$UYlya}Hl)c5@U)W6ClulI9Nso&p*l z8!&B+x()yU0000000000002ex|5=X!*y5JdA*_!N&_HiJ0GFl#C9*ZVOdjcH68kcJ z8a~~k`SRzE$5GHEtvwxg(dyRE*`T(s=_IVnwg-{O)-wtyVO?;bYtm>d`N-&ZVeK=2 zTXrUPM7Fs1Ag+Y9n}1I9eq5wS(rC--H-)uJm)Ei(BeJC|Wp3^a&}TX9)`%C8Jz(Sg z*V$(dPw#)-ogMy+Xh>D1+o)Cl@g(}mU)LIE+|Jsj1=48G=odcz<|_i`wefdFd=qw9 zKlxzwE28DqDmp~=fPVMw)j)YQ?{nq@aA$w`qU2R4C^{o?A>)s))FPrb9(`FNE4u~D z4op`3$m$0|e}q!Po(&vzFGoWa5iPPFm*3-<4aI4+eiz>F$gTK}Y=Dh5z!Vzu8rew8 z9BD2MI6E7J>`5Ufh2V=Cdv>`b=|D-Qd7Ad?VX`e@lKK8-J%B0_{>Lh}`6it8PI|B3 zO1?QJpZ*5@>g&JTVW|ex;adV>rLR1pAPWTgD+{xP%6w&gex-}7qC_98?`N?L+l8r> z*ZW!AyV-@iU1r$e4x@CfQSS4oVGHzzf+%KP6t@PdS_NgThuW6Jw$%VdE`uVrM758z zy5e7d_ESG!F9t)gK%+gvwq%$0%zkF{`j#iJ10uWCaDChUuGe#3Q=-wX8yCp%)wiR( zUfueV10{_*viqr=|m zG};!z$eO*mHK`TgDY6Qi0+BVR5QB9(LnN{abn@^_@Ot8G zpg=GfdIK6EvI@8d*3iND5m{2(9^Z1ELS$Pib4x3EYH73$6pmT)$aX}w zrdmIeO`cjJTU_-}5m{1OO1obvB(*rhAVNeI$MBLE8=MUeuz$%Rsl^sTQBfI(5gP3( zxr7K^Jw}M^Ea_nAj;skH`@}&Wq_3y?I2#O{#lX{8QJTxucR6UB=6KzmZ3;Li$Z|)R z1J;CEk+|1>_DY#QUBezzD-c}Q>a}_RJ#DK_y#C)VN|moYFhC8~~y{MQm7GOJSC4miY6(y3xdMu$bqUa(|D2M~B z(11F)k-V=YpT1W)*DU9(gUGgc+2$KilFc#6G_#1kma%7-RLBk#a#HvdX>}vb1&ado zqySUEK7QBR@5phA$A$MeW)$OSV|6rC)TN&T{Sl%m+3qDfFxXQ|hT3=_M<*gWBY`yY zE!cbj@W(1KBozlW?sK$N6woF^Bo)O}?R>OVR8b>UBo!5vjTd1>bw##s&H!lYOxj2) z3>@f@v{e|}oHw000000000000000 d004kP{{!kl9ihB4cGLg>002ovPDHLkV1oE4*mnQ` literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image023.png b/dox/user_guides/boolean_operations/images/boolean_image023.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff1339dc81d39da76ca9905fce10946a5b14e7f GIT binary patch literal 1448 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image025.png b/dox/user_guides/boolean_operations/images/boolean_image025.png new file mode 100644 index 0000000000000000000000000000000000000000..b0cffad98646a69ee0f72044b2b4aaf2e0ed561f GIT binary patch literal 7179 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image028.png b/dox/user_guides/boolean_operations/images/boolean_image028.png new file mode 100644 index 0000000000000000000000000000000000000000..6033ebe6e5b5c8f0eb78ef1963626e978e8e95fb GIT binary patch literal 8402 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image029.png b/dox/user_guides/boolean_operations/images/boolean_image029.png new file mode 100644 index 0000000000000000000000000000000000000000..e439af06dcb0f7b22e858f40c7f87eaf9f960869 GIT binary patch literal 4772 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image032.png b/dox/user_guides/boolean_operations/images/boolean_image032.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ed63fab4afb6362cb98757ddf0f86538219c55 GIT binary patch literal 8308 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image034.png b/dox/user_guides/boolean_operations/images/boolean_image034.png new file mode 100644 index 0000000000000000000000000000000000000000..ea97cf64f07144fdc077b0a3842732d934c8b846 GIT binary patch literal 3894 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 h|*wNpPE}dv|i5tNN>WcjGA2rCDFrJf;I4z%^ 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

bXyy3s--m z6F^XvS6G|}e_{}nD7P3O{>b>Wj$buIsR=pll?thv{KzkK=ZY)@`d>JUtiRi3s}MdB z?vYARms}${{C!j;+5~Qz@e3~U3jIy$&hZGF!d$#*6JuC4ZgAbiN2K>Xh~{H&ORb2O z3x?Ub;ZKuBHD_MZcJWiMHdh6XNor%)ez7(nf8z(zz=r(C{@V6V^(WEOT7$HdM-~(A zJIV$O{$dA=7dGk!4uS;Mw}hf3;KtWZZJDNxg(pjkP61qkL09o`c}jJ2+=}<_K>;P* zpFv*iANx32Yiz`NttEw-D>3nhdqZCR5&4D2j*+n_IY+95r8*jzS%_l1QHR!$WRqQn z1&zaMbwL4p7~b{gkHopbhpOW~dfI?T71aVx>oz)z{?6Z@cpmzGo=hliG`=w1mT^;P*PP~ zV+w`U1n^rGx3zbNJdti|1GxW~zhNv6LmS|x*evtod34j)$&l9`Vu1vp!C9f5fZkQz zQTnG7ZLi1#>f%R$X%e2>P__rui$*~#aA5d52V^n3tr~_qfv$l6<^B>px z=9c%9;sixMkI+$b9dkc85HwrqsgqOC@OmqnecV_hR6Yhyz5^7<#AtwaA&3M)zr+bpKA zzdrOP1Jpan9(e7D3qi^=yn}*PU(DccuqBrg_#P-B2Ty=JGoy)uO|j4vE}po-?7X9} zj(IdM!KSS>^i|m+Yn&MwXa_k0zoqCYzWhuO2v%6vz1X2!{Gc21qeUl1EPVP?vutIN z;?a_{R(BY3qtZ0So0ehXIWyW;j(!R!OL79UvF4c`EHA3?Xgak4zo=b55n2LtRM$Zd zU3zo2_nD_~iGqyhHx;(cZpki3FJ*_RT2Vmb+I)pVc~*9R<0-vupEnDeN6Bjjo#M>u z3)mn;~$aDg`inhs=GGc6#I?0S{1 zB!6CF4)YV{UeO=p$!9Jq##aA=X?w?MQP!Id)FtVxhV$ub_#%OSE~3|0F>jxMbE9gj zKYM@jOUIH>lw+}>aIv>i^D1513hrmJ(fb@+o`CPyj|rc;;_1kf`OZP2wO+REM?}st2SyUD>TVITVgprz6C&_mqjpeB){2e28?q-qHhR)!SD>VKzL` z0RXEz%4|Fs$e{k<`%K^kVTG;&QXAbm{Y<#(@+N}lZkS1H^+cE|h? zsew=-ll~Wbow~^c>MR98ReGf`0Nlv;bt6;ss!sED`Rwk-eu)|%l2)4B1XgASIuS_m z+`XU|g9LDFN`^YK>{F#pTGjtA;5lqFsrm}T+*WLN-T#9_53N0C7Wj)=<|omas(W5e zv&ktc(sh^XT|Ssi_uAItSe0c>JT`OXXG=lQfNd{j2S$+K|C3t%AIfDsc2AHW{Yb&x TY5C_rDhJS3*H^1nvH$Qt05{Sg literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image041.png b/dox/user_guides/boolean_operations/images/boolean_image041.png new file mode 100644 index 0000000000000000000000000000000000000000..66e1f75016eebd44e32b6cf3cc1e3741662bb010 GIT binary patch literal 5236 zcmbtYWmgmoxLi790R@y+x^wAP>IDhu?(QXor9nzb>284~mkwzVkXB&nZh>W&UO?b_ z|G_=yo-;Gg_vgc$nfdZTLm5a&O$Y!0fGYnfX#cx={}_dj`A@klpfmsgxulB1TU|&V zBL5j!*Dhn^$!8|tCq;#yARM3qFtVb+ui-O|`S`UVp8uS5@QuV_m=rnD$;?32AR1r? zITYLeIiO&Ghr9hdU1oUZqi!Cyd`W~PNbhv6&O}&Pa%WzKGZ5L^nHo}#+&MP5 z`y0#Y{vFx+!~TON#w}L!^%_4Zq-$+kY0(7@91d!0Z8~A_7B_u8D*c z+cvgtcIyg+9iB6dNy=J5$dvwLHCA5Vy)D{1_P;ZtMa1V-ahV6NitVG?!iP$F`? zP%#oQA|e%yxETVsHxk&~_>c9Z5OOgLse(MED;;`V4GfxrNceay?Xm{u#(zGYGZ9k0 zQ=T#_TkYY2PL!_dKAm?Qxqr-fa0p9~pv?RbxrrtI*hQWjjF#Zja*j`ILn8H~@^a7U zY6NZWr^~3_i>F9U`<#lX&~*(DaZWUj-8cW4=E5!f^OEivEsL^CyJD}4MoaHr`}@>d zSHVdM7q?7?MEJ+a`kLfA;Da7miNCUcs;yqW?RB_9_4`n)1L$=Z%O7L$AaP^x#`=Kl zaeCRop9cHectbjt>?#$QtEJXx!E3($?(i@=APnw`%35Z^KW?H`BXc zhfqiP9YL!bc4}}|11w|_TEI;2DeDs#8Y(}Dyfg{fVo_Iu%>_s1B+lPS&^WA;)L2?( zco~mNF4jO>LT-tIN}P{O5Hc3N5FjM!(~%8veV!+G3>;*xdA1P=%Mv(YeM<;rW5exB6Sj*|4cyGfVkw}IHb#U zcp1oidMRr3ZDINh3j`NkT&8o4*K8hASe&X_I939sXU| zPsRlbMvw@S^l${6MjyF$sMU2rV4uCI*X1`_a=@}Xy4dfqRr9kKU7wyFj#VH55C>@{e^aB(564Z1E;mLbW*_@dtz7=L9mi3U|H?<7xrhki!i7xcj`O#gmADAtPfL%ht@3tS4lhs*yX;p zNk;VQFB?kWmx@V<&@`GQ7)qj6h5I z1C|%Gb#`uC95R+)A>YNuN=y0x2IU-T{bz~?gXG@KJN(3LH@!Xy4?gLWbX9-`WUF5E zxd7D4lI)V66a5NN_b-Imrb>QNdzO+- z$k^v`jDMmW)d)c&W3%4zdGC+DcjRd|#5cX*3B_>A9A30UQ&$O;b z?QiDKVkpcmJ`{M7L@_+Z!)ph**%}*zo@j@8ZCJs?5c4lU{;>I9;!`WsqxiHVb8X)7 zT1&%2w|EHKCr43CD@;U8$na}3h1!ZRE2*{4;ZFc}jdyva?z%pcOq39#-L}o`VGC

??)B1cR4|g&cp%JOLpYPxPWKLBkVi%$B*AP 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image042.png b/dox/user_guides/boolean_operations/images/boolean_image042.png new file mode 100644 index 0000000000000000000000000000000000000000..7c63bba1a58f1de9e15d6650b18da2a57ec6ad3c GIT binary patch literal 3190 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image043.png b/dox/user_guides/boolean_operations/images/boolean_image043.png new file mode 100644 index 0000000000000000000000000000000000000000..326a4b1fd8eb1a074be629fec9f2e122f57b4c51 GIT binary patch literal 3437 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 JPDHLkV1k@#yAA*V literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image045.png b/dox/user_guides/boolean_operations/images/boolean_image045.png new file mode 100644 index 0000000000000000000000000000000000000000..db1dec502650bf08007bd579b0fe42f91e7c66f8 GIT binary patch literal 8765 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image046.png b/dox/user_guides/boolean_operations/images/boolean_image046.png new file mode 100644 index 0000000000000000000000000000000000000000..0d413844f47baed702197791dcccc329f064369f GIT binary patch literal 9187 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image047.png b/dox/user_guides/boolean_operations/images/boolean_image047.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef2c395cc898d3254571335c203b79c268e80f0 GIT binary patch literal 15366 zcmV+hJo&?kP)OQE#TDx$q7J*Y@oLM4idXhD$?MM`Dg_b9S6l@>~tNZ}Xt z)YGDUf1Z~4{c)UeX6BqT=Zx_b=JWE$_UM0Kh%iq9y(-oJW0x#Y5s8obVSsj4PKTo|9P3HmXHbj8D1_&E_Hc<&D6#WHgjFv#@aG$=2aRVlriRVL~=6AIXlDExpc~E;Teuftm3R3 z8CfnzGPP*JqRgThU=E#V5_h+iS;|GZN;H>ja|-j>7=63_9Ght!cjx8V$Qn-1{s411 zBB@Oa7II;X4Fa=#^Ef}Ih3e;ckruhz`CMY89%^RN7izIA*LNhBNYvsA=5y%*cC>^ITod8$<#fp?ngQyv zm@9H;`CKwkpDC=1v^S5JB%bH`OxLet0}CUztI9f_r*V!9BbP&+T3o|yuFlzh^D>Xl zTn4VBTX>b3nNxY5YjRhjM>zGE$g9~gS;od37SM?om=;I76M2>SoO6%{mdoFq`pl=* zLH&%2xQ-WS9lLdEKWDIjHn}U&BZ?Ebp6S^!qQ^sPUST06S;m^|tRCv{3UhL5L7dCq zoCZ8g%7K`TV&MknlRxB2F&5G$JDr`wBF@X1k>&EYqy{%Jg&R)eCXPQiAM;PTGnYb{ zZk1p@-Lj)Z&ton(<(_;Vmek{ER&fP7vx-qv&*_h8%?g&26ybq_tYTSq1oTu^F)fFc z=$W~eft(}$_16h>W)ht;+_;lT0RbJmJ2f-A$HsMT-YTdvi^lM9DduKViC)BPI&)gw zO*3%z**bUj?|+*%P3O)B+FLG{tN5jE-S+?M&>@TOeqF|}jFw?<_hby+sL*`u?sO8_ zeC(Pyq_Z_IvXlZbHz~?e7DYZ)ip&`-V>0K)-87A+O--L}*)m^$ZOazRmU-x*?Dv)n zE_BMbmMq!#Z@~gvw_3L@;^TFhLD%Sgc47&SHy`^^{Q5G$bASh>d|0`I~;KBOz3G-kTx-*V0G4^~< z^ReHgrl#&5du2Mc*=tQ|YHDignqJ{swWcStC>76JWS}H3vLHK3^irnNJ&stV#*KCF zZq}@QqKT9g?b_}8dB_mMhUwlt?t$cjD|mh1kLAl7Gsb=Qg?XwW!N1=%?pIFCh4jA=pMw5cgmELx;Nh%|>vCk76*Xpw;f;~vOi zNu<4PBod%pIrrc1(@zZ;km-R+DqSt#YZkrk|KjTTXY3g_x^l;($F8YLX}*l`WGgDt zkgj|h=lCP>5j_}6MRqek)^;hR(2|>J$SO94dFsqFopqK|Pc?C(Wy_-V*S|j`CreKD z*=HVoG_JQe+=we`EP)@CJK6*H`{WZ3Jdo*un%re}V>{Y;>^xmVmStz28Jq275o5_Az8DI~$(U{h88|~*ZiNF_wa97A=X@|}f;rJ#gfi~g^=B*<)6eW} zna^=K^g5BK&P@97kGPw*W-@&^1x`OhpFXBdb4g@>=nOM^29lFK`e^vI{gFUiy7Ny( zO4+>KgPAAvd+Et~M#4*LmH1k|3yq--JXHtXP^rU`po9)&H+?Bf z0+(|yE$GQdalK*u?4TD7xF+tE=uBqPfY#2xS=W{tH1PD(7B9}`PmU%COb(udTkEwlh!x) zBuC}Yi^RxDJeR$r`3oL0Kh;%tWc_4x-I>Otk4jF?#y}2j;>!2ZRP7o1E|-wNuN=?$ z-uTnw-FQ08jVPF1t*Xg60;m@E3k%HrpaTpORwyc#|h*-Sdzk3Ka0&ckaJG=HVYnT*=G9pNsGy zk7c1+h7L7x;=Z3RVjAOPkBex_G^SCSTbag)12b)Ak19-KYAj0h+;dHsVA?cInu05t z#<*z5o-yjq0KrF00H^sl2CpD=@WA~n03 z1{}+f^lIlmD$s|o;~932P@kUsi`RJ}^X*ek@y~y%P~o)2i!Yo#yC@4-&$(RW#zoF~ z&8JM_{frG`*PY;Yj!915n?L`v-+%vOzkUb!Qh#^i+7f|n1>h=&yjkL@HT^}z%`k@rq4Rd?YFB?!HgMgX3xHr3S7;dTt)>G zidaMidhgrIXP55Or+n|;kN*C9xoXwInVXMbF6AeNaBZwDMvpdocKBOunVs2PvK@1? z%BOt~<9M86u?{0AX~<-TrMXWxZfx#cZT3z3qX>9&JVYw#w?#KGD`VoFm}mB0Or#*# zMokPKZs^eLzscX9xRMO!<-dH(r@R+ai_}y*cG$i>%&jftrxoY0hp*aj6SWx1=BS;n z<#|r!8qQ-4f5!6`2goP9&-v7?RV#0wKJPYaTWH_j#*H>dd*dFoq8vT>i9&Q`CSNXFrfE}GU#(Fit5zNKH~-%gmvruB1?{Lq zY2MDd#jai9MKiz_5~#&Fe0-`;1IvbYV;juNoXjzt$4mSkTdN#lFVCNT`j_3icS=g~ z+;iLJ??3oFgZg~NJjRp6$uwdw|ALJa;6%>jEB=+Gbl$-!Byc-Ffh4*Fq!TMvxZnb1 z%WBZT>eUDLwGS1lGmD#ZtiKzX$VjSWqj5i;ZD9C%6Gm|GLd*+$L%}F%= z?5wbZ`#7B^;#h-5VFHUtqF=c3E?F>$e^H1LM5TUxefmgBvS5M9lV4>pUvm{V z@io7Mi)Wg_T$1R$f1&+!M=xJQl7s|5B$C7+Dg~R|K|PYVldobKSnu9``boKRht;Xl z0qUEP6y=TZ*7$626U`YI#n=>u`zgmQ{E;(*Nl(?PdiPeKfHiAOnv{0ACT%D{B0qBx zFVj0hAJ=kL&>U8pr+6o2iShYO-ob!d{JR?8gOUv5^KhLMWFuEbTKXp^JNjs!eB$1F z58!PN7iu$(XL2k$y*-n7CVS2v{g}j)IWv+F>eMlDqQ@R{b-GBT#!Tih&ZH)fu_@fl z9?CRQN#&xz|5KJ~x0J`2K;;d=yHS=n;b-n{=FHK)eTK_tGcQxfM_+c(G(t}|GLk;@;Th^7$OC8b8Yb{!eV7@dzZnQ@$Oi+w+3w&}(s zoyeC@ajX%K7}p4sPHgzF>67f_gJQkf(k7jT<)>+`Jjd zHheCXKiK%DAC4wJEqN^vI1nUns6{CXfBa#^3a6j0L07i35TpwGmoS{P{Bv`e|gb8VvYtWBW7BMSA(?2Q07Pios zHnid^9%XB$hmWEH`6)?-eP^>rQz1|<`5DlS$N7Vs)5~bA^y#BuK?4SuI@JdsgpUOK z+mbztQWV~&Z&*Kx>@$v~>|r<+<86E&pD~BgF*c}DMRKw|dn{fYDw_4^&mLw+7R>-@ z2Ume0<~`)2M5f1Xrzt=22mj?KhUr^feSQi({Cbj?_=qQi9mZ{D`Q;aV`q;hOQAg!& zmC&L^hLxIYu5nHLA-Ngo!0c=YDEc#;ti#1CRWf(38*j{Txn9iK97i%7T*sVXCi+X5 z#EcNPmmW-^hQO}qDsXQ*&(2l$ga|#~!ZeB??VLSciWW6$)Saw`g1D(;?~UfN|o}|Q&LkcUL5MrR+&fmo#$dpojibR zd7B@3hBt!O&*5B(Q;4GczzB9C=iDGk^i@B5=z zG56l9a%J1Lc`&-|>u*2~?utVA;tMruIOZ5{zYW)1qecx+KIx+a4hh;sL4Kt@uLe(^ zW94P4ki?}Kwo2v88!^Jxt=@RU)TwEgYX#j{SMywKAJLfOc!?=&2)X_tFLON|_<$~H z!q>iyjo;Y3iQ#Z=1cifyD;X_fPdlq2%%K(vy$ltGWC@zB{|vr`TF+Fb{_|w zgQGj~*=M$H)w;F1bv^p1_3LxE|9}$xfex&RE8HlRmpP97M<0Fh6HhGLu)&*enldHr zf$9w5EnXsG9BF#43{L3f*~{|uce`>HTbRL0kVl_Qs(opj_O)$%)#i+WM_WkZM>_Hv zKZM-M&n>KGH=S6VJqN;He(}Z|%9mHJ+>xn7FS^JRPk8+C99V8f;U;ENJibPS3R$oq z|8vg`Zre7)R_O#5#Ca-vCG&$>JqI%;6wVH2QA(@L@mR{;(GQpa^xYfPs$1Y@efm`XdDc_Y|y~Oi3e9e+i@2&vtEW4 zFK*tv3}b1_olK)`JjH1)Wd_|jHRR&si~yaO88}JbPayareZuFMBR8&Re$a0EZhDJS zXZjIq;9MjsR4``DkszRtKkkL}2Kn*h&5CZs&IxW{35&uXGUUr=$r3NV=(_7dFBfMj zW4N2C#Nu{#I!l-w%)%4OgM7pio=F$sb`wh&nNE!ch$mvW6$^NgZ$msm)9A{ItWFBD zpnQ4B$(Af}M+|u){s$bKUD3b(W!*X-f4u+7#~*w3RiEZ;Uam}RCJ$e63ooSe^DI=z zq)FDU_1bHphvwyYidT4(sg$7%7ZW8JS5t0bISW~v>F#+P#XP3(Kf3HeJzi!4donhN zA+9Kmz}D$=PUDG8=Crpc5Zoumlo%p2Km1_hMtSq9R?TUrdFiF>b(2eU+Ovv9kjRoH zR;(y_{q=z@b6^H6#7bV|s`M?3Gcap^;;}#DacH7F8Zo4hJ-Q)!Sqgb53fa@qB|9K{-dOgJ#-&C1C zV>5S>+_r(`x1tQIp_$|qAKQWEZgI>d_RA2%b zU6O)Sr4D1M&c(c${%%WJGM0_$GU{yP4_@PggYaTun9hGWhS{`EAJ?DClYB=7CK1V^ z*N}S|%Llxc`S$MJl9M%QqH$wK9p#Zn4#ry?87y4rjW@z-qZ5?bZfyp;bzW{`E#uNZ zT!XbCCqPH@AZrPv)jF58OiHIv|G`>1KNfGe$N}rlG_K{fG=-O*ByQnVCZxY!J@}fL z7cJc~cXh%E9(&B%wQkC}@SNxzR=RWcY%5p#?6a^*z*GI0XjD;Ue=t2Q3ja4o^97X| z9}J4B&jXC&UqM~6m*H&Yc$Tq?k-WR#X4IZ0jEXsr$w6T{|Dg&Wc(KER60PlV(%iprDx!a6=kOBwqgR`3Ma7?MOcjf?0^Z+_wwUT2|; zhv?7Npcm-hg{k~ZS!QMO0Q@gYgF!4?$)>e^#}3KKPCLz|mnv4wlR2M1U>}FPbk3S( z%^G9IWc}oRQW?)z9M6n^fS$zQ;PR_Z$SfbA8QpmxxG~zqF4unO@?ci7ojLR}IY!`X z`Wy4oSE@acp~2Uz6?I3L1s{FnqmOLe>VXF&CVJwD103*S$Mosmd{g`O5@QP83z^x| z$isQZ@+QlIF+eCn57sk?6Isvfbj1cQ?V44e)Ch62klh{3q!b+!VyvQZ$pJ{67^(30mlX)~r=MZ!? zbGal^ZTY{ObfO9Ed6A~+-Kmg|OX!=)WFdCxMEUY@{UMG3cI~opqt&aGi#1b72I(xv z23B(x97Sg~Fg|d%7ONRUM^-Zc&SL{p!m7+P{%+D)n$^tWdR8+w+%rY#!G_?$Sb#XB zvweH3S9|HD9EiHjK#s?=|Bv|TC*#K(JlKQ@s#cA?T_DJz5)WBiQ1eVuWJ z!Gk3wIpu(|;vYtA+2Z7r;jFW)SfO&|EL#M0X95*i8L=!)fiv`4Zfg46?w6FXc%a&` zD8;{z?mU*2nM`9zbYo_OCdGL$nC!AkEV}cadyF6NxZ_~__?$0QbExW06fO*}y{2D3 zQ>NIwS(!3X9{-tR*u*sYg>%iU$!5RaXY^gxzHKwf)MYa_eCw`9ZQaf0V9|mcA&?>e zR32h8XXH?~N3ogN+?UBT_B+qAl+ED|-@oHgcCeX#nc|hx(V@e>U-|VDknViO``_{; z>$#9o9Jt%#Q+!5ub}@zJ+{l0)>4 zJJhPBdw1`@@3YSiY`ljhTedjstc({=Ki#@@Hg8rcU8?n?SjUbC$up|4l@(z&JB7o# zz?I}~w(>x@-eR2DpJHGjNGN1xKZ&K0{q)j^G_x0H0~oH_fD8ecV zaZ9)Z*y#Mu>ulmDw(>GvgSYbX6|eI?eOk48?7sW%NJ;s#fBziFHgxzCNp}V*TCd)^ z=FQ((v7+(OfxHC!_UwUz7$>rVvtn{yk47;XGK{o}Yr`Yx&i=ehpJ0~5{Y2QapU6_) z4X4xty0aQ6$qFu&o$}(LBA@87fEd~?a^)B84T_-@&<(URKa&g}b%ES*V| z4o-9RF1Wyo6^=eyQc_j^k3yWl>H{oTnV!--&S3H~GQD&rke6W$;nYkgRYbEWRp(Te zb9(wpH)%6_A(qoD=U${RcQcW^bZ2SaygGF&RP)mg>%kkixz z{*V7-Qv^@H10hi6a66w|b=BnU+l?Ko;{JrGrMQpn+?ClDnJb<9$t0cmg45i^nG15& zsiS%Gq~*)2A9YmSeEDh|oDmhLE>jsr9`f)o!>JoqWu_5>HU0!nVHGEnhr+zi6>;w5 zVkdw8{B>`*q1K!^u4jC3Zx0r#<$ZbDrP1GvVcz z70O(VEyw7?k9^373<#HyJ0mfl6;8gqqpNjlcDF*T$ zJ=2tE?w&m?MVUh~A4H9u$p7-or(AJG(aM#-f9^TgT;u!i57KxF2a`Gdl8yAtk=aA( zV2QE+9*jR+LV`AJv~20>t9|v=v7dbw-U|zS#V}^lmHQcZkgDh&!Y7#&qBwII$)c=+ zdQ$o2-FH(LFE(O?xpS2)sbIkz984aHP@c&g&+$~CA4LxMmt2ryEaO&=rw0GxnDn;W z1Eok2ty^o;#;v#7w#{ds{my@)w)l>1+()_KYvz2B(nDH0XYv|DV)yk5uym=19=eSFPu=JRpZ&&J6itvd%YK3!Vjc-Xbe3ojTp%=-1_%uzJj#yS#tIEvm> z<{ozOW%@7tckH4!#B7sys;61wYG$+Nf{mMW>f+kI@U+>y$ zb?j)@uIz~>^3#d&Icj;`$04mdZ>0dw(4W_{*Tt$;nl;;3f}w3&|NXBYe#p8N$V+?f zVj*`1H$X|@{C2V=%vQd5#tM3*nHK&cG6>J(IbYopBW^Oyk23ee{u^ zfA+>3-hEfwwpniH^H7rZ)TRmFq^~*_C^vf>_6;isiufCF+ zT7t2h%(X1k-qko5M> za=gZ_s0Qk=QE%y}SkX1tSiD$?X!B%VZeS-P!_B8z`Y08nBGZc&z3$m(?cAwZGowb? zxzpvBOH7vC32%24OmUJkj>dX%9eG}MV2qmQZ55TlFodT zhEDr)(eETpq& zQRT~I`y;LTvq8`zt zvqTA_N87nmyLOV2a2)knNKfihAW#ov=T6O=M@b=iWO73w8e{EeRY`V2*eZ5-mqcA)w_0` zkdjh1>Pk8+q0(89TiMCOK?m6|?i`16xby5}C>e(UQjEH?WID8jyd?cC|~(|z}y zKmI65NgiSaktHT- z+0u?3#*U31HNRhXmMm%LP&;<$+BLAs#LT!J3CzEK; z0*Yn$t0W{SR?N*en>kbU>Y>~DQ1(gZQAc_9S^fJfRxGf}EJ<~ya4W^47UBtbBt1`? zKqj$5g%mGt`Er+Dn)X0=={(^C=bU5JD&@=XOGS~MVw}rLj*a>o$V+wZX9>k(tv#A6 zouR}joj8W?*ug7AO1yL;ZCMyaTO=lG-P(>Fo_x|VVeG1-ixnGt;)$Mm%Ki6;s?3q> z;D(rs>lI`HJGdku%0-G;y40nYs!^jLdor8M>ech^yEbgd(wuo7%Q!KD(Y^p3*ufV} z3->@oa;0-W@k?h_c2Jy?Sd&TjByuJ1F_-+&J4#4UxUk!9Gi8cewbEG-OO@*X&_nmV z_nzBtPurN+Vmx&z{ zu2d<73aL}a)u^*vTogM*r0oNiHRNAz-izyIX z4kmF1OKBJ>9eievI!fQZwr$fln7$<`N#DL@$Be1auwhbgtJIrq+@INFC}vJ#CEEf6 zt6e+K*=OfnvEqbk)$#`n0>z41x6YO=8b?T%8;(R8ax=3@3NAd7xQa!b06GM!xW-QI z%)X!arL!`-Ig=}SG2F(yF57r9%UQlik$t(SAA2mbug2rI+%kIGHbaJ_*_#qcW+-P+ zES>?^0M&Rz8ih zdUmdKh7hN8oiX664D;5?Slm~=U93Ki10u>k{&9v!9a{*%lB1B@EAuP$$pK!TUX zQA5#d(wL>38TfzQy3Rh^iWO?@OPCk!B(q$(eMcvpNBq?R&0q`G|`6d+02AsHpVQ- zmCpUdES;CJlziFppliYloL{{7i30|BDoR?R{ezo^%a*ll(PGQ#r^mOyL5OssJu_(%eU{Ia&i!O1olSX@*F$`{ zt2U^a>Tc^_CSY zV&6(eI?4PeZ}DViC7LUp`^hAo=krgNL{OVq5XYE?Jh80EqFe8*tkWd!jaZ=Xap+V->tV=x6U)qguNe@Hq7Lz^mANv-C2*xtP3sZ z_S$Q%zdrPt(X8Y4&@>zA$*ems;l}7L{h?H;V%<8676t50k%-YpsV7qc2GLyInSqNa z$#rz(lk9bokf3Etl`E@R)9I(j)pQ2m1`835%&IPSO=@#BbD0}@+G|geYU&rmM4!jYhrJDGWW79sOfWGzWJwG3R=|k*|UWV1LFO7as?&yaGLXs9f3h?fGASJ-Ti9 z1kT}HmPM%Wo&y{P(utdx%Ec5SlK16z-MT%~y7l)Tf9%?858g-;*~3Oqk=pT>*N()M zEGIvCIQt-FHG1V0KmKUgFrR<^YJmc&k(Fp2ZlM}um~${j65#NVP6TX*lPSht#)jVO z(81A1e|yqNFQ0QxC%$9$K^Q<)ns6aA2!tBlN>A3YJmwTmVY!mBTtrts1MhJg|6=@s zk2?b!HSq4z7(lrwmXE;;_`88~dDGeA40QI7m+O0;WN zEnC{Vw_NMiOIXdXBr!clKeslwP=zYI5xn>W*U^rX8J$%rx=6I7E%|8^ENYRLB%1I& zg?J)o-e4c)>A}e>SDx_w_wNlHc*)skD^S2oF9q(_rW;k6$c!BQ-0&P`(uwQ9WJIs*ie%u$jdG+q6m}86K~v1Wa`j|wRB}jdZ+hkOyhQXu!ZOODCTajq5|h}Tl!W> z{7y^0U@~_wJcnMSJpI|rMYLbPzSTt+Y0*N@o)Qy}U$f>iPUaoD<?7)<0B`&8fuLch=3xqQrJkE_=Lk*sYtu$Lp zuB8As5Vo4oQG7u=CeoiTiOF|A0>!z3s_f-HP$=*sOO{ATsL{FeZFTBYdF{2CZ@o47 z06ryd4o~Uq(!~{5wEF2MEn7|_FC+OXL~g#J1G9ow((DQ7N!-Hm%!)w`PhbLf(v$a@ z6* zbnfibQ>|I!?YCq8kOSbblFlw&v}obC-?VI*cI^*tU>bplo(zVVFSwbB{6QY3#_%E4 z=}rZnk7{0x#4|j@UEIf@^uA~Rqz!#Sa+btHuj5mbZ@`{$$5(#u^fk^ue^~SeM{zgR z*}$MocfX|+jai�D0~?-+kw{+tjXY!h~#`D#guVBAqwitXw%&s%X{9uVK#iuA><5 z@gScN>L>SIaQ~6avFwSgM9XsnmDtIx2R7cJ+(j=wVj3q?o0I9AP0?&Vc6V~6aV-)$ zF3r{qGD#Z!8Bi|or+kRBYv&s>%1Zdq>ROjZZA@_tsYwtBT|uFzc5>_L>`$@1D?cX-Dp(B;V67 zQ}a@Er!4O=6cmZYt7iIisi``5)~uO^4b8}D3;m%goh3^uS<;U`>fG6HaroT^e&avV zm2p%hHPa^d1A5Sp#x$f5Yje(Yf6!Rkv2sF3&ByLu(xFnN4olX&mvDXu68+zms+J2@ zw%ilWbYFpcIEpvO7>AlAGiLboQ&(Q8WJv{LiX4f9Lv`IbdbD@m@!^MYiDoGO;d;7q z8V_eWGX9kh`I(Y@NcO9k|BvXkX5ak1v}5Ij7UTA$-T1S1)siWTU!@EmX0lS1;9>gn zDc5B~Gy{D5tq(smcdqs8vpfC>9IDb8$oX5pzM(@8luq3$TtX;K|J^#0ryqdppi`UK{mdI_K%w-`9?qe7jOfQv1?y@K}Yo^z>a}J~ul+lt z)HS^V=G(EmclJWBUcs$WX`T*w&CGlDG-8U$Y}U;D`7XaauJIpX1X8&^`e^j0vdp$n zkyKJ6cx2XL62tjN)KB@V_UsuL#+d!W8oFy&Hu##+<0rF_&NI$1e7MPzU2;hrLywn3 zb!HFcfd_o~rBbB~8y2Okd327V7Z33eE4eMx1Me`9B3zNl-t>3l5z6q*u=5l4QMu#N zeYZ+*Pw+JthkMPKxbQ+>23S4+akO^wWO)QO};SH!Z+W3bB(% zz;WCk3{emDV%|k(PUTikWo5jX)ek<&6z9uu-=BO8qY%3o0xIwzBYB5sWBh;y4cu^p z;>9gk;JJ8Hg2vC`pgYs(-`^KsC|+E0a*QpC@+e8X9~4b|#62X@DBOwVTMP--A-*oB zMxGN4p%mYQTTK>W1bNvR6is}>-6U}q-DCNH^Ul+~yQCyjru;8N(_y1K)42Cu7&y?x ziN5_-j~4? z27sfKmJrK{V6Y!@c|(VXn}q zkvs47>#wFw`=5&D;m?pEMvMsjn0C&dm$AXqJ^vDqlXEQe_po19`*9fzbk9T>SZ`m6`{>D;(Ex|+c*r`Tu z@=(8K&Aq*PHOrgV3on>+5Tk;lad^(`q4e+XgAe4*yLZ^IUVI*5p_wJ`Gl;#MA5Mv` zWh8s~PcY!&;PGF6=X*YjAev9|6Ystz0Ddiv!2dzTChpT8fn(x^Zbpw`F0$u7ysSsr`FLOq^k1}#G_jwI0ah0N!QEPIJrcMfGZdBL{y zr9Yl!UMAmwxHI%$(`&yUm`R^B%+p!jUMQ=-=O_ zO%f9iP(XL^AWsJC1L2pDU+F5w@D5$MIJ+M)l!9!bKffR-mtTUX`J7${BAPX88amWF z@0c|!cQ*fs*y^F5ONrCNXnJj;A`g%gyfOkzG^Dy~JI*#|M7hcnfP38dUv%IpK& z09B}9{(LiM{=H`NP>xXDnMVKq)~!46tlcr0dQ!`t_5NB7gn^RHDWBm=xM%PF27%o*{+1 z(<)u3XD~%cVNkfTV58W}a{fc<%loT^&y+BZEPYXEHB> z#U9OhJ|LhWx^oDRM;5!Mcrcidds|k;WW!Ujq6G{5^Pkyh`qz-FJ2TR=r(b`yWQhkK z%tq@!g9X=KCz+-!3Aff<%4oWE1lta@<|vp$jX&odMVo#AUCs_O?0Lk zgGdRv+mLhFL<7!dUHX)Ck5h|PJQlQc#!cbE7B2MP{~9;$5R=OQxifn-`t>t&rV=GQ zoc(}ryvF0qqzjh?FAkzQEBJE=}ma|KthE>rQ@<@b`#irp5P{e5z4j0E_L5AJN^x?6t~YmC;s#L^ zW@gA_czLeMs4REBfDF6`OSSK*_xAB)_yifaTRc*pJ2y7i-o8#xfQ*ye*`%W*fZHPetew41po6V$BXqu!J#@)PBBQ=== z@CCB)Ykgha-)Cs(0+SY9#qDNp?*7!26WqllS6_n_!vo-6S$X91-Fnh=F^K3+s!BM_ z?k*!EMu#*Mox0B6-Zgk@SX^B$7xVK>P8vGdcywwSMGvK{)ac6JjrZ{!$YR0>F?*@;Gz|e=`^_<%ge-K^-mU}0S*W8IR46(Hbu2_r=~G6 zfy2>?sR;q9N+d!qhsX1uPpd^|B0(-E%bB7r>~@k#yk1P_Tc%bLrchvPto|q=+Q({TXNOP-tF_Zp k5kd$dgb+dqA%rmO4=%Chv$o9ywEzGB07*qoM6N<$g3C6}V*mgE literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image048.png b/dox/user_guides/boolean_operations/images/boolean_image048.png new file mode 100644 index 0000000000000000000000000000000000000000..a9cf2a5921b6071c16830049fbfe2b46f97d49aa GIT binary patch literal 7500 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 IC_uvg2V)vn9smFU literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image049.png b/dox/user_guides/boolean_operations/images/boolean_image049.png new file mode 100644 index 0000000000000000000000000000000000000000..482d39941a9aea8f50cebd83a5eaddf9be8189fd GIT binary patch literal 8038 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image050.png b/dox/user_guides/boolean_operations/images/boolean_image050.png new file mode 100644 index 0000000000000000000000000000000000000000..8f72119bc169a807fe8e0ea22434647687a488fa GIT binary patch literal 3619 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image051.png b/dox/user_guides/boolean_operations/images/boolean_image051.png new file mode 100644 index 0000000000000000000000000000000000000000..349b60a7a8fcb35382a125f94eb142626ec4cedb GIT binary patch literal 2069 zcmV+w2 zL2~Oh42G4N9;7`=cX|8nx_w9Janfba(C%`S_imylv24qhNRbo(g5>v2W@0NO2!p=? zQB>?{0ssI200000J?7dDz*x*z&CQ4pY}o1y<$)rR+=lW%g+pOca6ytRJ)t}hpg=~X zJvhaD`<1UFln2@DD6L3&h!0W;YNbd-C=U)e&QBCvkR?MLSu5Ll{Ttv)i6&C|Y#N|E zSU4qxNaw(xNPD9rqkyfI1iL72P=qIb-aIgN0Gy*$=JM@Qa7RIFn&;I|epl!jMa`WX zhP3CN(yf9s8>|PWW8dy&fRN?sdDPYbY6-d+4^xcB@49*ZWt!egA9sY2GMBet|g! zcNxv4cX2MV+c~ZKl-f#XPfxQ4%I^e1{F2}0Bm6H(4PUNPmDGG~_Osj1zrX$VeR_NU zBj3Xm&!&tQa_f}wav(;o?DD7TxYKqre@@e{)AaAh!SBESm+4_TxjLG^8ouPl0Jfyd z?!-GiHouWM{FbfqY|_)-s?Cd}U-LiH%bzl)`lH}XXs^rjv7I&#*X=$}>{e~W&h3sp zJO1nGb;gI_)<3X|&~mQiR;aJW%hL6_$as1xDpRhp~vuq(DWB7&p>>0k(AO}ZR+XvDdGzuS8zS1y&~C7$DMZdlztE{beZ<@ zi)_Te`fxx=xyNCWUS}9}%P}ahpAoN{@joHH2ptsM`0(Wg_fR+I8;nfT1vjO8_9%(D zDzOdX3(?{_BX_XW#-A!lUfX8a1YIoBo|aOx^r6=niqK7aDs{P_8Wyxid>gX=m*UW% zcps^YFPjbKA~jg{>KAd@O|k`7_L|Ew%9#vwrX%88vDVpn%`J9B(w@o{=96<@w|ie) z)F!35yVY*)y@#&M2_RN#qedNK$9gL9jDkZu5 z_*I8SeERJD7i{&oVKk@og5j>d?xyTIj@8}@M+S9TKx zx88Qn(6XDxF1Qt6_2{y@Fk0HH{$i2c!Z>Nq!)ru#4|KoIaPsPq-7~!wTvsm&+3nC@ z!R_g_I7RRdHto-7zZka}MamlNBOV%!SZ{6GjN;8;KPb(gLC)}>r;%L{)q-{2LfnXm zTs%jhTU0}H#&~*Pn^C+OZyW8<6eJ|KU2;KoL2N?fEp>T&)x%*H8nY8MgHh6*fqjfa zW3VhW8>QF{s1TZ37vVg-Qdp=G8sja8S|5ai?1EGbP50;Zd>Dl2 z@qbrs-Nmmro1GvYnszV3H4%zV5DZNR8?3U%kzEj}(DZak!dpz(lii`e9ZzrDxXA9A zxzm53clA*R$nF6rv!aKS&lW;<3$ALADjo_hvirnC0bwtg_q+E(B>SKzQ2^wLXWdfQI~R#ns9*5hk4M z5dZPQ!#;6d9i02-*}VpE8$KNC9G~x9pDsD{s%^Xl6n{p+)w|i1Cw`pi7AGObjp6VR zYkU}y>XoJX=xDAQ6+=Jf(6CVJeP3%(H0KEW$rxcoIL3HZ`W_B4u&hCr1EIMFXzOz} zJ&Xb}7-R?o`)IC7RHv<7ghU4Uv*X<4sb7t;q^@ScNu5`t{&>SojNWrEHbWUy_%59A1AV|76G+M&A zB&tNV89-7^Olg4TAe*>o&ioZ1MkHfJj-xpcU{^-z2LTG%=CJKkGzTiIg%x@XAkR%< z+Xo}?Qrm%XdD0nQ-U4p00000NkvXXu0mjfP1Ffp literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image052.png b/dox/user_guides/boolean_operations/images/boolean_image052.png new file mode 100644 index 0000000000000000000000000000000000000000..5d5f94c987fc88ff1ac5415a0e43ddb816c9d914 GIT binary patch literal 3424 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image058.png b/dox/user_guides/boolean_operations/images/boolean_image058.png new file mode 100644 index 0000000000000000000000000000000000000000..458dd49bb0fdd7c120860fff0bdf572aa53d94b6 GIT binary patch literal 3773 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image059.png b/dox/user_guides/boolean_operations/images/boolean_image059.png new file mode 100644 index 0000000000000000000000000000000000000000..44e0c93ef21227a862db200f77ca2dd0abc3894e GIT binary patch literal 5123 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image060.png b/dox/user_guides/boolean_operations/images/boolean_image060.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee73f12a900649c3365198eeaece6e78fb0fdbb GIT binary patch literal 5091 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 FV1k{k#RC8U literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image061.png b/dox/user_guides/boolean_operations/images/boolean_image061.png new file mode 100644 index 0000000000000000000000000000000000000000..cbe2300d02b3c38b0705f4c006d716a0f4ce0890 GIT binary patch literal 3467 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image066.png b/dox/user_guides/boolean_operations/images/boolean_image066.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5f3df9a1b78e44bedea11789fd775eac750625 GIT binary patch literal 2416 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 Bph*A# literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image069.png b/dox/user_guides/boolean_operations/images/boolean_image069.png new file mode 100644 index 0000000000000000000000000000000000000000..cb14fdd51faee6026054bed45bd952e35031f07b GIT binary patch literal 2763 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image070.png b/dox/user_guides/boolean_operations/images/boolean_image070.png new file mode 100644 index 0000000000000000000000000000000000000000..7552cde35d4d1fd356c96b1283580a3d58e9f893 GIT binary patch literal 2658 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 DYeFYn literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/boolean_image073.png b/dox/user_guides/boolean_operations/images/boolean_image073.png new file mode 100644 index 0000000000000000000000000000000000000000..31e4f128305e0069e23faa3b25c5b8034ad93d5a GIT binary patch literal 2135 zcmV-d2&ngoP) zO>*lt5QL?wTqL(~RgRD&WUJgF`)s_;Ied-m-cb}i(UuvJ6hUBqx`F=63t18|GnmEz zlt}1w5<&-N0nHCwJPE6~#ug%e*Ut7WGANm0S76t0^KpzFrG2Ea`dTe5iZyp+_=y$;R) zc9+kn0&;p)>~eki@9Gh78rl^>`y0B)>hmGK6|~jrSPSiT4NawmPe6t#pPI65lZZwQ zjaz<}s327Ux47A*V(k)h$jB6&i@{Kr+Q_3u23NS4NGA%sqTG5a+e_ z6e6@R8YnWdno6u1k&+IPUyuwFhS}60bcK6#| zN8h@+d?0Hm*cK-i*W@26`_CGxwHS%!wLO{zbcmUTE*~G4?-wo~_nGbMsp)+iVoS-W zWVAs;9jY6hZ}Tv6KfL6&tkd*yV&g=V~xZ0?QidY|Mu^%f33dq$LY`2SJKg? z{*|;3zSYl%zKhcT>d>uV-5*~r%Swb(25>w0$BHjMke+joc`*#giK%SDP@qb3?1`zE>+mNsK9B z^tlMHn`~TKowd)I4^p=`@h-5g1&KEq{mg4|*R(q|OP&U9|KrDjhm5#$aEG-ZrCma5 ztt86cUxO@=baxG9lpc#A9I@b(O{;5fV64DPq5z9IZPs*DU% zX0vAl^^Z}Wzb3VDlw_MJ%Y8q13(`3Ann!|+_l{9PLdGdCF8dFuAfbVnj>7Xm-V@`; zX+LiW54@A*yAK-mnSc70BPQVX|FQez3BOr;K<)X_G}RHYA0zcbo0Q1jj@#3dccINi zd?$zQ3#)?UO-kP;>@Cc@&;}=~S9A8K*1Tp*ZfBL> zVYgCvFtmnFVE0TyIaAK)8anOOfZ!p-)yFgZjjUtLr+lcZ8==j&s6{S$-Z= z`v!OYP&(ZO_wmOM_6(keN;i z)o-L$v<&5pmEErGg;*>%0p$#<#bA43=5}j9WRd8#lcVjW6!tBPDW3EyS*#CyV@yLi z!)qnZUiyjd+y^LUTup@HYA-!ubH;I|pX(T}J#F=64dy0sKpL9H0a^#40l4`oiiQA( z7c6L-pXO@_ZB(&0&*hj%s*5^ zn!mhBnb+bpr1BF({Ja*SA(fwaA`6nchE#sC2rEdw8j^t030P=*X-M-I4&L*ci-uHw z&~TmCj5Vb4gN#!_veb~u4?Z3R$woseKU~-rBm)hp{4iozkXkh)0a0Ue=3lQN&0l>m z-?=svsJk6pQKY^mN9f-{V$2M)`z}_15kNTMhN26i<9V&)xDZ1_^r;yI6%DAm8|W__ zj)*wCEJLxRL8JFQx`~1{5LUluD1?021Caj^5EoMB98h=rI;8Q)Z7di^2BX7tJ|BiF zLU{`cQK)hi7nYLC;v|KiF5pKl4+#JtL*Tw4yB7^?U&t{gFh>=pOMqShfz~_nhZ3l6 zk~6H}lxrL}Ks+G>q1WUCJ?Y~w-MR#1Lt;OUX}V9cMr4*z3CN51o*lvBa0GX8-{!_8 zveZW!l7OO#>G7Vdh!q0HZb17IP(H3X;B8zS!!H?(EsIK=CIzQ9B_LePbA#WYu*Y_k z+cqTuF=3T0w01-&Cga|u1qq0o#{A_TE>LJmWY)0)j_L`e`X~vgPb%^nbBJK#XoWcX zW(jB%$}{cpPSFX4DYt!_=#7%8r{oP1(CEBYK+CIQAYRmx7tc#T;+a)Vls_rNPnOkX z`L6^d_L-|>>#-0!Jmj)`Af7m9JAliRX!I-Wq7s!KA%qY@2qA + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + S + 1 + + S + 2 + + + + + + + S + p1 + + S + p2 + + + + + S + p12 + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image002.svg b/dox/user_guides/boolean_operations/images/operations_image002.svg new file mode 100644 index 0000000000..b19278819d --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image002.svg @@ -0,0 +1,591 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tol(Vi) + + Tol + ( + Vj) + + Vj + + Vi + + T + + s + + + + D + + + + + + + + + Tol(Vn) + + Vn + + Pn + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image003.svg b/dox/user_guides/boolean_operations/images/operations_image003.svg new file mode 100644 index 0000000000..2d24a55400 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image003.svg @@ -0,0 +1,590 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + E + j + + V + i + + + + + + + + + + + + + + + + + + + + Tol(E + j + ) + + Tol(V + i + ) + + + V + i + + + + + + + + + + + + + + + C + j + + Tol(V + i + ) + + + + + + + + t + i + + + + PP + i + + P + i + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image004.svg b/dox/user_guides/boolean_operations/images/operations_image004.svg new file mode 100644 index 0000000000..a1fe0dcefd --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image004.svg @@ -0,0 +1,750 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + Tol(Vi) + + Fj + + Vi + + + + + + Pi + + PPi + + + + + + + 2 + · + Tol(Fj) + + + + Tol(Vi) + + Fj + + Vi + + + + + + + + + Pi + + PPi + + + + + + + u + + v + + + + v + i + + u + i + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image005.svg b/dox/user_guides/boolean_operations/images/operations_image005.svg new file mode 100644 index 0000000000..889ed65902 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image005.svg @@ -0,0 +1,650 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + E + j + + + + + + + + + + + + + + Tol(E + j + ) + + + + + + + + + + + + + + + Tol(E + i + ) + + E + i + + + E + j + + + + + + + + + + + + + + + + E + i + + + + + + + t + j2 + + t + j1 + + C + j + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image006.svg b/dox/user_guides/boolean_operations/images/operations_image006.svg new file mode 100644 index 0000000000..9fb518c6b4 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image006.svg @@ -0,0 +1,817 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + E + j + + + + + + + + + + + + + + Tol(E + j + ) + + + + + + + + + + + + E + i + + + + Tol(E + i + ) + + + + + + + + E + j + + + + + + + + + + + + + + + + + + + E + i + + + + + t + j + + + + C + j + + + V + n + + + + + + Tol(V + n + ) + + + + Ci + + + + + + + t + i + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image007.svg b/dox/user_guides/boolean_operations/images/operations_image007.svg new file mode 100644 index 0000000000..467ca4dca1 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image007.svg @@ -0,0 +1,687 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + Tol(Ei) + + + + + + + + + Fj + + + + + + + + + + 2 + · + Tol(Fj) + + + + + + + + + + + + + + Ei + + + + + + + + + + + Fj + + + + + + + + + + + + Ei + + + Ci + + + + + + + + t + i2 + + t + i1 + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image008.svg b/dox/user_guides/boolean_operations/images/operations_image008.svg new file mode 100644 index 0000000000..13a65e65fd --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image008.svg @@ -0,0 +1,690 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Tol(Ei) + + + + + Fj + + + + + + 2 + · + Tol(Fj) + + Ei + + + + + + + + + + + + + + + + + + + + + Fj + + + + Ei + + + + + + + + + + + + + + + + + Tol(Vn) + + Vn + + + + Ci + + + + t + i + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image009.svg b/dox/user_guides/boolean_operations/images/operations_image009.svg new file mode 100644 index 0000000000..6fa3c83e45 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image009.svg @@ -0,0 +1,430 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + Tol(Cijk) + + + + + + Fi + + + + + + + 2·Tol(Fj) + + + + + + + + + + + + + 2·Tol(Fi) + + Fj + + Cijk + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image010.svg b/dox/user_guides/boolean_operations/images/operations_image010.svg new file mode 100644 index 0000000000..aaffd4d6f2 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image010.svg @@ -0,0 +1,471 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + Tol(Vijm) + + + + + Fi + + + + + + + 2·Tol(Fj) + + 2·Tol(Fi) + + Fj + + + + + + + + + + + + + + + + + + + Vijm + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image011.svg b/dox/user_guides/boolean_operations/images/operations_image011.svg new file mode 100644 index 0000000000..37c6a2b6dc --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image011.svg @@ -0,0 +1,483 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + PVb + + + + + + + + E + + C + + PVe + + PVi + + + t + i + + t + e + + + t + b + =0 + + + + Ve + + Vb + + Vi + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image012.svg b/dox/user_guides/boolean_operations/images/operations_image012.svg new file mode 100644 index 0000000000..86674b88ec --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image012.svg @@ -0,0 +1,762 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + PVb + + + + + + + + E + + C + + PVe + + PVi + + + t + b + =0 + + + Ve + + Vb + + Vi + + + + + + + + + + + + + + + PVh + + PVj + + t + h + + t + i + + t + j + + t + e + + Vh + + Vj + + + PBi + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image013.svg b/dox/user_guides/boolean_operations/images/operations_image013.svg new file mode 100644 index 0000000000..8ac9a68d15 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image013.svg @@ -0,0 +1,704 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + V + 1 + + V + 2 + + C(t) + + Tol(V + 2 + ) + + Tol(V + 1 + ) + + Tol(C) + + t + 1C + + t + 2C + + t + 2S + + t + 1S + + + + + + + + P + 1 + + P + 2 + + P + 2C + + P + 1C + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image014.svg b/dox/user_guides/boolean_operations/images/operations_image014.svg new file mode 100644 index 0000000000..81d8fa7d97 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image014.svg @@ -0,0 +1,428 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + E + 1 + + + + + + + + + + E + 2 + + V + 1 + 1 + + V + 1 + 2 + + V + 21 + + V + 22 + + + + + + CB + + + + PB + 2 + + PB + 1 + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image015.svg b/dox/user_guides/boolean_operations/images/operations_image015.svg new file mode 100644 index 0000000000..98ce6c98c6 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image015.svg @@ -0,0 +1,403 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + V + 1 + 1 + + PB + + F + 2 + + + + + + + + F + 3 + + E + 1 + + + + + CB + + V + i + + V + j + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image016.svg b/dox/user_guides/boolean_operations/images/operations_image016.svg new file mode 100644 index 0000000000..adb9d41373 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image016.svg @@ -0,0 +1,918 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + F + 1 + + + + + + + + + + + + + + + + + + F + 2 + + F + 3 + + E + x + + V + in1 + + PB + on11 + + PB + on12 + + PB + on2 + + PB + on31 + + PB + on32 + + PB + on4 + + PB + in1 + + PB + sc1 + + E + 1 + + E + 2 + + E + 3 + + E + 4 + + + + + + + V + 1 + + V + 2 + + V + 3 + + V + 4 + + V + 5 + + V + 6 + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image017.svg b/dox/user_guides/boolean_operations/images/operations_image017.svg new file mode 100644 index 0000000000..a850bad8ae --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image017.svg @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + BOPDS_Interf + + + + BOPDS_InterfVV + + + + + + BOPDS + _InterfVE + + + + BOPDS_InterfVF + + + + BOPDS_InterfEE + + + + BOPDS_InterfEF + + + + BOPDS_InterfFF + + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image018.svg b/dox/user_guides/boolean_operations/images/operations_image018.svg new file mode 100644 index 0000000000..073cb935da --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image018.svg @@ -0,0 +1,827 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + V + 1 + 1 + + + + + V + 12 + + + + + V + 13 + + + + + V + 1 + 4 + + + + + V + 1 + 5 + + + + + V + 21 + + + + + V + 22 + + + + + V + 23 + + + + V + N + 1 + + + + V + N + 2 + + + + + + + + + + + Chain 1 + Chain 2 + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image019.png b/dox/user_guides/boolean_operations/images/operations_image019.png new file mode 100644 index 0000000000000000000000000000000000000000..f1cec1a666ffb60c0401f9eb260f1e5b0994a813 GIT binary patch literal 27381 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 Ni&}=7b?Wvp{{ + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + BOPAlgo_BuilderShape + + + + BOPAlgo_Algo + + + + BOPAlgo_Builder + + + + + + BOPAlgo_BOP + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image021.svg b/dox/user_guides/boolean_operations/images/operations_image021.svg new file mode 100644 index 0000000000..e225b619f4 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image021.svg @@ -0,0 +1,596 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + E + 1 + + + E + 2 + + + E + 3 + + + + + + + + + + + + + + + + + + Vn + 1 + + + E + 31 + + + E + 11 + + + E + 21 + + + E + 12 + + + E + 22 + + + E + 32 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image022.svg b/dox/user_guides/boolean_operations/images/operations_image022.svg new file mode 100644 index 0000000000..7bb5f137a5 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image022.svg @@ -0,0 +1,1010 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + E + 1 + + W + 1 + + W + 2 + + Ew + 21 + + Ew + 22 + + Ew + 23 + + Ew + 11 + + Ew + 12 + + Ew + 13 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E + 11 + + W + n1 + + W + 2 + + Ew + 11 + + Ew + 13 + + Ew + 21 + + Ew + 23 + + E + 12 + + En + 1 + + En + 2 + + En + 3 + + En + 4 + + Vn + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image023.svg b/dox/user_guides/boolean_operations/images/operations_image023.svg new file mode 100644 index 0000000000..01d9b9c5f4 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image023.svg @@ -0,0 +1,516 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E + 1 + + F + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + F + 21 + + E + 11 + + E + 12 + + E + 12 + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image024.svg b/dox/user_guides/boolean_operations/images/operations_image024.svg new file mode 100644 index 0000000000..5b0b9bb57d --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image024.svg @@ -0,0 +1,584 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + E + 1 + + F + 2 + + + + + + + + + + + + + + + + + + + + + + + F + 21 + + + + + + + + + + + + + + F + 22 + + E + 12 + + E + 12 + + E + 11 + + E + 13 + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image025.svg b/dox/user_guides/boolean_operations/images/operations_image025.svg new file mode 100644 index 0000000000..c39302f23f --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image025.svg @@ -0,0 +1,806 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + F + 21 + + + F + 22 + + + E + 1 + + + + + + + + + + + + + + + + + E + 11 + + E + 14 + + + + + + + + + + + + + + + + + + + F + 212 + + + F + 222 + + + + + + + + + F + 211 + + F + 221 + + + + E + 13 + + + + + E + 12 + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image026.svg b/dox/user_guides/boolean_operations/images/operations_image026.svg new file mode 100644 index 0000000000..7f169ad402 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image026.svg @@ -0,0 +1,1034 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Sh + 2 + + + + + + + + + + + + + + + + + + + + + F + 21 + + + F + 22 + + W + 1 + + + + + + + + + + + + + + + + + + + + + + + F + 212 + + + F + 222 + + + + F + 211 + + F + 221 + + + + + + + + F + 223 + + F + 213 + + + + + + W + 11 + + Sh + 2 + + + + + + + + + + + + E + 11 + + E + 12 + + E + 13 + + E + 14 + + Sh + 21 + + E + 1 + + E + 2 + + E + 3 + + E + 4 + + + + + + + + Sh2 + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image027.png b/dox/user_guides/boolean_operations/images/operations_image027.png new file mode 100644 index 0000000000000000000000000000000000000000..d5163b620a75e870b7a34e77677daa51b9a6a5bc GIT binary patch literal 5160 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image028.png b/dox/user_guides/boolean_operations/images/operations_image028.png new file mode 100644 index 0000000000000000000000000000000000000000..e8752be452869357010405bce9c1c87a619730fa GIT binary patch literal 5838 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image029.png b/dox/user_guides/boolean_operations/images/operations_image029.png new file mode 100644 index 0000000000000000000000000000000000000000..b4c687000e1b0a33d012a0d1be96aa501840520d GIT binary patch literal 4793 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 R+yA5h%uFnepB{0J_#X{{@T33$ literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image031.png b/dox/user_guides/boolean_operations/images/operations_image031.png new file mode 100644 index 0000000000000000000000000000000000000000..761a5c36f37b9e310d17f60675cdd7c728513215 GIT binary patch literal 5829 zcmaJ_XHZjHv<4A^lmKc3Apx#l5h99+l!Q>Cbm>);j)GjIh9*)J1f&?GS3>|3Kq-Rs z-ZUaD5F~UAB@lWO2=&Du@7J4oGpEd)Gkfo~*IwVZzO|wa^)EBdcBp`54aT@_P=KaHDNr;6*LeHnFWyl0XB z=aL9GI5?P@Vm+IH>{#M1bozJm6`E4;X={^TNIn;vpmwI6mCqpSPLxi@$t&#al$1@( z>=bh+yDGtqM5U@UOC>SOo_3%NF7apGO3ADBXNneK@5ty;_S?&i!oLoKIR3oZ?TO54 zaDK}sD$qjwGEnL$r8=>}GW*W#Yi>itv(|3Y{o9`dG36m0wUB!|qF6@`?tan5g;c5J zW(y-#3H~dif)Vf0m)Y>)_!U4NAOr3OAal4$Mrvq*fgn{!&At03eMj=Kl5fBX_zZn#IV! zLfriJ`FJ&y0yJ{*GS*%`G!@4F=b~hJ)vkixA*1m$Laj_X z!^BImik7jY2SZ9(J{nDQ2I*r~|8dleixkSJe$M5GaQhWn;QaW*kL9g`aPg-Rl_fS{ z_1?{#St@&z=wg$#($@!*8dGLEeIf{2J?KmKERVh|>gOMA|#|>RsB*F_c>esYb6RL^zu{NfB7frN^7F)9iqB+ z{=7Iz5ktzB#9mUdg5>@OX74b}?vX~{O#u>mZOYgJRd0V-Kb&#Q{U3?Ls}Jmc2-&2(=Y5r_QonPZTyT3eiHjuNrA^;BX=CB?XX!x2 zQ6DbUskO%m9s2HDpXTG}2KJ_@+S@Vex`bBZG7Bqb|4CT$Ru=&ay4AbAnPpCN^EgriqjQW{WaNE#_| zh#dv9D29$NY)f+X!%0Zrw;7IQrLstgmwah3pqdf9aQiHmC3S>ZXEYkd@If6-G!ATR z#l=A~j8Affu3(eP?za^2YM8^>S>R~l{2H^*u)uGCk#&yV$3v}gTc5;5^tShSJ4rMQcwQSe9M_qCE zsB*2SD?Z_a;*-@}D^;SrZNRiM)3y+AAWIEf*e*}M1OF?}8Bgn8TB5Hks1{yj+P z@n+<#P59>=QSEgzr79 zpUvHBY4B>}5&KYLOFxE$ZZ=Jt7#Mg2er0zLijsW1=i#2i%xZi~qHdM?*c}IV`T^Sc z2PK@OyZ;)tA+HY7b zhRh}c<$4}g|8sp2cPhQxLiOiHC=;uix6fo8;a(zXJCwRA*@Ed(qw=fz=|vlPhXD)e z&*6)gF)$L6xJgKp5}_@oo5LIp#@DnIA(!)UJyZd_%+$H!7Kt{n;+F`U1J(Y=hf)Z5 zyW5=YBr?Q5jHY1X)t(t@vq{E&F7jmkZne6b)uj04hzssMIoWcB1$^0XJHV3nX-v3>S5HL^Y^3fXxP8Y zDad2}f`q8#(yErCFDz*KQq{`4Q~HNPOJCsD@pqOB-y1$%LMLBA9{QI=mm7_izt=s9 zrXZF*Lbfu(WQJnUHHeUDfU7>j7h8RrkPm~93WPsjE0Z%*GWf(^V)w+=&vB^&Hj~{` zM&it`QRgXHnHa7B}~&s96a#vYG8f`8up$9!5#hLw>IFMKmD?gt<}XMVdo0irR7Jl{}3Uj z*PgQIMex6-iBfK;biB%E*{#o;_-~;>4$b9LLVDyCd*%Uv#h_I*=A-0*>9fZMw;bRK zjz4`(jN04`QPZ+E&SCg=PIwojUyE++XT_8#d3F$4tGL3Jc=}>Frz_?@@u*E<03#VM=T@LT65fC$UV(JYW4YZM8Z5_93nv zw7;%Uw)E9R&MS{9`m4ejaLT$nnCBhVBh8aN*>=8pZ~gZPQwwu^e|d4u^l4+-!)r?l ze5&k^s~wCAqp!?q!AkuqjgLre874QWnAlh=u1FTDeB&T;WQ_OT7OUG^nE61}ZrHTx zNHla_&2%E~eGV|p&*SnP0ox2LkGC#LBpqmsoK~)n(c3Xkr#}46lds>2hYKuQ8T0{C zf$giM;cE*XZ@BxF!-TynSlhQT+c{EqAyIb-z)oDYjtPb3O_!tkX!O;{050AQA)DTd z0Y`&oXI@+n5^60FA450T*^wVH(l+nWgQOeo2?F3xnZKhRA-(B9NgJn}R!Y9SOs&Wdxj)`gOY>gVN`&Jw2vAd`upT zRdnYmq&A;q-FO`mejSnaczC{Fi||@^{^D{{KZ1l@!jSkd`B{ztDqrIV|Dmdkk2P zpA-1hTOM90k~W7Ar)F`8aA^aAiH^_}t$^}>@!{p^9CeGj0LBpCOb$inGBTNLAx*c( zaBCX?e)*Qnn@{NIxW{^h!9rSc8EWA`(KbcK~ZeMTA| z&R{%LPx(_z4=;oLc5Upm9fht`Cxv(wf?84i<(icW#J7UCc^`(bVIDX02F(^Py{NFc zdyDat(k+w-6f2*(l+d~*^8+|^R3_Ejp7d_tzr^t_0hk<`=;H_29UTd`MYjuth3RWBpOopchA&mokGeKr^xLvf4k5@|xIdPM5yX0Z={&GSr~0 zTRU^UYLAyFV%~WPL+|*?kc#Lv1CYW0s=^yk=-Bu;OkTfXn40BSe&Kdr>tLJZAE6&A z9z7zhM;Z(o^!U~rCD1I&z%EVZ)9xsTnWxZDP*qvHj9t2kmkcl5HlOD;4Qs>@Z_gW2 za)9lV3@JFCX5op8-(b&F5hxfptv&NkUA_HP7teEDep@8uSd|}vx6g|~S6cQWgyNCj3MDCSHK_U|d5<=?8CWC9ak8@efMYCa`O|GK8- zspaL>+~$dEoY>kEqKBE=L(k?_#FSR`yP5%DF+;oy1>D8odTWAScS$E>X-ql)L4t#N zlyJ}e$oFIj4)`l|ox5dW=)YR>G~g8c9|(k?z=$4T6%vcL%3h0g;q1_b{?KmS2>#X8 z)!g>47WB(zj%hVRJ_{lp=X$H-dmg(%vius zJhJ>(E92>7N;vOdh;<=buE(*4ODUW`!HUF#(LZ-U%ETD8!VO(kCHECF1kN@H!Eh2y zM+WwC0GS+845lZRllRUo%VK~~l^gfe$@O-65fHu8#xLm0*)-9SxOgdBC(fS->~L91 z#@BagfkWCahW2b;(#Jav*Bif9JLSZ^J1Ah#+wkP^vIbk}UT-@pkJb7Ib>y}47=O9S zR!Q1aP-^ihrN3;hr`&A1{#9{_<$MjoMPZB71`vz$f7d2zp0lCL_WFuz-pX=9ftkVu zEXaa-5jVC}hU;P;yDls#+E`AHAQTUOD3UE>v(f!-rKR1(@nyk2^Rge-G~$=wE(L)J zl|C;E4n{GWhymsmZQR?+y7LgGJi0TtBbFFjyqx;n!{(0Y;=lz$T604+S_8j!Q))%9 zB_!xtS0!I8_|uDnl?N>3+X`zsR~eO8CP(O#W~ow8jY$@!XiAN>sj}j!Ue+uv$@%4v z5x#ti2EK$fviv&O|5}Gh$yJW}@OHazH+c;tqUwjoM$y97hd&Pn$#@=)y`ia6%qZ?w zDD0rr*!$$S_DP!el}3!!Us9`NeujSWo;SsMY~cTE3kYB6(H9tpsG)kahxUHtzaux{ zN~t~_yS^ndha!s;x~PT;lkTqJ@6=(|(U+qf8rhs4MwPhm-1^~X==&7QI8MaPTPra4 z81XCxqZ!)E4TBfB@aIeyDqCH=j*j{6g6#Q@IytjvQ`s4$I$+BF`y_vuXcWDLwbiBkyKRImJ?)JjUtB|65g{4H*{NmQv}kbq35H zzQ-Q%C{#u^y@d(T&hGX8V{uD{Xphwg;N}&dMv3=6yuDsCyhlr14JS?&s;F$Wup0s= zo$0_&;?R7U{wbsn zd`ik^QpHSzKWDDX6Tt;sRfIv^me*8;6mgYo{D*gMs0t;|Vss;ua~Puqf(f#_TQW-u zlZBt`_Ae+wxPDb>psd(CQ9i!-@MmbwHzQ|KFh0C`>J;8>d-F5~F2wK7s0>0G=73nW z5H30V*?*O@pq{$D!|*@x4B((SFU_LsJ>hSuwXM=Stx*gs!B-=7GT!_R4$;mh5++9m zm()#O|I5S9=#hTP5car-zPi XCro?X;U+NJ(@fgx`f8>3?85#BpG#HV_bjM2ZxVVn9GqARxU82mzFiH0fPH5;}$=Al-x_ zNHcT@)esP*#gHIULg#MZ^PMs79p~q{e=>Hm_gd>&Yp*bdWEE*SYC0D<#p@1I_voDC!R8keQ>E(7XyW@lCat9N zA}95^JGY(OnisRDYIq}wsHv%`*QlD~+2w|Tz5(iK+){ebk^QzVH=VH6Wc|-|J9p#}?m$Kd4W$Hz3D}(|rw4-dRmcD!%sm7F0H%LxPXmA|-T&fe zrq>sh+--V+fL{?+Hln0MYA%W4G$s3%Plx83abus$jvf%McZ-2+|unpmWADp>cZ(BR&HR%6#1Jp_=y^BBuogvV< zpL2k_yLdzB)k*+)rdkQ*b2+_8g|dZ z+k$OBF*?A-&BzFb2m`uLbPn({(}o`y{{b7nJ5e4J93`SSnn}+Z3S$6bg2yr4i=8nH z;Cw!va6nnhUo*e00)~iDAvb+>d%(^F;RX6mm@IR)AqP~zLAZ0hj?Rpbq~B72Fy`6; zF00i4n&%u)?io5MLKH$s1Lx^Ymg&2ZfhBmg-Dd^)&CZ(Rq7paix3-3Hz?o}9Si;Nt zS6bhC_{LIsl&j24Fx-tzP3{UWTUSq3!EgK~)^a-#$K=hL%%Uj-@@fU|;>=j_pJku; zK9Z15bg!(C9rIht8@d`(##*ZRst ze+KhxUsK09uye1xSFRmXFmEy)XcIaQ`$i*WTny9 zxknUx%fCtq%2M6TDwTt&@!asw=$pnW`RdmjdKnmaNonjU=e?ltFL)RNu2 zfDz@-?~gNXJOU)^IgU0G@*XGg${?8AT2xT0=vo`vDW5OE^59^kU$H zZe&08>JW>yA|*O}ug7@=Xjm{uGcUac;PV$7VK+l^!EXc94$ zM;X?t`Kk=z!q{u6P79MT{v9MUFJU!hM6)5{hu<-)txoQN*nIDAq7!_ zeA4v2Px$LVb60no;@~osA{uud|l6RtfBhqvrrHUbyG_DWv+LIAVOEr6cv3%z& zIduMks*zF2X#dA-WqT*bdh~~9if^gBU!B7&njC^BD})?~@F6*g8gG5wHJbyw)9wJ+ z_rn2$gXb6S^(-4Q>nxW^!cEFk{j8^Svcq69ilo&k>B!X>ZTa=2frP+J)28B(JR_6} zng7yL7tM7mcHK2W%<*g39WFm>c*&qSn4}RxaJ^zC5^-(D{ESbW&;EWHR;g}cH7aBX zw*r_f3(`dxJZgFxk5-v2E;iS;xaN!;Q8*BLa!#^&oV!ETwlJ1ReRcs#(Wl(Dikf1E z@IK7-;`re!epZBdS~Mp8F%1b+-7F}A>r`FnxQSbtFr>e%MTZi z^JI*_2j5`*7QN)I_{=Nw_c~X^ul=voayp#D!IXxD3pTT4~Yd@LO;)XcuE8_=M z0bdV)k|--umt5q#IYdx~n>n50W0K^|>6~A6J|=0kl!dA9z1tYbho8FwT4cFVGsT+Q zFYTn@w-$wmac3M*&c%4GTQyt)Y9*tj%2ndvyYf3ww^qAkF4QMRf4B9F8Z966>rPcr&crW{y%o?7 zABTr!XVPahroqya7AwT+Yov*@BPneiQJRjzX>ABczU^ag574h z-c9nnxQ?KUE`RI0-sNs@&WPzGyh7*5>&CuL zu|h`C{0M_QFV~@;hzM^NG=Zn6GLNNK+E7c}gMDmO9KWk^3oUa|tX_@mp9{utRD~)( z$CF<5_!;$HKTLJa=FEsfXEx@1zv>roL=o^YSIq)ldvu$_-6smE+T5zfs*A3^E|GYJ z@XAD(Q4hkKFSg4%T}h^wPs&{>ubaQ0Uh47&ljx3zZ!w6ZAy8fiVspkk z;*{53!)&0b*Uq7c+WcE>JFy5WD8`HmMs|4wDRIe0tUYc#{Gg~b;{G}(r_svhI|!=W zpayTshKZC(jZPf6%AZE!>(r5dJArdA@ZyxRlanjlcS~Qa;2>zdMd>CGDkAZ(MXl7Z z$``$)`5jP)=gL9aoScJQIM!?@3I@}^Fo(&~WHS=^gKz`{pXSJM1;uHBl~{zE?KNs3J|ezAnf!3AxH zW=Vwd2&2pH^$&a(418HPZj0U*?uCoi;DccQg=Q7-EwOez&fA5(4lM8}6R`pWB(#n) zjuVh!%s8QG3$gv7__I`6kXmzlP_Sl00ukX?SFwcPExoXA1(kuqZwb>9kw?Cm+g{zl zlje||X>`iE4>tA&2(NN7j)zao`(T!KV)wdq8n>nnToN1{N%5%~3=)N!sFusm_TK9b z%$ZVMM*6Y6FkVe#3U~65nw#=cW>+xJu!bwp3Mvb29(zlHzq?B) zc-i1;D7hN$+d3e--TjCgsm5J*awJ8JT z(7Ejgp}CZ1H<#IZ`R&HzWEf&EX_U&)U+2J)I$oH_{Xj${s+D-Si2d?luhV6pCFQ+= zbuH>+JoyM9HBb)B!>FM{LXYMAC6e(`ezg@}UJVQ9Lo&g<5V+f^0af#r|2r#Wm$%0=v5gr*S%Z%WZM83H zL_6|0VExZt(Hfhm<8UjVw97^{Mh5Ga;q7WS&gORcv5)V7Bh~KG4y17X z5Qyi!q}#_U8uuy{LIq!^b!{Ik!-&TV`TNI8ehRhS%(g>6xi7aL{`ohP=#bIAh4g*@j={??SB0P>PmnJ05a666hi&?$ zy>nG5yQae>j}rRt;@!TrvAPigS34)LTTMm1inKBQMwh{y#EK$Z0K1<_dQ%GlN6g|G zEFFB6-*seNf4aNYRXekSQ3R5i07J!7Wp*a)-LO%RBu6RFv4dxx*t=C5y{mo4r85(* z--hZDKQRH$OG|P|IsyiFinbjd+HLQfTXhkf^dQ3Z>EHY4?tr|9V`WgaMd?}A4DNik zg0Q&p(R^vpIJbbZOttA|R3*=Hz{78iyzE|l%G=6i#{5@jp|{qVUk@hXs(7?+!asXI zAq_?BG&Mh(@cy;3;gaH6|7Z0Svwf|r;{#gc@nqn^YTK71c}JqIs@(@&h3YFWEv2+_ z8j@#{b{BkAE2#Izb(<=qSdn`NYVB*+h(|&+z2>E@z7Bikc=$ngEp&DO@?&$ZEELw& z|5>>n%;1Eez;)h3>pI^q3ePz~!6CKpGuDF~2F+GFUA>6iQH%F`qFPmoA7&G8l6!cR z&t7`rZ^iPu#=G5L6~^;X*Pl`C!<zv zEa|vTV;l4HSo`cw6yB400LyMvfixUG-rOj|$27AmP8=jkcb)^{C?!w=HJU=oUJo*8 z4=djitP#6=>jw5(rTU^Y=BRtNdL2d^LZ2)N>h{KSXbA7223>T@0Nx5 zNh$;Nydt#@6;jS)ASUA~$U!s7u9tvXSI<|jlw^=Qy1SFn-jN|X$iKTk_uH@~6s z4k~FU7Cm`-H4<`|vnKSR0r5GOb)PY_Ex*9Mc_3#Ug~EZQ|g+(xXe=V6SSmTR{s(= zegnuI{ic2cT0s@CarPGj`4M@DZ&i{6sLw?kCRqOm2Hvs-mdLfj2y!|9g{N zw!UUwgM?rp!VWF{X6`XdKEDc9q9@+G^?Cm4$H0?0eU zqCXH^!!n+LXF~#>ch4Hy-0WUFX|bYhgK^G4&1m>IK+Z2Dco`xk1Y)~MCz@vaMj;a* zdC9T{QP^>}$cp1eq30apNfXm=nJ$ha@Qz{?iaHe7dM3Zb>;4cdA`>N1j3aWRW%As# zvOD%4>+*hZgoA_&l#ed!EPl-71wp$94OUBl?3odYCKv;Vgdq#C1|2Q`iF&^Yt!V$t zvfpMI!KEfpC26;M5xl<;W&${#_-G!^XuPcp)y4*sl5sQ*B23YEQ6&ZN)qkN6tMEP4eGPXyeE3M%R7~%LQhFN>fNSD1PUIgb31LXS-jLB zD}|1EgQA?dF@+cN#Fz7z6}G)oE;fgDBb^kH)7F1}0(%R_em33;stOruRau{BKMQF- z+_pH*_gIs=_M0~@_BS*$DZ4D8+V-{hSn#w48%g>;_|h{4?bh=n2oVNF%$7^``z~Q% zyq4!ArAJ9dD}Syz6GD54PhE^5s62jcHgQ@o*H@-Bgp~@J11uN4d?D8UXkGOOf*^Id zkV_fe`^`g6s=k3Lr{3RLJssNRT@}M~InR+8h`x}m&0F!z5M`=ee>a!nOxr6}U)hE8EsqnSuyC zr|o+B2&dIE2=O#XK)1`<_AfmCO7$v#XP+?}hoCdq#cdL`==3KQlrE@Miy^g7Fk5RpWfIdKQ@= z-{P=4HroBLyUIwA(>*;$fX^d%F)5bDe>}m>QZ^(+*h(jfvZ61j#8cEiI$sD+NZJ_R z1<^tp(|vH1S#&AC`Fg{F_25@4_+VEL!dL+%((TRjUI6AJ^54v_p`Rpu51Pr;@dK^9 zI0=(ah05%scy%<9fxaE7a)p`nr@ok&n}0@%GRQU(RI$pgF%)q;Jl;fX1Kf{C%VjYV ztRy<-?>KdC%YNo|Pq7V_k)PAqHaHUE=SoLTw*T_{%28F}XS1JGR38YqSie3_bBrkD z?ekFl`euB>%8^fJ$(3vMMJ&okq`{RJLyngGJ`nmUcvo1|>)llw$VXp^t*(DIf^wR0 zjdiQP?O!(Nu)wdpz{OQe^C~(a{IKIqGA}$_)s{-rP`+jp?-S+9-c_#F4TU9mK27)u zRt5%GK$7>?xhEs@GwMNAbFrcJ<3YCO9(FS;+R?|jUtt!ovyyzm^;|U)1#OltZau#9 z{hPHdlB=(hE1GIZ>}9>Uw(9nR?pR^t&NCi{Zpr6_CR8E{DS8k4Vlb(@bL{9AzTts_-hV)^Fnqv9GL;W7yD5_JO7JPc9UHX+QM5PwkagD1(?#>aa@?LLx{`8d z=N-IGmYEh0ZOZa>C*-qbUv&@SJ}j$<6Qh|CUZ^u-XN~vm1;p&{a7Bzomdkc8ip6t2Vmh zkoGp1-9mAm8~@!>?@I2G%%RE)^&Za}^O*-*hCL=qr`uom214a2A<+UBLyxh)6+{*z zv(SjQzVFT3^ykP%4=zN zTKJqJYOX$SbPWmHEnY&^)O@gEhsvUhhimeVSMHTN)!&5s+?G|`(jIa0St?*8jStXt zMU|TzM~9lbD{uPOt0{?v7JYv@jLX$sPJcJAG2a)_c<#k>kDyY&;aWaN0)j5?btezwPppcmeNXbt5tByzwaK2!q2I9@Y2t{h6M=u8N;y~O!rFyib@tfr*CX9(>^KlH)J~bKm z?7rIQFCgoGJ`QJx*YXZ>jT9_zAzsoXsHlNkMIb0D zXmE@)3V{lHFI;mlF6bb(dzC0AR#(!Ocyq0{a#`1GqRQ#1wqhKGM=9?@g~LshSbGcz z5A}pRulZ^H(g=J&F3bYsQnRfzrb&K_ZfRIK;Mcr0jmv#C$78#$daNJdbr6^Haqszk zjbtA++phfAgfT(FWk(lh)%lpxd1lO~ecGV%;mjA)g@Krm2w%?Up7~!m9xW^ z^{rv(M*&_-GJH@&48Gu^feVi|Rix893=xQ#CYd`e5ug72LayrDqGyKY1T55&<=9h{ zk{`aCKKFa@@iiZqHIxHJt#?A@p;Pi;LAGmw^)9WeAw7u4n+ph`i+AhWNyzz|_(P=Y zIZ!E&T=cPYS0Ri33$v=}YTDf*;RxRgrFh$gNeNDnl7OW;IyLOsZ&j#E5H>zef3ZOK z`()PR$$@B|B0R543=Ct+Gjf<`my@M*xlion1t+xA$$Dy6JFR* zJVRL6E11~82QS`hG(RrQEz$(slpLFjVg<`2Oyaa#F+99iHWx^wc(cyYI}5P;O$~vC zB0<-0ra@UqX7T~C%OfSKEmiP5uV093&U-?QzlV}F$aOUK@3>EKM<8z~^psl1US-;C zNzhH*dVkh~U8c}f$}^ZxH3GpKSqBS;aohTWvZHXZ)MM{&&1vd%->N$VP#5v>?2n)C zRFp6AIyZ9I(CfkOD1r(A3$b=)g2Qvea4m^#^VLniH& zS>I|<;U9Wy#@NKuC)-nD5nyfYVu2Atg{%Z>{kd-MUx=wr4>9XjaHunB?hxJ>PK0`ksi9!u1Mk@RU!hi@^vOFo0T?4kOqc#OgaF@A zZWT%#l9?Etj(nKOu|G~{^%IYCH)=}!<_)QWl$(OqjIB$0OnR_iPZerq1uQ<&B_=_6 zyNH#w< zgEI=Y)}qsOssj8_MA?FAKTV_E4XEbQX2RvpMLu?)bAOG)*7eEL=rYSUBLvUBwYiiyF{ z%=4{Fc}8KIxga0^#VfgGD%P#_MaPk0Q0wM&PHF1?RFAZts`Bu(?%mMRbSvD2C>+}3 z3ZK&Hn!nyFu#J#*#|j$NRVaD}XV;uB+PnN8VINgnzWWpMe&sAwBQ2d9AE0{I>7V}s zp-2NMPXJJQ`W@Fwf=DHg*CGFP>59C=A6aG?u)IVlwE^Gzk z33RuDud0=}W9c@X6brA?{XceFH9Fj)c%uYG4_d|y|K?_?Sc&q+p!Yn4zveKVs(`k} z1NKN^lLq@hc#FQbGytGh5-9Gz84ivDBJj}3wg8mUNnq!a14!W8HFe1DSib8|BwL~E zfORojQNFGm%j5FiFGf>m-v+ZHPpj+3z>k=rrLae*Ej8bO)RhjH zwzOgB2EpzJ_*}yIFR>AmAj>=r{7C&I;VWhXt|@rU$0hOTrUA&o7=hpM%qC*_tVLf* z;L(a(nq<~MC@;4p09f8KB(qW>ykQ6+_(4XcmzA-Ybx$81n8H+U-57?nAO73x8FrSs z0e5?`P-y``_}V*X)Mv^1ONI2n$*$AoGG?5AgAJaXM0?G@!T)>xd$QCk;u4Cr2LY&r z{RkfC_4Wpr00{opCRNVWXaxlWeJhR}g|uTQ?6cI{su84LnA`i=HFkq4gIfS5T606;L` y|EFUc|I4! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + F + 2 + + Chain 1 + + Chain 2 + + + + + F + 1 + + F + 3 + + + + F + 4 + + F + 5 + + F + 11 + + F + 21 + + F + 22 + + F + 31 + + + + F + 6 + + F + 51 + + F + 41 + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image036.svg b/dox/user_guides/boolean_operations/images/operations_image036.svg new file mode 100644 index 0000000000..6f24f89cf8 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image036.svg @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + E + 1 + + + E + 2 + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image037.svg b/dox/user_guides/boolean_operations/images/operations_image037.svg new file mode 100644 index 0000000000..a4b24bc21b --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image037.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + E + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image038.svg b/dox/user_guides/boolean_operations/images/operations_image038.svg new file mode 100644 index 0000000000..02f1c1e741 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image038.svg @@ -0,0 +1,2759 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image039a.png b/dox/user_guides/boolean_operations/images/operations_image039a.png new file mode 100644 index 0000000000000000000000000000000000000000..eef1f806aa4d14b76213da82d5a41208cde90c98 GIT binary patch literal 1446 zcmY*ZdsNZ~7{#S4EH#y_1%@j#e5MV}X&R;Yz)Dm!pGnyXL|s16(hOW3O>rX?HRcmV z4IibIHs5iaWyc~F@lk5IqKs5x*v}y54@Ns@+u3*S_uW74ckW;JTt;AkuYo>X9|D0G z;QX+`S_ZZIYSS0mt3Px6jh3Lvei2j%#PI&-)hV+zL_i>V;W+H!kc=wnb7AW2p)GoW z5mibR`=QlkQo(wXGG=~7kE)!v+~KabT)L^T(SsI&)t=TYCNvGeX-wQh@`@#O(>H%8hy+-mi zz_;r$l%ckJR~WZIFa|9r%pV*^om!082|ll)PFbpKqm?yFuOk!I9dMf4Zqs1^k);N` zo0=tE`N_fCb6V=lc|lDC1YR)9pj)KR+GPxlD-n8_hv7cWr4pB5-nJ_VM%;zC?h=o& z+Vp)NItjc3(27eE7ysnxd7*NynXsR`;3ppQ5hw8ip5<#T9{B)>^2|Gbzb0b&#cpTn zZ4ynYF;cR2@ z4wipWr^N;d&i1w6R0;?g%doTSp^7JkcbNRw*L%VoRcq%2W20N8h25tlnI86I`k|RA{=1b6 z;8ptND33IkC(bL42c7>cC%fFe1lN3TYfp|xkVu%ixwZFJ+xm>BC9UEcE-_sd@Plu+ z$cZmjCqlzTqK!jHXLj$?RLw=#|wPMPzU(J=?THo)-;Uc(Ey^d!FbS zv+`w>A^J*{jFVeHZ@7EQYGmI7%KEsbJ<#=^>MJng( zm>9nkY9I#kGP+&EFWG)A5yUfwo({-S&6_c2BgRZsl{@M=H=XSI^}I~_u$T~vK+*rv z`F*7_vnX@)le9!aZaadbv?q`UW|Zi#hK3x4EGm&n?@awgmih2HV*Q0xK?s~&6ZZsp z?iP|(hq_rd?4a1KFr(G+a`GgPJwoS6$U0sXMZY>r5$bv$0Ozub2_qU#m2r=B=qi%? zKFf6^$@(Q1PqLMNO-sG7JrQjLb@qt_Mo!Nec~2;Dzdte8u~z-OTmlpvtXDbql90n4 zVX@wvQ!ACBOpcBjEJ%pz6t6bRO(&tZVYFCR`ywtLhVm5(ys`&OtW;?tmn=ADhc2T^ zLahlrWl9^}>PR9X4Poom>)ssDz}SY#@nDu&3f~e2$(5FHj11x7${i!QerKVAoms5= lx1IhgI!o36OA!Jo`VAv+G|c!hzvA&{3FjSvZSy>N`7dr@&kg_p literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image039b.png b/dox/user_guides/boolean_operations/images/operations_image039b.png new file mode 100644 index 0000000000000000000000000000000000000000..4656955aec1539913c832aed22ad20277a5a0483 GIT binary patch literal 7298 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 M07*qoM6N<$g5fWfKmY&$ literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image041.png b/dox/user_guides/boolean_operations/images/operations_image041.png new file mode 100644 index 0000000000000000000000000000000000000000..8f2c405dfccff4163c8815e1bff90ca104ef3d0c GIT binary patch literal 4822 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image042.png b/dox/user_guides/boolean_operations/images/operations_image042.png new file mode 100644 index 0000000000000000000000000000000000000000..3a351afb3b725fcfc7ef7baca888fc91968ebf62 GIT binary patch literal 5154 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 O7-~w|iq-O#5&r{}b{ZD| literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image043.png b/dox/user_guides/boolean_operations/images/operations_image043.png new file mode 100644 index 0000000000000000000000000000000000000000..a83ba1288660aa44c59242235b264115b64f7122 GIT binary patch literal 8709 zcmV+gBKqBlP)P&Lp~3p|;Mnio^EiytY zO#}QILQCTl$#{f%=Ng~xy`${l7ROUc5nB*^w?XKm=huTc1+PH>jaTLb1ZOqh3y#H0 z8SFs43SC-8##wfp62wTC4+fAbzE1fe#eE$^_F2!mcs7W$NSf=u565RBIII7(WNZ+m zzg9!m#k#Laaz1)2n`h1dC)D~0K@1~!BOTViD4vl~JP3TL@rkxa+P%P;HB;(Sp;u)0x?eiXbcM^yL&Um_@aVOL&g%pLFiw;l}3Ji z_3h8dD4qho)uX?P7_oeE!NIa;$YtZNA{X}+*{?s!@1K?PfByI7U;pqNSq9}>rB+$f z0#NpRxpsW^h0SibgvLkO;a+VB$)}X|mv8_0tY7*3`;V`Gco;Sz_!GV^h@Z6S=?iw7 z{q~z$$`YqKs?Aw-f9RL~D}oW8`|=-u|J(KGpZ|9G?fdoIx4-`PKYyM5{O@14KU^9P zK)mr6p(%|$ZVPIHXAu)Y=7%we!p8+MXe-Y$xvDH#PQ;5>kLTOVi){Z0Tl3_1~cc!NBOzzE(mh`+uS{ep6910M{V z+C#n1QOqKntqZte4BhF3e-)fVKwsUn=-GnbRX!NE!D>Bi-kd|)RMlY_1uo+W-+0~` zm7P#2N7ITwoAOQ>4{IgyTtt&JL<>5^Ai3%x_$|upEof?aZnt%W(XZ02O-j)k^<~e& zqUC;4QcqWI#$H5>-`%Fu5CMX3zo8cETkDLIF0+<#JJ+V?soMzJM`y_qPlAK5BKIPK zXL|z67Cq=OxMbYD-kRPGNrULf9GB^-(OnSSI8|3mOS2zmQu7yfI|HJ?2%fvJhr(~g5tgl-j;jP0i9z(X!LwAPD44uh#sX_oi_O1rx;kr!Az%PDGVC# zkihKSIru8pAE7DQBZB6izB8Vbe|X-NvV@62iyeH7%$Xg6#h`9Pz~2uZk&t)U$i_CD z3QgtDln>{7EJWVT!^PhKJ=kvF#W0$2~;0KR)FSc-3AwLo(D3GS1E>YVwNccMOuZ z-}65aG(}wd6BZ{E#ewXa2nl?p8_Q(_^h}p$>(HU!fp~E?-PCtQ@HTS8d4*WLunfV% zK}h~QL+$#S4x-$L#ViLa`n{hBS|kpYltATdF`INX2TLCgAe7*+=Ydj)R2@0W$Vo>> z$8oRsxuT+>1S)rsZ~|WzWdvg9n4SzDrN|;Oi$W!&WZ918-N^{HD|Js0t2B2O4c}~= zAeLn8fyVs;PzNvinxR2o2bi6MjN%;BI8(Exc(yo54QKDUftVX=7zYpq|exqpsC|c+A-VJIl>5>L+Y7Bm4Ab&U`(8|E}KkPlr>@`egv?^KXsv<#L^WFUD7) zobLn7?FSn65PW~xx|IE^6y2o$MBlTxR_#Fpj@!LuP?dm@gf*2J7vXM}_!EdzO3zTo z9tjGGd7%2!S}tqIpJ`Xk4uM_m0U#C-g1ORW#$Z~!2*gmdZl<*VnEcvOU%sK4nG?wr zuWJ#EnzliV6I%r_2wy0$yjU^gd966LHuda6^H4~Ag?&coHao%nu3@gkK@i`nVPq8k z1T`g4LfLL0S99sj@deTIFqHG zCc_Pb7@QD6bgJ|mnJ(T>SSEJ1`a0djtTct-`5>OMoVpDL^}AID`+6WY?1T}HlYx)y zG<@sH`@cilP}S7okyD;suNuS{86Qn!gP1j+QVJa~@Wi7XzB{ z#E4k#kP!sO!^}+k05UEjI0ck08T)+9UZOu@$y0c50Xw|uY?E$b5OpF7T zp@LZphQ8P_@X7-Z^_GppQ8@G_O;%i0IP9GM)WI>BC6CISM?0g~q^9h(Z&m;x=4NC3 zD()4};@nu_R`Wq@Wf8hZJ5Z~v`g4$s(}gwQGJ}$g{aNL>)ZT@jg_3SXKjuC`hIEgw zkYA~0_+2TVgLgfXz>0S4jF}NKP81{94e5;yLVs4-hz@hqC&`k5x|#@eOBTU^FSZ=P z<7g4ja7KI1bsj%qEU&8PN4_Z!=pEDumMtyT=~|fP;e|+lB?~e>5`cEuCsFI*xX@a=!)6kE zw_q%TdU+rI1Uuk^g4o?TqQ{jpoM=G$akeQe@4B@J#41irW%W|K5@@JbTO}9mpNy)h z9Ru<3UYj8($M?Cm#%j00$c?+alkMJc1~A|GAf^E@kBp3CYw#e9(@m>hEcO z02VzrfjO9-CfabuRrA*8!&fnf<(EQ`doipaQN4G}*dhol_NnoQfK$gL%u z0V%SP!{cPpTRT=w*(E3E4@75HO}&FjLF@-=p&SSChP8$D+6WE>>*Fj3_4Xo|npNjF zw!2JYO1S_+5J!l1UULb2RZnkcq2-;zi&)ZTk!S;AAftdltZfc}qQ1StZBm_l!YV<0 zv}CKpJkFC`%pE`nr_E0Bj7DUvf~jm!M_Tx6&chjnFYGU&gHkKPP06U#m0U&`j&;{< z9J6qo{qvw%1Y5_`BrqB+@9Kd*$wq!H4FtrLm2oo8kqsq6HEn2pcvmA|oQw_1m`KLE zwX_jrf>kx|f#92xPR2eLI%Le@ZUj~|HY$c+bTWa3y4I=Jb`+=y9c465+D`F3swR=* z;Z+k7(*-nIG%^ln^Qs(9C2DP(?u^J-w>*#sA0rTfug&p38FT8bKY(jYelVnre`L; zUo;3`jqCs}-@cethUd49)twYa%F4iTVe=#s=Mn)cX-%CJG^j6ilNE@Hk0Pyzyo=@; zxmhawXN}NF;scJ?AzZdEr9B@a*b19DRmeCkogj92r{8p65a|fqy*9^J!8k_6pGn4o zGF2lwG1CcEn2ZfmMRuw)TGZWKSsl%neoP>IL~;O_N7%TqLuI~L_wnY+?X~4#R;>8PO=sgk zJO$tuGcRI+kue@*bEeH%RS<`5eGDgt9#$87UqZFtEZKft`qBdU&~K_E>u6L;hM^Zk zah!meB>p*eJ0xH@AP6>X(Mi^_&~yMy#>yEDVLlV{t8@U+q=*>YQ$7WM>t9yX;)<$Hr20J z;jPw|j2jk~3@nGS8ng6;FrT6jgE&x7`|b`1-mq2(fle<;Y!v~BfHSbkj!~~_(_Deo zNGRiqO_d|sc26x1OteNhAiM*ZY)&xh$p=4z)c zP81MWNDC?;Zh->EV=nK+c7cqc`6`@iDG+$d*7RcAaJ>8U0mU;*z=7^yG&E8uhBAQ_fWl=f>mY8kUbWy&lUfk0e<0P^ z!QlViu2Ke8fF5P-DGBRU#Cc&rs98$JPsBpMd@{~oc9$2s>{Z86Fp6ESEp@qEe)i(! zdL}INrdIVWzt@xW>ZNVFn}z+y<;@f=xEYqIP1#`=783Q+#P{>`*FVeepMU-M^KZX> zXV%mJsshp}+#w78ic!+wyc2&aG~ICtJ<7i51jZCG$Dn=Ep}oMMz1OC>^qx;pBUF-# zmL{F$9gVPIM|&ko$=;cTcv2w`S{L*{i4d0BZmN+Y0@%+7t_Jgp`2zBPc*gHS@&kL6 zLavzr5O1tk)J2;Q;x@+!6Brp%*uhFeF{effkxMF!WL-u@+oYI^(S_mh)-O(rhcQ{) z6L+dl#umt&6&Q=kU$ogEHh0r3eeI;9&;Co}k*LkuX9i^vwO_Qc8qHME)wKw=@?a)1 zzwFa7N|Ma@SLRjdNh?dfrLcQ0t1H!f^lEL-dR6b#Q6V)#szdcbx#YW6=D|T`tTmwO zw~)$Sd&1A_!d|Yaa1S0v1euq^`AePhAp5}lt`#z#pVleQRC{ zf){gF0VvaH;U?P1^(MX3t3|IF*fAkaCW)QhdxZc6Ymx%v$=>+TcfN>`Fdm5>3&ARC zjkz|s5#7w)HS#D_)uT*Be365PD`<%X4$4#D`!kD(CTmOldGoTjjki#zKO1Aujt!Mm8vEL92Z(djtC6 zJ&a(h`(m-(gIV?Gf(d9X+iO8d|8$p0}@c?55wi7b7V zHh9%1rn6|Y(w?&fOQG0LtG$>`qHgUzu|-b1?g89d)(MP;C+pJ0Kr?BPTdM^bw^_(m z<|udSh-fmN?hw2xrJfJLTMS~b^75o)Wh4ggQ3{bWG@v(p`JH_PDH%6fld1L{Wo;eLx~S_phX z_c9sdBtElOAIE=*5z!oO<7ol-L#W#sc>|x zid%`@g+>ljqJLu*w_9sgL$Fw|QuwF=a|;oOo7(yM zloW2qaTV_j-}*C*!$h8%xf%>DIZxMTAePG-V=sb|akvW6$yjFa_8Jifv5vnsRBOUP z@M@i81Jw(d&VhxN3*sst$u zVlK9}1*|jjBu@5nn0W*&xgg{7;SjvpRSjpK=Gaa{i?}M!Pz&m3&Mcg^~cZBk;8YH*FmK;j^pd!ax;w|E0hSIuH~wGk|0ZvM#}U8~r}+5`{_yJ}#&Ve#T>;GyfM54`lV3Gg)|S;b z5Zg;Js&9Fb$6SqM9fh6&+Lyy!TO)E`Mx1shbJ|u1=W!lc21MAE14Ghn<^e;Lcb-OQ zXUG|LV|7!(gn@WtF4RkvQRqR7#el_WJQV#Hg1z{ywE>-@*d==zfYwEG#BHM3Rjs;b zpF;G`uyz2f^*apWO>}vqEZJ9EEfp65IvLxkku;)AO75b~q-1+V;ftKISQ8!g;mr*r zcH`6&i8|2bUg>_hFwN#txHgxLT#m1i$bx~L7C?NG6)Qgrku{{SUOId;vxl_rFv!-n z3=F{shi@VoB87~T`Xn26=OBm$o~()3fl)*4G>b6ESmL;}=Y7|#7IX$k0hgIl8rEH^ z!XDh;_mxjwFVhbSe>S{*Qr>#fyeUFDjBC=*kGAzvU$v(OZwKu22x{Z(_Al+vs;O3i zU)mvc`xM6hVE{`k=mbxulVc~U=a&ouCtlSYesyYLw1ArSMDo}KywNY7^nMDPN$Qmwi;U@?#?XmYxZ8Gc)Q?~n`=i#* zcTXCH8pf5t$lsr9Wd90DXfJ^=l=*!I3J1v8;$Ujwpp6cL z5kKk5mDt*ZvXJaH@T*-4<`c2-692Bj>``P1RcIBfVWP=rkb@tNeXpW?b!wc9_df`* zMO1f`5M*o;o+ZW~H9F>mn%%Z$Ltbg}a{6~j+g6gFtJ=%{bazdcZz{%TovNA{NVzh& z8t)S7B^mp}vakN#H1ck0XG84Y{KCH%Mn7{_w%Z?ZIM!so>;uMeN0)c((_>C1svOq= zpasT~sC`&c95~hSYU*J~TeKyLNAkGvg(SHxrIbzXpQ{-~7+!-mdXK{`<@k;3=q~Tr z3T!{{>Vl*+;sW}7Sw3$m&HtWWfUQI`ZG}NB`kPx&&B}dQ^qm~{#)m`94TudLs$BTR z9L}Kl{jC!CB)k4z;Cq$mc8-VOEyi(75*FDA#!b9cW-ssjI2|TtxrYW~(|i%djUW;a zIp7V>F1|1LUd2VB+3~EcUFHieS!B%U6H9x#L*h2u?Fh@M24Zjgpw!z1U-!~`g>Myi z>I@KE&xrkh(-%{grHnjS4bO8V^ux*b(9xJUo>er(0J|{t+8)D8?;5=~aUo*P{%R41 zQ3=^F01UxOVA5t63J(ysr82ozsmvE7V@9ZYiTu^_A>exzd#2{IXL6cDn-E^f=4?wGh76t#?>9V$O5Y@ z0wAl_4Vd8lGG-jtDIbe^r5JryghF6O7Q_Q!G~Bzm;buj_FgZp>Y-qCr_RSQ5FKjd8 z`U6t06oau?f*6}|vcS+gWnzH!F~iz?E`Fx6CTUGaa6`9=XSg%)ePNf1kx}?_x^5}$ zdB<+uR>M{~P^M@s@0ua1mP!WD9P5j=IAkn&u(RzCE)+xUgkY_|fW%Fu%keBq3|0qpCLTaBx ztKMbVLLW*tp0Ke(y1W%B^dV!#f^?`~Q0zbT^EoGonfn5ptkRA=Hj6Wk*OKzkqe+UI zFQ;r1M)uZVHJDsE^eMa(4xT7tRxA8KD68!&mo<)ZwNIyD%WSr@O?L(~)u9zwV+J$( zWsaWLTwy%VC6luVDs|>nFOuUB#IlGY#;nbXJE?_ysY%Z<+;>Rz&{1S|(L{ z2^W3PXVz8KPQt$C0$B_CELATd^L{O&==(Ru^A9=r0jC=JopA6(Q93V)UENN2RYP!S zhblYyOkl*gd&iP;y`V4>M(AAakQaiv=t=OP9YkRa!K|QMnL#+Vf|Qps)N8p876upUSBLV7H!OhTok_W>dAZ#UQEDf6q7n$!nD{2n;_#Iq_>kdK-XhU zW<~yzwERlT2GU<@Ct0A#pVJdWbFJ2%ETkQ*{0080$0ssI22gxR)000cfNkl zZFj6H427Mw?*ISG+|~BfI*uZN1a^}Bd^o2s%7kPSBO={4LI@#*5JCtc1ew=r1MVqZ zX90J}4WT`cYG&y*tsX7Z?#@QvOJyrB7w-LUwE^1Hoqmk8hwx~Ux$g%cyWXAPrJr&H z(i1~W?cjIJ<^*mGJOfvGEx-U+*@fS*c@RAkefLcIlrKvPjy+ZWOkHShx%?84aCLkS zpCLNjgq43kK;&%O>$)%G0FpaqUl4b3G<+&Z&C_Fsq?`S`2M@TmNtoli6mU9rj*4_X z?sT>4Y=vlJUi{e<=BDMoRpS=zezb;K&4x<3W1gE8uO;Cl4OqEh`9 z3kN2;MPc+KCdpVddboNFQixpVc;M$8aoAHnT|LOqxMymg&*L4*)7cof%kjv|Tw-&q z@9BRjog*G5QDo;c5DlTp8@-;Mvy4IG6cH-Ef~@D%Ix>57+G3P3l47|Nd?Zpp z5VgE1x8IO(jBV;PQ60;lKoK&PIf@T?2_u69t8L1~S0pZdQC?8ku&N;o36tiT;L|Y@ z=rY=X1k)TJWB3wlzBB!6(jP#!Q#|EP5HV0ZrB1}mOY=rKK8fm$YR?R=TL$N9M4TjU zB+dFjiaH)9&D&@z{>$bt3I0=gbNW^Pl*{oD!{IYz&m4bbP6{97(yH=wfD2}%c?-q+ z@^~1n?8NAi3p_n;DmnJ)F0*>7*nTlJHepqhYGXu?x!+$^gUKFm47qA$Zd<9tM3 z)%L$xJiS*n%zYw2NAt-)@Q&4iD z87QxD!-;;a;-^=8;e~$5;+h9b^a~X~%L@?KcMO(EA4~MZ^gM2}e?*sL)3HI+T-4Hv z{F6Y#CpOEn9~62A3La}bU-&VIam0~3g+9oT18o%Fb%rrAgKW&F))nczNSf_>pdDF+ z*~tNLAMLrte1AUgcd>#Y=w?e3@<(gFmj(vZKuEm+9UzY zYm5k}>Ao*24QHjU<5{(@MSt@S?=}538iSN&3>xQfbce@XT=mO4lQxJxZ)s>GNY!%@ zqpw`sy*Gf^VRE3n{WsEt=r>C-QaosH$p?0e6mT_gVHxF~jG>TSoeZr3wfh)_v&k}a zSLUG0pxk~l&<=4(X9P>-J58B22e|JOvbV$8H2OZDNPn4vO zU#j2V|4;$zxBiA->x%haSQPp~^A^+D(bZCXgWVJ^+4(2>iYCxgUHux=SCN;?F9{0A z`1A$n;VhG=Pua_$ysD$Q0rUZ%4~1})?e&@;)@i$Uu%Hiwirk-@fDU=%?EBCyy|@8l z!DU!FX5p$0w)}1(qK8eRGq~$S{IrS0iC}K9|fBk zY3M=K(ot{^zbeAoW-|3?G=-xtpvsZ9$??y_l2bRXm^3*vgN1twQ}j-lBllU+G*G<2 zZi*hBK-pc9kp+^K6Pg=hO>abd1hlH~re&2wjOY0A5zI^v3A6hRg9*NJ=3sgt14w;8 z^r*3N9%7Ey;`Q6T-mJh(uf>oXca4UPg!-D^^4m~XbIkOE^m)AuoLsXZa*p3Q{(Y^k zvzh6;8O`ol{9aD~D>pm$)Vz%NTixNh7mWjYIo@Q1_cqE*FC|TO2drw24BXCA^zC#y z%K9eNB!1wE--iBdE~x0iZ0eUgQZHs>Qa2CJ(C;TDMGjVl^J&N2#NR1*6!!rzsj3mfw_*ZzqlcS*xYd5);L5CO*)pYF1wEP7i1s?7%8-F3U4B z`&t{0P_N(Nu8zNC4@_IAh8L|V@hJB@E9KS;&OpcqhBm}d{7$p<*H7SlYS3&HHgz*{ zUf0HIrJG7?Pi5$Wvi`C-zO&=I$Eu1imG8z0R@K~5oyA{M)?eoMOAB7_>TI*}w!Q4ti>~6a=0QHVTY3MQUe-%L zPdF&g4IjG<8=Xlc$?-?-pLfpN&fM~v^4A5A>D)X3!-_v!2%hFIIn3~Ung4qGne8X4 z@^2h@6#5MYQc9TPE9_b?mby2%Z+L6ZztEw%zLnORSX_;*38L2Tr&bXBq+`QJE1;_k z0%KdFiCVuo%v}lTp4(A4K0E<(*AHgPx`tY}wMvFYj=yRGri1TT6*geqHP^l5STx@Z zKeQG7cm%tu#^a<-727%c=G)m=PMr_ycp-)lXrG1@#ClH)+zsM~#TzE=u4i(E1MZA| z^KjNXi7>f;h3@eehV}HJX}qfalU~JFPqXQ@byX9tnm;nIl}=OBVau46OsL~Si+;1w zeG09wQN^4)*XW|(^mLy>>ststJXc-Px(vR0y`!)4zBuc$A;h{~SjRUUZPvw^vy%xj z{SVT7pCzvcqjgZW4_>%T)=ZHjNU-?F2tRvDzJ=|4%?X+gM+b+K?=O=8i@*l%o$ zTaP(4y9M#}sD4{V0^GR@4Myx=h0Y>Xt*uxDn2(2(yLMI6Q>w7M2?^*^29WjfD7*cF zakoVoKG{;3&T476Yd5*$y{hRA+?0TWcT9{kS{;9ab2#`62PjnKKU&S}G(>Fpy9oE^`00TK&+$8) z!+}ES!n-1*#){VzDk~fW7=ji$uUwV&HY{?MaKCz{BOt+JsJX&y|7~!eA@SgCvEoyN zPIDpg@t73OTSt?JWr|-Kv59xCCO4mk+k&NsUR6Q=1@PnXO!+E^-6+WM8RMh--uv~5 z8T~p;f68c8JV02y%*TshsUu~IuTnoy(cSFfp%H+@0*YE4_?+Vzgq8^a)eocecl5pS zpm;j|9}kYO@KedHeyfhx6c6Upxn$KKQF-NdWiSKqm=Tp<=){i}O~ zI&rXC@f*mp$N=g;RS!!oUmwt002IHWEsMNU{{~{;H=orpjBUVj-%u34S^s_DZcf%* z-i6Jv7HE7^Z?Y1ZH{Xq?Lc^~f9Wa^G+b{PLX#|J~9)C+D}1f0Xjw zjR;*?NZLtrk1$ed(3RjYG3i5}V#2uCLgzxkaLj;71p!83HuU&H==o((_miQ+Az&CL zKqte&kk~=T;*$AI4-4o_H!xI#(19*t*rf0x83Bgykz_*8vD$6jd!C>;ea%aQWZg|J z{p8*MCTrJI#XePMpGfb6sMq(X{ThbOIN&-LI(ZLvIdsew_|ga7$^abtsmj8=3r;YF zD?!i6sZU)?JsM~$0~gSd+DISeFam@SLI@#*5JCtcgb+dqiN^nhGw3yN1J+sq0000< KMNUMnLSTa7l9mMk literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image045.png b/dox/user_guides/boolean_operations/images/operations_image045.png new file mode 100644 index 0000000000000000000000000000000000000000..b62e09c15a341f9fce62625a907e8a3c721f1b64 GIT binary patch literal 1569 zcmds%|3A|S9LH&5bq}K?uFE!$b)3fKsF5#|xDcc0hUy_^T4ffN?>1kOa%bX%l$k8~ zcD`K?UltlszTBs#Z05_>T|9gaVP)pqY`fhL_e+1my&vz#`|*Ci9?#eN@&4(ZbH>+0 zclUwa8X6k9UY_p$8XB6K>V6EmLtR5&ROD!A?40v*cRiO_wj^T2vN8L#&o~vXr$tOE za)iA|E$x_>&Lju%tCrWd@hl>tx=(HUGEQjE2sGpKISi$Z#M6nc8fC<+ko1TY!bRrr zCC0C1^D5iai_9=|=|kg7s(S49hC)JV%WV1d(>WW~qGXZAeC@qk-h~i21k7ez5z#C*IFUo zq{$)ZwgENgaN(wbOR-Awunv>)X!`GyG3}YiK5h{k4LOY;5fi^AVuMW2TgXx(xp+i?w97OYKXrwb6tk&Pu4St^I?H}c z%^g*9z_l6~zi^Bmb$m2G+@BB}#f|`r*krL*wiV0h=id!)*tu$#PSxTRlaoyh(xiAW z2tNfaNE$G+CU1-8WEXm6eO*kTf$XgyFXi!k6YQ|2#Wf7#d-9)ZLef)o!8M_fkk4T{ z*Qx-J#&sJNf2TgC!&1783mq3^M7CuvKj}kK9pwR%PPnn<*@nTc4>g^#&+>jTF3S~+ z$Ktv>A;mQq;&Y!_v~s_ZwgJ4 zbF_-PrrTa19_Fn`(s@=Z|4J>Rs3Ka$&E6Cg747i^`xrvwE6mk0k~%^|ZZ*GF@3l&3&UB`L2%FALth)22N(bphh2-@QyFQcyR*SMr{%6aC*DE}iOFOpA>p>(nj4 z$*U0*)G}WGV={6MX*eVr4zAUcoDe-bQpjOcltPvudv22$KttL6tz4K^LrMV<l2b ztFtvWqU^yXAp*UO;q+}N(^mrc2g84X+X|g#t4kyETHb5?<VF%b;fp{Yy%7u*-7Q3(y3MD&A4%Am)-K4B( zCdcv1D&QnNXYgil@uH`3+fLM@ZOC~X*5osMdu8DAt7+i#`ouMinkqwR!m zloM?9AqJUwtucpl_Y8O5rnVB7PJLMx#yj`JOpHNqwa^%AYT|f}!hu(~JPKJiO0??# u?C`*+G3R)Q2X#;mS?!m7`JMlpS0yg2C5wCKbMG|$D|!9s>)v=WH1i+ZnfsCe literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image046.png b/dox/user_guides/boolean_operations/images/operations_image046.png new file mode 100644 index 0000000000000000000000000000000000000000..f21b15d3389740de559115b57d75a4c84a9a265e GIT binary patch literal 3319 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 literal 0 HcmV?d00001 diff --git a/dox/user_guides/boolean_operations/images/operations_image048.png b/dox/user_guides/boolean_operations/images/operations_image048.png new file mode 100644 index 0000000000000000000000000000000000000000..fbed68180998f4d2340c78a9b095e28b68039db7 GIT binary patch literal 1720 zcmV;p21ogcP)>)R~6RgZnkOV*gBuKv2|94RM zA;La9dG&&VWTli=fCMBJGLTfrpb0CaAgPdnvI;RsDrBIn;z+J{t@Zs{_D9P8kT#AC zo&#*EoaFR!GY{zM{5ZtS5HeQ;4fB*SV>U92oQEzXL-OKm$ z7S?54!D9eyoi_dJU7gS0e*E~1=}bzStF&=B zu#JmujbHKA_(k7D1Ax3<27CYg`=S0hsi0bFpsZpa6iCPra^s0K;}HBojE^b7M!b-2 z(sSd{Rm|h8E7+V zj^1?o{OR`aDZr}6Gb%HelZ={|c;{72x-hh`8MNLvEgpSp_2|E9?nkqn6)Wj`)5xnV z_XL8T2*gXvk@YHX4*)EXmY|5YUT3ZV!g%l7$6ew-MN+YpCw422MpCg2_S`Bz zdck=3x?*D5os1Z2b`)+`A(KUA)%71Ebv(c)C85kveCEq)RKzH& z$RyY8s+GnA8kPX1RnzI^5odq^y8CC^o2CyJbp{Bq*)jkc04&8iK*+$n3Noy`48VI8 zNyQ>tmQ^6#W@UA017P_&x9;O#<~iqgyg@tx4S@SY-sYKVo1}hSN1s=PeHTG_y_3@~ z?$Gn9pqSPvC8kf{pk>w4n~p=W^txYYFKSI?yrz zPfRJKPzNciGdHAYNpXaEmF@O^mCTqwQCzmQM3UX z|HWSCiL~Jo$Ab{grJTcOEM6N=S%nNN1Aq)H1ArLZu7V8Qu7Vge0FZ%s6=Yyu1u>Xc zK?dek5Q7E)GO)ZFVo+8g1M@1#z`P1#P*x!WWffvDuYwFL1Aq)H1ArKL%c`+UQn5&` zvO2kz1^`Q~nN)8cNh%guXBmJtHkel-lk~D`O&?_ynWW6CJfY+LDr6EduL^t#rvX4F z^GS`07-bcith~HhQC5-7I6!ID)Hz(p86be}{z>air^C?zAP3d~LJXEyLk7w!#9$pD zWS{|n3^V``gR%-4D60@-{iIS>kps&BAO^RqAOrI%$iTb`Vo+8g17#IrFt36PGysr+ z1^{AgR#t&UHY=;ZQj3$Sb^l0NMK%i>0IjXtBo#R%H2`{YhNL3Dn6f&}=;SyJ05S;?WGFKXhE;rq|U0h?3RAgp`vZAYKRtNg6W}Bp9Cv{Hy z0M^;m<;>HjXaJB={leY`u-_YGu1={pra(?+PKTLoliGxolwwDHHis$wq*bZwjG7HB zu)TJ!WNARVxjrGq-s+s*Zljd8FZQ1qWrl>^^*2b3l(q+rLnIYD>guK?rH1AX0AYm; zBo#7{RLDRB05STc7CZhHz??d%q!a?s00000000000000000000!0UfVFUsrD$sM2o O0000z3HcPs8v+@WZ3z4?9T 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + V + 3 + + Tol(V + 1 + ) + + V + 2 + + E + 12 + + E + 23 + + E + 41 + + F + 1 + + C + 12 + + E + 34 + + V + 4 + + F + 2 + + EC + 12 + + V + 1 + + Tol(V + 2 + ) + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image051.svg b/dox/user_guides/boolean_operations/images/operations_image051.svg new file mode 100644 index 0000000000..72998352ce --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image051.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + E + 1 + + + E + 2 + + + + Dmax + + + + V + 1 + + V + 2 + + + + C + 1 + + C + 2 + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image052.svg b/dox/user_guides/boolean_operations/images/operations_image052.svg new file mode 100644 index 0000000000..63c5260069 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image052.svg @@ -0,0 +1,464 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + E + 1 + + + E + 2 + + + + + + 2*Tol(E + 1 + ) + + 2*Tol(E + 2 + ) + + + + + + + + + + + + + + V + X1 + + V + X2 + + V + X3 + + V + 1 + + V + 2 + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image053.svg b/dox/user_guides/boolean_operations/images/operations_image053.svg new file mode 100644 index 0000000000..06c8ce67d1 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image053.svg @@ -0,0 +1,2733 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + F + 1 + + + F + 2 + + + + Dmax + + + + S + 2 + + + E + x1 + + E + x2 + + E + x3 + + + E + 1 + + E + 2 + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image054.svg b/dox/user_guides/boolean_operations/images/operations_image054.svg new file mode 100644 index 0000000000..3f0fcd02f7 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image054.svg @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + V + 21 + + + + + + + V + 22 + + E + 2 + + + + + + V + 1 + + + Tol(V + 1 + ) + + Tol(V + 21 + ) + + Tol(V + 22 + ) + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image055.svg b/dox/user_guides/boolean_operations/images/operations_image055.svg new file mode 100644 index 0000000000..74ab7db0ca --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image055.svg @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tol(V + 2 + ) + + E + 11 + + E + 12 + + + + Tol( + E + 11 + ) + + Tol( + E + 12 + ) + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image056.svg b/dox/user_guides/boolean_operations/images/operations_image056.svg new file mode 100644 index 0000000000..5ca45ffca7 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image056.svg @@ -0,0 +1,743 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + F + + ES + i + + ES + 1 + + ES + 2 + + Deadlock + + + + + + Hole + + + + Growth + + + + + + + + Area + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image057.svg b/dox/user_guides/boolean_operations/images/operations_image057.svg new file mode 100644 index 0000000000..b3c03c6513 --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image057.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + BOPAlgo_Algo + + + BOPAlgo_BuilderFace + + + + + BOPAlgo_BuilderArea + + + + + + BOPAlgo_BuilderSolid + + + + + + + + diff --git a/dox/user_guides/boolean_operations/images/operations_image058.svg b/dox/user_guides/boolean_operations/images/operations_image058.svg new file mode 100644 index 0000000000..f5f4e47e3b --- /dev/null +++ b/dox/user_guides/boolean_operations/images/operations_image058.svg @@ -0,0 +1,926 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + V + + U + + β + 3,4 + + + + + + + + + + + + + + + + + A + + + + + + + + + E + 3 + + E + 6 + + E + 7 + + E + 8 + + E + 10 + + E + 12 + + E + 11 + + E + 9 + + E + 14 + + E + 4 + + E + 5 + + E + 1 + + E + 2 + + E + 15 + + E + 16 + + E + 13 + + + + + + + + + + + + + β + 3,10 + + + β + 3,15 + + + + - + Dir(E + 3 + ) + + + + + + diff --git a/dox/user_guides/draw_test_harness.md b/dox/user_guides/draw_test_harness.md index 3e07634170..bd66946eb5 100644 --- a/dox/user_guides/draw_test_harness.md +++ b/dox/user_guides/draw_test_harness.md @@ -5176,7 +5176,8 @@ bsplinecurve bc 2 3 0 3 1 1 2 3 \ 10 0 7 1 7 0 7 1 3 0 8 1 0 0 7 1 clknots bc ~~~~~ - + + @section occt_draw_7 Topology commands Draw provides a set of commands to test OCCT Topology libraries. The Draw commands are found in the DRAWEXE executable or in any executable including the BRepTest commands. @@ -7119,10 +7120,292 @@ The defaults are: * *URepeat = VRepeat = 1* no repetition * *UOrigin = VOrigin = 1* origin set at (0,0) * *UScale = VScale = 1* texture covers 100% of the face + + +@section occt_draw_20 General Fuse Algorithm commands +This chapter describes existing commands of Open CASCADE Draw Test Harness that are used for debugging of General Fuse Algorithm (GFA). It is also applicable for Boolean Operations Algorithm (BOA) and Partition Algorithm (PA) because these algorithms are subclasses of GFA. + +See @ref occt_user_guides__boolean_operations "Boolean operations" user's guide for the description of these algorithms. + +@subsection occt_draw_20_1 Definitions + +The following terms and definitions are used in this document: +* **Objects** – list of shapes that are arguments of the algorithm. +* **Tools** – list of shapes that are arguments of the algorithm. Difference between Objects and Tools is defined by specific requirements of the operations (Boolean Operations, Partition Operation). +* **DS** – internal data structure used by the algorithm (*BOPDS_DS* object). +* **PaveFiller** – intersection part of the algorithm (*BOPAlgo_PaveFiller* object). +* **Builder** – builder part of the algorithm (*BOPAlgo_Builder* object). +* **IDS Index** – the index of the vector *myLines*. + +@subsection occt_draw_20_2 General commands + +* **bclearobjects** - clears the list of Objects; +* **bcleartools** - clears the list of Tools; +* **baddobjects** *S1 S2...Sn* - adds shapes *S1, S2, ... Sn* as Objects; +* **baddtools** *S1 S2...Sn* - adds shapes *S1, S2, ... Sn* as Tools; +* **bfillds** - performs the Intersection Part of the Algorithm; +* **bbuild** *r* - performs the Building Part of the Algorithm; *r* is the resulting shape. + +@subsection occt_draw_20_3 Commands for Intersection Part + +All commands listed below are available when the Intersection Part of the algorithm is done (i.e. after the command *bfillds*). + +@subsubsection occt_draw_20_3_1 bopds + +Syntax: +~~~~ +bopds –v [e, f] +~~~~ + +Displays: +* all BRep shapes of arguments that are in the DS [default]; +* –v : only vertices of arguments that are in the DS; +* –e : only edges of arguments that are in the DS; +* –f : only faces of arguments that are in the DS. + +@subsubsection occt_draw_20_3_2 bopdsdump + +Prints contents of the DS. + +Example: + +~~~~ + Draw[28]> bopdsdump + *** DS *** + Ranges:2 number of ranges + range: 0 33 indices for range 1 + range: 34 67 indices for range 2 + Shapes:68 total number of source shapes + 0 : SOLID { 1 } + 1 : SHELL { 2 12 22 26 30 32 } + 2 : FACE { 4 5 6 7 8 9 10 11 } + 3 : WIRE { 4 7 9 11 } + 4 : EDGE { 5 6 } + 5 : VERTEX { } + 6 : VERTEX { } + 7 : EDGE { 8 5 } + 8 : VERTEX { } +~~~~ + +@code 0 : SOLID { 1 } @endcode has the following meaning: +* *0* – index in the DS; +* *SOLID* – type of the shape; +* { 1 } – a DS index of the successors. + +@subsubsection occt_draw_20_3_3 bopindex + +Syntax: +~~~~ +bopindex S +~~~~ +Prints DS index of shape *S*. + +@subsubsection occt_draw_20_3_4 bopiterator + +Syntax: +~~~~~ +bopiterator [t1 t2] +~~~~~ + +Prints pairs of DS indices of source shapes that are intersected in terms of bounding boxes. + +[t1 t2] are types of the shapes: +* *7* - vertex; +* *6* - edge; +* *4* – face. + +Example: +~~~~ + Draw[104]> bopiterator 6 4 + EF: ( z58 z12 ) + EF: ( z17 z56 ) + EF: ( z19 z64 ) + EF: ( z45 z26 ) + EF: ( z29 z36 ) + EF: ( z38 z32 ) +~~~~ + +* *bopiterator 6 4* prints pairs of indices for types: edge/face; +* *z58 z12* - DS indices of intersecting edge and face. + + +@subsubsection occt_draw_20_3_5 bopinterf + +Syntax: +~~~~ +bopinterf t +~~~~ + +Prints contents of *myInterfTB* for the type of interference *t*: +* *t=0* : vertex/vertex; +* *t=1* : vertex/edge; +* *t=2* : edge/edge; +* *t=3* : vertex/face; +* *t=4* : edge/face. + +Example: +~~~~ + Draw[108]> bopinterf 4 + EF: (58, 12, 68), (17, 56, 69), (19, 64, 70), (45, 26, 71), (29, 36, 72), (38, 32, 73), 6 EF found. +~~~~ + +Here, record (58, 12, 68) means: +* *58* – a DS index of the edge; +* *12* – a DS index of the face; +* *68* – a DS index of the new vertex. + +@subsubsection occt_draw_20_3_6 bopsp + +Displays split edges. + +Example: +~~~~ + Draw[33]> bopsp + edge 58 : z58_74 z58_75 + edge 17 : z17_76 z17_77 + edge 19 : z19_78 z19_79 + edge 45 : z45_80 z45_81 + edge 29 : z29_82 z29_83 + edge 38 : z38_84 z38_85 +~~~~ + +* *edge 58* – 58 is a DS index of the original edge. +* *z58_74 z58_75* – split edges, where 74, 75 are DS indices of the split edges. + +@subsubsection occt_draw_20_3_7 bopcb + +Syntax: +~~~~ +bopcb [nE] +~~~~ + +Prints Common Blocks for: +* all source edges (by default); +* the source edge with the specified index *nE*. + +Example: +~~~~ + Draw[43]> bopcb 17 + -- CB: + PB:{ E:71 orE:17 Pave1: { 68 3.000 } Pave2: { 18 10.000 } } + Faces: 36 +~~~~ + +This command dumps common blocks for the source edge with index 17. +* *PB* – information about the Pave Block; + * *71* – a DS index of the split edge + * *17* – a DS index of the original edge +* Pave1 : { 68 3.000 } – information about the Pave: + * *68* – a DS index of the vertex of the pave + * *3.000* – a parameter of vertex 68 on edge 17 +* *Faces: 36* – 36 is a DS index of the face the common block belongs to. + + +@subsubsection occt_draw_20_3_8 bopfin + +Syntax: + +~~~~ +bopfin nF +~~~~ +Prints Face Info about IN-parts for the face with DS index *nF*. + +Example: +~~~~ + Draw[47]> bopfin 36 + pave blocks In: + PB:{ E:71 orE:17 Pave1: { 68 3.000 } Pave2: { 18 10.000 } } + PB:{ E:75 orE:19 Pave1: { 69 3.000 } Pave2: { 18 10.000 } } + vrts In: + 18 +~~~~ + + +* PB:{ E:71 orE:17 Pave1: { 68 3.000 } Pave2: { 18 10.000 } } – information about the Pave Block; +* vrts In ... 18 – 18 a DS index of the vertex IN the face. + +@subsubsection occt_draw_20_3_9 bopfon + +Syntax: +~~~~ +bopfon nF +~~~~ +Print Face Info about ON-parts for the face with DS index *nF*. + +Example: +~~~~ + Draw[58]> bopfon 36 + pave blocks On: + PB:{ E:72 orE:38 Pave1: { 69 0.000 } Pave2: { 68 10.000 } } + PB:{ E:76 orE:45 Pave1: { 69 0.000 } Pave2: { 71 10.000 } } + PB:{ E:78 orE:43 Pave1: { 71 0.000 } Pave2: { 70 10.000 } } + PB:{ E:74 orE:41 Pave1: { 68 0.000 } Pave2: { 70 10.000 } } + vrts On: + 68 69 70 71 +~~~~ + +* PB:{ E:72 orE:38 Pave1: { 69 0.000 } Pave2: { 68 10.000 } } – information about the Pave Block; +* vrts On: ... 68 69 70 71 – 68, 69, 70, 71 DS indices of the vertices ON the face. + +@subsubsection occt_draw_20_3_10 bopwho + +Syntax: +~~~~ +bopwho nS +~~~~ + +Prints the information about the shape with DS index *nF*. + +Example: +~~~~ + Draw[116]> bopwho 5 + rank: 0 +~~~~ + +* *rank: 0* – means that shape 5 results from the Argument with index 0. + +Example: +~~~~ + Draw[118]> bopwho 68 + the shape is new + EF: (58, 12), + FF curves: (12, 56), + FF curves: (12, 64), +~~~~ + +This means that shape 68 is a result of the following interferences: +* *EF: (58, 12)* – edge 58 / face 12 +* *FF curves: (12, 56)* – edge from the intersection curve between faces 12 and 56 +* *FF curves: (12, 64)* – edge from the intersection curve between faces 12 and 64 + +@subsubsection occt_draw_20_3_11 bopnews + +Syntax: +~~~~ +bopnews -v [-e] +~~~~ + +* -v - displays all new vertices produced during the operation; +* -e - displays all new edges produced during the operation. + +@subsection occt_draw_20_4 Commands for the Building Part + +The commands listed below are available when the Building Part of the algorithm is done (i.e. after the command *bbuild*). + +@subsubsection occt_draw_20_4_1 bopim + +Syntax: + +~~~~ +bopim S +~~~~ +Shows the compound of shapes that are images of shape *S* from the argument. + + @section occt_draw_8 Data Exchange commands -This paragraph presents some general information about Data Exchange (DE) operations. +This chapter presents some general information about Data Exchange (DE) operations. DE commands are intended for translation files of various formats (IGES,STEP) into OCCT shapes with their attributes (colors, layers etc.) diff --git a/dox/user_guides/modeling_algos/modeling_algos.md b/dox/user_guides/modeling_algos/modeling_algos.md index 66e99b3845..7d2fc2dfd5 100644 --- a/dox/user_guides/modeling_algos/modeling_algos.md +++ b/dox/user_guides/modeling_algos/modeling_algos.md @@ -1869,6 +1869,7 @@ TopoDS_Solid R2 = BRepPrimAPI_MakeRevol(F,axis,ang); @section occt_modalg_5 Boolean Operations Boolean operations are used to create new shapes from the combinations of two shapes. +See @ref occt_user_guides__boolean_operations "Boolean Operations" for detailed documentation. | Operation | Result | | :---- | :------ | diff --git a/dox/user_guides/user_guides.md b/dox/user_guides/user_guides.md index f1ccc01815..10b9011891 100644 --- a/dox/user_guides/user_guides.md +++ b/dox/user_guides/user_guides.md @@ -7,6 +7,7 @@ OCCT User Guides are organized by OCCT modules: * @subpage occt_user_guides__modeling_data "Modeling Data" * @subpage occt_user_guides__brep_wp "BREP format description" * @subpage occt_user_guides__modeling_algos "Modeling Algorithms" + * @subpage occt_user_guides__boolean_operations "Boolean Operations" * @subpage occt_user_guides__shape_healing "Shape Healing" * @subpage occt_user_guides__visualization "Visualization" * @subpage occt_user_guides__voxels_wp "Voxels"