mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-19 13:40:49 +03:00
0027222: Empty result of making volume operation
1. BOPAlgo_MakerVolume - Taking into account the possibility of Same Domain faces while collecting the faces for building the solids; 2. BOPDS_DS - Making the check on coincidence of edges consistent with the intersection algorithm which also adds the Precision::Confusion() to the intersection tolerance; 3. Test case for the issue. 4. Adjusting test cases (improvements) to their new behavior.
This commit is contained in:
@@ -200,6 +200,7 @@ void BOPAlgo_MakerVolume::CollectFaces()
|
||||
//
|
||||
Standard_Integer i, aNbShapes;
|
||||
BOPCol_ListIteratorOfListOfShape aIt;
|
||||
BOPCol_MapOfShape aMFence;
|
||||
//
|
||||
aNbShapes = myDS->NbSourceShapes();
|
||||
for (i = 0; i < aNbShapes; ++i) {
|
||||
@@ -217,7 +218,9 @@ void BOPAlgo_MakerVolume::CollectFaces()
|
||||
aIt.Initialize(aLFIm);
|
||||
for (; aIt.More(); aIt.Next()) {
|
||||
const TopoDS_Shape& aFIm = aIt.Value();
|
||||
AddFace(aFIm, myFaces);
|
||||
if (aMFence.Add(aFIm)) {
|
||||
AddFace(aFIm, myFaces);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@@ -1734,7 +1734,7 @@ Standard_Boolean BOPDS_DS::CheckCoincidence
|
||||
aD=aPPC.LowerDistance();
|
||||
//
|
||||
aTol=BRep_Tool::Tolerance(aE1);
|
||||
aTol=aTol+BRep_Tool::Tolerance(aE2);
|
||||
aTol=aTol+BRep_Tool::Tolerance(aE2) + Precision::Confusion();
|
||||
if (aD<aTol) {
|
||||
aT2x=aPPC.LowerDistanceParameter();
|
||||
if (aT2x>aT21 && aT2x<aT22) {
|
||||
|
Reference in New Issue
Block a user