- gp_Pnt2d uv1, uv2;
- BRep_Tool::UVPoints( edge, face, uv1, uv2 );
- const double du = Abs( uv1.Coord(1) - uv2.Coord(1) );
- const double dv = Abs( uv1.Coord(2) - uv2.Coord(2) );
- if ( du < Precision::PConfusion() )
+ // pcurve can lie not on pediod boundary (22582, mesh_Quadratic_01/C9)
+ if ( du < dv )
+ {
+ double u1 = uv1.Coord(1);
+ edge.Reverse();
+ BRep_Tool::UVPoints( edge, face, uv1, uv2 );
+ double u2 = uv1.Coord(1);
+ myPar1[0] = Min( u1, u2 );
+ myPar2[0] = Max( u1, u2 );
+ }
+ else
+ {
+ double v1 = uv1.Coord(2);
+ edge.Reverse();
+ BRep_Tool::UVPoints( edge, face, uv1, uv2 );
+ double v2 = uv1.Coord(2);
+ myPar1[1] = Min( v1, v2 );
+ myPar2[1] = Max( v1, v2 );
+ }
+ }
+ else //if ( !isSeam )
+ {
+ // one pcurve but on period boundary (22772, mesh_Quadratic_01/D1)
+ if (( myParIndex & U_periodic ) && du < Precision::PConfusion() )