1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-14 13:30:48 +03:00

0028187: Add possibility to avoid creation of Internal parts in the result of Volume maker algorithm

1. The possibility to prevent addition of internal parts has been added into the following algorithms:
- BOPAlgo_BuilderFace;
- BOPAlgo_BuilderSolid;
- BOPAlgo_MakerVolume.

Setting the option to avoid internal parts for MakerVolume algorithm guarantees that the result solids
will be manifold and not contain any internal parts. But it does not prevent from occurrence
of the internal edges or vertices in the faces.

2. The Set/Get methods of the BOPAlgo_BuilderArea class have been made inline.

3. Draw command mkvolume has been updated to take into account the new option.

4. BRepOffset_MakeOffset::BuildShellsCompleteInter() has been modified to use the new option of BOPAlgo_MakerVolume
to speed up the construction of the final result solid.

5. Documentation has been updated with new section dedicated to BOPAlgo_MakerVolume algorithm.

6. Test case for the issue.
This commit is contained in:
emv
2016-12-05 15:52:36 +03:00
committed by apn
parent a699468165
commit 291fced1e6
15 changed files with 182 additions and 124 deletions

View File

@@ -4049,6 +4049,7 @@ Standard_Boolean BuildShellsCompleteInter(const BOPCol_ListOfShape& theLF,
aMV1.SetArguments(theLF);
// we need to intersect the faces to process the tangential faces
aMV1.SetIntersect(Standard_True);
aMV1.SetAvoidInternalShapes(Standard_True);
aMV1.Perform();
//
Standard_Boolean bDone = (aMV1.ErrorStatus() == 0);
@@ -4092,6 +4093,7 @@ Standard_Boolean BuildShellsCompleteInter(const BOPCol_ListOfShape& theLF,
aMV2.SetArguments(aLF2);
// no need to intersect this time
aMV2.SetIntersect(Standard_False);
aMV2.SetAvoidInternalShapes(Standard_True);
aMV2.Perform();
bDone = (aMV2.ErrorStatus() == 0);
if (!bDone) {
@@ -4136,6 +4138,7 @@ Standard_Boolean BuildShellsCompleteInter(const BOPCol_ListOfShape& theLF,
BOPAlgo_MakerVolume aMV3;
aMV3.SetArguments(aLF3);
aMV3.SetIntersect(Standard_False);
aMV3.SetAvoidInternalShapes(Standard_True);
aMV3.Perform();
bDone = (aMV3.ErrorStatus() == 0);
if (!bDone) {