diff --git a/src/BOPTools/BOPTools_AlgoTools2D.cxx b/src/BOPTools/BOPTools_AlgoTools2D.cxx index 20efb35b5c..25e1a90fcf 100644 --- a/src/BOPTools/BOPTools_AlgoTools2D.cxx +++ b/src/BOPTools/BOPTools_AlgoTools2D.cxx @@ -655,7 +655,7 @@ void BOPTools_AlgoTools2D::MakePCurveOnFace aTR = Min(aMaxTol, 0.1*TolReached2d); aMaxSegments = 100; aMaxDist = 1.e3*TolReached2d; - if(!isAnaSurf) + if(!isAnaSurf || TolReached2d > 1.) { aBndPnt = AppParCurves_PassPoint; } diff --git a/tests/bugs/modalg_7/bug29183 b/tests/bugs/modalg_7/bug29183 new file mode 100644 index 0000000000..4ce4f32253 --- /dev/null +++ b/tests/bugs/modalg_7/bug29183 @@ -0,0 +1,30 @@ +puts "========" +puts "OCC29183" +puts "========" +puts "" +################################################# +# Result of general fuse of shell and edge +# produces a shape with too large tolerance +################################################# + +set MaxTol 30 + +restore [locate_data_file bug29183_shapes.brep] ss +bclearobjects +bcleartools +baddcompound ss +bfillds +bbuild r + +regexp {Tolerance MAX=([-0-9.+eE]+)} [tolerance r] full toler + +if {$toler > $MaxTol} { + puts "Error: Tolerance after fusing is too large" +} + +checknbshapes r -m "Fusing result" -edge 18 -face 7 + +smallview +don r +fit +checkview -screenshot -2d -path ${imagedir}/${test_image}_1.png