Getting Points UV array from line on surface.

Hi,

Try to get points on surface in UV Space from 3d BspLine line.
It crash programm stack at projector.Perform(Point3d); string.

Handle(Geom_Curve) aCurve = surfaceIntersection.Line(nCurve);
Handle(Geom_Surface) surface;
if (SrfNo == 1)
surface = surface1;
else
surface = surface2;

GeomConvert_ApproxCurve approxCurve(aCurve, tolerance, GeomAbs_C1, 5000, 3);
Handle(Geom_BSplineCurve) myBSplCurve = approxCurve.Curve();

GeomAPI_ProjectPointOnSurf projector;
Standard_Real umin, umax, vmin, vmax;
surface->Bounds(umin, umax, vmin, vmax);

TColgp_Array1OfPnt2d uv_points(1, myBSplCurve->NbPoles());
Standard_Real u, dU, u1, v1;
dU = (myBSplCurve->LastParameter() - myBSplCurve->FirstParameter())/ (myBSplCurve->NbPoles()-1);

for (Standard_Integer i = 1, u = myBSplCurve->FirstParameter(); i <= myBSplCurve->NbPoles(); i++, u += dU)
{
gp_Pnt Point3d;
myBSplCurve->D0(u, Point3d);
projector.Init(surface, umin, umax, vmin, vmax, tolerance);
projector.Perform(Point3d);
if (projector.IsDone())
{
projector.LowerDistanceParameters(u1, v1);
uv_points.SetValue(i, gp_Pnt2d(u1, v1));
}
}

What can be wrong? Or what is the best method to get set of 2d points on surface or 2d line on surface?