]> OCCT Git - occt-copy.git/commitdiff
0028909: Algorithm of BO is stuck while fusing shell and edges
authorifv <ifv@opencascade.com>
Thu, 20 Jul 2017 07:13:12 +0000 (10:13 +0300)
committerifv <ifv@opencascade.com>
Thu, 20 Jul 2017 07:13:12 +0000 (10:13 +0300)
Tolerance used for projection curve on surface is increased for large edge tolerances

src/BOPTools/BOPTools_AlgoTools2D.cxx

index 90bd350ddf5ab006fc573e028ab75e12b32cdc61..bdef984b15c3b6eea4fbcb3262c0ee9d611cdd08 100644 (file)
@@ -640,9 +640,14 @@ void BOPTools_AlgoTools2D::MakePCurveOnFace
     aTolR = aProj1.GetTolerance();
   } 
   else {
-    ProjLib_ProjectedCurve aProjCurv(aBAHS, aBAHC);// 1
+    Standard_Real aTR = Precision::Confusion();//1.e-7;
+    if (TolReached2d > aTR) {
+      aTR = Min(0.0001, Max(.01 * TolReached2d, aTR));
+    }
+
+    ProjLib_ProjectedCurve aProjCurv(aBAHS, aBAHC, aTR);// 1
     BOPTools_AlgoTools2D::MakePCurveOfType(aProjCurv, aC2D);
-    aTolR=aProjCurv.GetTolerance();
+    aTolR = aProjCurv.GetTolerance();
   }
   //
   if (aC2D.IsNull()) {