diff --git a/src/Extrema/Extrema_GenExtCC.gxx b/src/Extrema/Extrema_GenExtCC.gxx index 63294ae1bd..a03e33d116 100644 --- a/src/Extrema/Extrema_GenExtCC.gxx +++ b/src/Extrema/Extrema_GenExtCC.gxx @@ -220,6 +220,12 @@ void Extrema_GenExtCC::Perform() // Change constant value according to the concrete curve types. Standard_Boolean isConstLockedFlag = Standard_False; + //To prevent LipConst to became too small + const Standard_Real aCR = 0.001; + if (aMaxDer1 / aMaxDer < aCR || aMaxDer2 / aMaxDer < aCR) + { + isConstLockedFlag = Standard_True; + } if (C1.GetType() == GeomAbs_Line) { aMaxDer = 1.0 / C2.Resolution(1.0); diff --git a/tests/bugs/modalg_6/bug28637 b/tests/bugs/modalg_6/bug28637 new file mode 100644 index 0000000000..5caeda323a --- /dev/null +++ b/tests/bugs/modalg_6/bug28637 @@ -0,0 +1,12 @@ +puts "========" +puts "OCC28637" +puts "========" +puts "" +#################################################################################### +## [regression] Extrema curve - curve can not find correct solution between edge based on the line and BSpline edge +#################################################################################### + +restore [locate_data_file bug28637_shapes.brep] b +explode b +distmini d b_1 b_2 +checkprops d -l 4.46857e-005 -deps 1.e-2