+ //jgv: put the curve into parametric range
+ gp_Pnt2d MidPoint = myBSpline->Value(0.5*(myBSpline->FirstParameter() + myBSpline->LastParameter()));
+ Standard_Real TestU = MidPoint.X(), TestV = MidPoint.Y();
+ Standard_Real sense = 0.;
+ if (uperiod)
+ {
+ if (TestU < Uinf - TolU)
+ sense = 1.;
+ else if (TestU > Usup + TolU)
+ sense = -1;
+ while (TestU < Uinf - TolU || TestU > Usup + TolU)
+ TestU += sense * uperiod;
+ }
+ if (vperiod)
+ {
+ sense = 0.;
+ if (TestV < Vinf - TolV)
+ sense = 1.;
+ else if (TestV > Vsup + TolV)
+ sense = -1.;
+ while (TestV < Vinf - TolV || TestV > Vsup + TolV)
+ TestV += sense * vperiod;
+ }
+ gp_Vec2d Offset(TestU - MidPoint.X(), TestV - MidPoint.Y());
+ if (Abs(Offset.X()) > gp::Resolution() ||
+ Abs(Offset.Y()) > gp::Resolution())
+ myBSpline->Translate(Offset);
+ //////////////////////////////////////////