Pulling control point onto a surface or curve

Hi,

often it is nice or necessary to pull internal cv, to a curve or onto a surface. Currently I can only do this by hand.

Example curve


Example surface


Is there a already a command or script for this? Ideally it could handle any number of cvs and pull them to a curve or to a second surface.

thanks!!

scripts related to this:

I found this thread but it only matches the edge:
Pull control points to surface?

I tried this but it didn’t seem to do anything:
Move control point on surface

sorry apparently I didn’t used the search enough:
Pull Grips / Controlpoints to Curve or Surface