mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0024646: Wrong result done by Boolean Operation algorithm
1. class BOPAlgo_PaveFiller method void BOPAlgo_PaveFiller::PerformEF() Do not create intersection vertices in case if it lies ON the boundary of the face. 2. class IntTools_Context New method Standard_Boolean IntTools_Context::IsPointInFace (const gp_Pnt& aP, const TopoDS_Face& aF, const Standard_Real aTol) has been implemented to check if the point IN the face. 3. class IntTools_EdgeFace method void IntTools_EdgeEdge::FindBestSolution(const Standard_Real aT11, const Standard_Real aT12, const Standard_Real aT21, const Standard_Real aT22, Standard_Real& aT1, Standard_Real& aT2) Treatment of the touching cases. Test cases for issue CR24646 Correction of test cases for issue CR24646
This commit is contained in:
@@ -617,7 +617,7 @@ Standard_Real IntersectCurves2d(const gp_Pnt& aPV,
|
||||
gp_Pnt2d aP2D;
|
||||
//
|
||||
aDist = 0.;
|
||||
aTol2d = Precision::Confusion();
|
||||
aTol2d = 1.e-10;//Precision::Confusion();
|
||||
//
|
||||
const Handle(Geom2d_Curve)& aC2D1=
|
||||
BRep_Tool::CurveOnSurface(aE1, aF, aT11, aT12);
|
||||
@@ -637,13 +637,13 @@ Standard_Real IntersectCurves2d(const gp_Pnt& aPV,
|
||||
}
|
||||
aNbPnt = aInter.NbPoints();
|
||||
if (aNbPnt) {
|
||||
aDist = Precision::Infinite();
|
||||
aDist = -Precision::Infinite();
|
||||
for (j = 1; j <= aNbPnt; ++j) {
|
||||
aP2D = aInter.Point(j).Value();
|
||||
aS->D0(aP2D.X(), aP2D.Y(), aP);
|
||||
aD=aPV.SquareDistance(aP);
|
||||
if (aD < aDist) {
|
||||
aDist = aD;
|
||||
if (aD > aDist) {
|
||||
aDist = 1.01 * aD;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user