diff --git a/src/Mod/Part/App/Geometry.cpp b/src/Mod/Part/App/Geometry.cpp index 9f52a3fd60..046d2624d6 100644 --- a/src/Mod/Part/App/Geometry.cpp +++ b/src/Mod/Part/App/Geometry.cpp @@ -1894,19 +1894,10 @@ 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)) { + v = v + (getLastParameter() - getFirstParameter()); // v needs one extra lap } + splitUnwrappedBSpline(u, v); } catch (Standard_Failure& e) { THROWM(Base::CADKernelError,e.GetMessageString())