immediately, a quickish method is to extrude your curve (any which how) into a surface, intersect w your other surface, and then cut generated wrld crv w your original crv. easy enuf to script, umm ...
{
pickWalk -d down;
string $crv[] = ls -sl -type "nurbsCurve"
;
string $surf[] = ls -sl -type "nurbsSurface"
;
if (size($crv)==1&&size($surf)==1){
string $iSurf[] = extrude -ch 0 -et 0 -l 0.001 $crv[0]
;
string $cutCrv[] = intersect -ch 0 -cos 0 -fs 1 -tol 0.01 $iSurf[0] $surf[0]
;
delete $iSurf; select -r $crv[0] $cutCrv[0];
cutCurvePreset(1,1,0.001,6,1,0,0,1,2);
delete $cutCrv; pickWalk -d down;
for ($cr in ls -sl
)
if (!getAttr ($cr+".max")
)
delete listRelatives -p $cr
;}else{error " *** select just one crv and one surf transform ***";}
}
dump that into a shelf button, or make a proc, whatever. its a bit crude, but should do the trick most of the time. requires you select transforms for the surface and intersecting crv, and it assumes that you will be discarding the smaller segment of the crv that gets chopped by the intersection (if you want to keep both, change second to last arg on the cutCurvePreset to 2). if the crv intersects twice, you might not get what you expect.
have fun! 