mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0026132: Invalid result of boolean operation
1. The procedures for check of coincidence between Edge-Edge and Edge-Face have been added. These methods are used instead of searching interferences between corresponding sub-shapes. In most cases (including case for this issue), new methods are more reliable and faster than intersections. However, its use should be avoided in case when the edge is not coincide with edge/face of another argument evidently (e.g. if edge vertices are not in another edge/face). 2. Interface of both IntTools_EdgeFace and IntTools_EdgeEdge has been changed (adding/deleted some field and methods). Some test cases have been corrected in accordance with their new behavior. Test case for issue CR26132.
This commit is contained in:
@@ -888,10 +888,27 @@ void IntTools_FaceFace::MakeCurve(const Standard_Integer Index,
|
||||
}
|
||||
L = aWLine;
|
||||
|
||||
//
|
||||
//if(!myListOfPnts.IsEmpty()) {
|
||||
// bAvoidLineConstructor = Standard_True;
|
||||
//}
|
||||
#ifdef INTTOOLS_FACEFACE_DEBUG
|
||||
if(!myListOfPnts.IsEmpty()) {
|
||||
char aBuff[10000];
|
||||
const IntSurf_PntOn2S& aPt = myListOfPnts.First();
|
||||
Standard_Real u1, v1, u2, v2;
|
||||
aPt.Parameters(u1, v1, u2, v2);
|
||||
|
||||
Sprintf(aBuff,"bopcurves <face1 face2> -2d");
|
||||
IntSurf_ListIteratorOfListOfPntOn2S IterLOP1(myListOfPnts);
|
||||
for(;IterLOP1.More(); IterLOP1.Next())
|
||||
{
|
||||
const IntSurf_PntOn2S& aPt = IterLOP1.Value();
|
||||
Standard_Real u1, v1, u2, v2;
|
||||
aPt.Parameters(u1, v1, u2, v2);
|
||||
|
||||
Sprintf(aBuff, "%s -p %+10.20f %+10.20f %+10.20f %+10.20f", aBuff, u1, v1, u2, v2);
|
||||
}
|
||||
|
||||
cout << aBuff << endl;
|
||||
}
|
||||
#endif
|
||||
|
||||
Standard_Integer nbp = aWLine->NbPnts();
|
||||
const IntSurf_PntOn2S& p1 = aWLine->Point(1);
|
||||
|
Reference in New Issue
Block a user