Test the possibility of line creation is added
myU1(U1), myU2(U2)
{
gp_Pnt P1 = theCurve.Value(U1), P2 = theCurve.Value(U2);
- myLin = gp_Lin(P1, P2.XYZ() - P1.XYZ());
+ if (P1.SquareDistance(P2) > gp::Resolution())
+ {
+ myLin = gp_Lin(P1, P2.XYZ() - P1.XYZ());
+ }
+ else
+ {
+ //For #28812
+ theCurve.D0(U1 + .01*(U2-U1), P2);
+ myLin = gp_Lin(P1, P2.XYZ() - P1.XYZ());
+ }
}
//
//=======================================================================
myU1(U1), myU2(U2)
{
gp_Pnt2d P2d1 = theCurve.Value(U1), P2d2 = theCurve.Value(U2);
- myLin = gp_Lin2d(P2d1, P2d2.XY() - P2d1.XY());
+ if (P2d1.SquareDistance(P2d2) > gp::Resolution())
+ {
+ myLin = gp_Lin2d(P2d1, P2d2.XY() - P2d1.XY());
+ }
+ else
+ {
+ //For #28812
+ theCurve.D0(U1 + .01*(U2 - U1), P2d2);
+ myLin = gp_Lin2d(P2d1, P2d2.XY() - P2d1.XY());
+ }
+
}
//=======================================================================