0026243: Boolean operations failed on shapes with fillets
authorpkv <pkv@opencascade.com>
Thu, 6 Aug 2015 09:27:34 +0000 (12:27 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 6 Aug 2015 09:28:29 +0000 (12:28 +0300)
Detected bugs have been fixed.

Test case for issue CR26243

src/IntAna/IntAna_QuadQuadGeo.cxx
tests/bugs/modalg_6/bug26243_1 [new file with mode: 0755]
tests/bugs/modalg_6/bug26243_2 [new file with mode: 0755]
tests/bugs/modalg_6/bug26243_3 [new file with mode: 0755]

index 6f77e0b..eeeb586 100644 (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;
diff --git a/tests/bugs/modalg_6/bug26243_1 b/tests/bugs/modalg_6/bug26243_1
new file mode 100755 (executable)
index 0000000..a900699
--- /dev/null
@@ -0,0 +1,32 @@
+puts "============"
+puts "OCC26243"
+puts "============"
+puts ""
+######################################################
+# Boolean operations failed on shapes with fillets
+######################################################
+
+restore [locate_data_file bug26243_anc101.brep] _model
+
+tcopy _model _copy
+trotate _copy 155. 100.75 0 0 0 1 90
+
+bcommon result _model _copy
+
+set square 272911
+
+set nbshapes_expected "
+Number of shapes in shape
+ VERTEX    : 151
+ EDGE      : 233
+ WIRE      : 106
+ FACE      : 94
+ SHELL     : 1
+ SOLID     : 1
+ COMPSOLID : 0
+ COMPOUND  : 1
+ SHAPE     : 587
+"
+checknbshapes result -ref ${nbshapes_expected} -t -m "Boolean operations on shapes with fillets"
+
+set 3dviewer 1
diff --git a/tests/bugs/modalg_6/bug26243_2 b/tests/bugs/modalg_6/bug26243_2
new file mode 100755 (executable)
index 0000000..2b2d6ba
--- /dev/null
@@ -0,0 +1,32 @@
+puts "============"
+puts "OCC26243"
+puts "============"
+puts ""
+######################################################
+# Boolean operations failed on shapes with fillets
+######################################################
+
+restore [locate_data_file bug26243_anc101.brep] _model
+
+tcopy _model _copy
+trotate _copy 155. 100.75 0 0 0 1 90
+
+bcut result _model _copy
+
+set square 278545
+
+set nbshapes_expected "
+Number of shapes in shape
+ VERTEX    : 146
+ EDGE      : 226
+ WIRE      : 111
+ FACE      : 97
+ SHELL     : 7
+ SOLID     : 7
+ COMPSOLID : 0
+ COMPOUND  : 1
+ SHAPE     : 595
+"
+checknbshapes result -ref ${nbshapes_expected} -t -m "Boolean operations on shapes with fillets"
+
+set 3dviewer 1
diff --git a/tests/bugs/modalg_6/bug26243_3 b/tests/bugs/modalg_6/bug26243_3
new file mode 100755 (executable)
index 0000000..6c3aab7
--- /dev/null
@@ -0,0 +1,32 @@
+puts "============"
+puts "OCC26243"
+puts "============"
+puts ""
+######################################################
+# Boolean operations failed on shapes with fillets
+######################################################
+
+restore [locate_data_file bug26243_anc101.brep] _model
+
+tcopy _model _copy
+trotate _copy 155. 100.75 0 0 0 1 90
+
+bfuse result _model _copy
+
+set square 606195
+
+set nbshapes_expected "
+Number of shapes in shape
+ VERTEX    : 309
+ EDGE      : 499
+ WIRE      : 248
+ FACE      : 209
+ SHELL     : 1
+ SOLID     : 1
+ COMPSOLID : 0
+ COMPOUND  : 1
+ SHAPE     : 1268
+"
+checknbshapes result -ref ${nbshapes_expected} -t -m "Boolean operations on shapes with fillets"
+
+set 3dviewer 1