diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index 8a9d8d61ac..38ce95fdbd 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -1602,19 +1602,9 @@ void GeomBSplineCurve::Trim(double u, double v) }; try { - if(!isPeriodic()) { - splitUnwrappedBSpline(u, v); - } - else { // periodic - if( v < u ) { // wraps over origin - v = v + 1.0; // v needs one extra lap (1.0) - - splitUnwrappedBSpline(u, v); - } - else { - splitUnwrappedBSpline(u, v); - } - } + if (isPeriodic() && (v - u <= Precision::PConfusion())) + v = v + myCurve->LastParameter() - myCurve->FirstParameter(); // v needs one extra lap + splitUnwrappedBSpline(u, v); } catch (Standard_Failure& e) { THROWM(Base::CADKernelError,e.GetMessageString())