1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

0026243: Boolean operations failed on shapes with fillets

Detected bugs have been fixed.

Test case for issue CR26243
This commit is contained in:
pkv
2015-08-06 12:27:34 +03:00
committed by bugmaster
parent 5163f46719
commit 577c6f0d0f
4 changed files with 106 additions and 3 deletions

View File

@@ -2062,17 +2062,24 @@ void IntAna_QuadQuadGeo::Perform(const gp_Pln& Pln,
//
gp_Pnt aTorLoc = aTorAx.Location();
if (bParallel) {
Standard_Real aDt, X, Y, Z, A, B, C, D;
Standard_Real aDt, X, Y, Z, A, B, C, D, aDR, aTolNum;
//
aTolNum=myEPSILON_CYLINDER_DELTA_RADIUS;
//
Pln.Coefficients(A,B,C,D);
aTorLoc.Coord(X,Y,Z);
aDist = A*X + B*Y + C*Z + D;
//
if ((Abs(aDist) - aRMin) > Tol) {
aDR=Abs(aDist) - aRMin;
if (aDR > aTolNum) {
typeres=IntAna_Empty;
return;
}
//
if (Abs(aDR) < aTolNum) {
aDist=aRMin;
}
//
typeres = IntAna_Circle;
//
pt1.SetCoord(X - aDist*A, Y - aDist*B, Z - aDist*C);
@@ -2080,7 +2087,7 @@ void IntAna_QuadQuadGeo::Perform(const gp_Pln& Pln,
param1 = aRMaj + aDt;
dir1 = aTorAx.Direction();
nbint = 1;
if ((Abs(aDist) < aRMin) && (aDt > Tol)) {
if ((aDR < -aTolNum) && (aDt > Tol)) {
pt2 = pt1;
param2 = aRMaj - aDt;
dir2 = dir1;