// trans.SetScale(gp_Pnt2d(0,0),1./Vlast);
Standard_Real du = 1.;
- Handle(Geom_SurfaceOfLinearExtrusion) LE =
- Handle(Geom_SurfaceOfLinearExtrusion)::DownCast(Surf);
- if(LE->BasisCurve()->IsKind(STANDARD_TYPE(Geom_TrimmedCurve))) {
- Handle(Geom_TrimmedCurve) tc =
- Handle(Geom_TrimmedCurve)::DownCast(LE->BasisCurve());
- if(tc->BasisCurve()->IsKind(STANDARD_TYPE(Geom_Line))) {
- Standard_Real us1,us2,vs1,vs2;
- Surf->Bounds(us1,us2,vs1,vs2);
- du = us2-us1;
- }
- }
+ Standard_Real us1,us2,vs1,vs2;
+ //scaling parameterization to [0,1]
+ Surf->Bounds(us1,us2,vs1,vs2);
+ du = us2-us1;
//emv: changed for bug OCC22126 17.12.2010
uFact = (Vlast - Vfirst)/du;
//uFact = aDiv/du;
if(Surf->IsKind(STANDARD_TYPE(Geom_SurfaceOfLinearExtrusion))) {
//emv: changed for bug OCC22126 17.12.2010
gp_Trsf2d trans1;
- trans1.SetTranslation(gp_Vec2d(0.,-Vfirst/(Vlast-Vfirst)));
+ Standard_Real us1,us2,vs1,vs2,du;
+ //computing shift of pcurves
+ Surf->Bounds(us1,us2,vs1,vs2);
+ du = us2-us1;
+ trans1.SetTranslation(gp_Vec2d(-us1/du,-Vfirst/(Vlast-Vfirst)));
Curve2d = sbe.TransformPCurve(Curve2d,trans1,1.,First,Last);
}