mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-19 13:40:49 +03:00
0029333: Boolean Operations - Prevent modification of the input shapes in case their sub-shapes have not been modified
Prevent modification of the input shapes in destructive mode in case their sub-shapes have not been modified: 1. Prevent edge splitting for the pave blocks with old vertices if it is possible to use the existing edge (*BOPAlgo_PaveFiller::MakeSplitEdges*); 2. Prevent creation of the new containers (WIRES/SHELLS/COMPSOLIDS) if non of its parts have been modified (*BOPAlgo_Builder::FillImagesContainer*); 3. Prevent creation of the new face if non of its wires have been modified (*BOPAlgo_Builder::FillImagesFaces*); 4. If possible, use the original face to be the representative for the group of SD faces (*BOPAlgo_Builder::FillSameDomainFaces*). Cosmetic changes: 1. Documentation of the *BOPAlgo_Builder* class. 2. Making simple methods of the *BOPAlgo_Builder* class inline. 3. Getting rid of the *BOPAlgo_Builder::mySplits* field as it is excessive. *BOPAlgo_Builder::myImages* can be used instead. 3. Moving the Check Inverted option from *BOPAlgo_Options* to *BOPAlgo_Builder*. Test cases for the issue. Adjustment of the test case to their current behavior. Test case *blend/complex/H2* has been deleted as duplicate of the test case *blend/simple/Z1*.
This commit is contained in:
@@ -116,6 +116,23 @@ void BOPDS_CommonBlock::AppendFaces(TColStd_ListOfInteger& aLF)
|
||||
return myPaveBlocks.First();
|
||||
}
|
||||
//=======================================================================
|
||||
// function: SetRealPaveBlock
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
void BOPDS_CommonBlock::SetRealPaveBlock(const Handle(BOPDS_PaveBlock)& thePB)
|
||||
{
|
||||
BOPDS_ListIteratorOfListOfPaveBlock it(myPaveBlocks);
|
||||
for (; it.More(); it.Next())
|
||||
{
|
||||
if (it.Value() == thePB)
|
||||
{
|
||||
myPaveBlocks.Prepend(thePB);
|
||||
myPaveBlocks.Remove(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//=======================================================================
|
||||
// function: PaveBlockOnEdge
|
||||
// purpose:
|
||||
//=======================================================================
|
||||
|
Reference in New Issue
Block a user