Computing pcurve of a 3d curve on a surface

Greetings!

My goal is to implement a face-pulling operation using occ. As far as I know, there are following sub-tasks after a face is moved:

(1) Update the surface of the moved face.

(2) Update all adjacent edges and vertices. This is achieved by recomputing 3d curves and 3d points, and use BRep_Builder::UpdateVertex and BRep_Builder::UpdateEdge.

(3) Update pcurves in the new surface.

Please help me to check whether the above process is correct. And the problem that bothers me the most is step (3), i.e. how to calculate pcurve?

Thank your very much for your generous help!