Move control point on surface

I have a curve projected onto a curved polysurface. I need to adjust the curve and am looking for how to move control points along the surface in order to keep the curve on the surface. Thanks. Harold

Hi Harold - you can use the CurveOnSurface plug-in
Also, you can Pull or Project a curve onto a surface using History (DeleteInout=No) and edit the original curve - the projected or pulled curve will update.


Pascal, the use history option should work but is there a way to edit control points while the curve is already on the surface and have the curve remain on the surface? Thanks

Hi Harold - only if you create and edit the curve using the plug-in.


You can always point edit the curve, and then run Pullback. I would suggest maybe starting with projecting the curve onto the surface, with the Loose option set to yes. It won’t be exactly on the surface, but it’ll be close (depending on your surface and input curve of course). Once you think your curve is close to where you want it, you can run Pullback with Loose set to no, and it’ll be on the surface to within file tolerance. As you may have noticed, even a simple curve projected onto a simple surface can become very dense with points and make it difficult to point edit. This way you can sculpt the curve a bit more and then set it exactly on the surface.

1 Like

I’m looking for a way of moving a curve on surface (pull command on cone used) with the curves control points. Is there a plugin for Rhino 6

Hello - if you have pulled the curve to the surface, the control points will not generally be on the surface - I think what you mean is you’d like to adjust the control points of a curve in a way that is constrained by a surface and have the resulting curve be on a surface, correct?


Yes. Thanks. I’m using the control points of the curve I pulled from, right now. I’m interested in the plugin in the link above for Rhino 6 (that old link is defunct ).Is there a new command in Rhino 6 that allows moving the control points of a curve constrained to the surface?

There is no “lingering” constraint in Rhino like you might have in a parametric solid modeler.
The “on surface” tool is only in effect at the time you use it. If you move an object or point later, you would need to turn on the on-surface tool again for those subsequent edits.

What plugin is it?

I’m not familiar with the V5 plug-in described above or one for V6.
I’m describing the Rhino one-shot OnSrf osnap you can get to with the Ctrl key:


That’s interesting and I’ve never used it.

So how does it work exactly? pick a point and pick a surface?

Tried googling it but nothing really shows it in use.

*Also I think there should be a pull points to surface command or script somewhere.(I hope) T splines has it but only works with t splines objects sadly.

Hello - you can invoke OnSrf ir POnSrf (P for persistent, for use in commands that do not finish after one pick, like Curve, Polyline, etc). When Rhino is looking for point locations, use OnSrf/POnsrf and select a surface - the point location will be constrained to that surface. Similar are OnCrv, OnMesh.


Ahh…so it’s not really a surface point editing tool.

I would like to use it for locking a point onto a surface and moving it only in a constrained way…that would be super useful to me.

I’m working on a hack…

@Vladimir_Aleksic , @Et_Rec - here’s a very crude hack - if I have time I’ll make it slicker - right now it moves control points on the surface - the curve is not then pulled to the surface - that might or might not be desireable. It also does not draw any nice preview - I’ll try to get that in…
btw, it also works on EditPoints, which is much more ‘on surface’ as far as the curve goes.

use RunPythonScript or

! _-RunPythonScript "Full path to pt file inside double-quotes." (2.1 KB)

  • Pascal
1 Like

Many thanks Pascal!

I will test it now.

*Yup this is it in principle, what would be really required though is to move multiple points onto a surface and not just one. (Both options would be required)

quick example:

Pulling a row of points and then having the ability to place them wherever on that surface.

Again, you can do this in Tsplines but that type of geometry is too dirty for anything serious.

oh and:


Hi Vladimir - for your first image, I’m not sure if I am reading it correctly but using DragMode>ControlPolygon may do what you want. Note you can toggle a drag mode by running a macro a second time, e.g.

_DragMode ControlPolygon

will toggle between ‘regular’ (=CPlane) and control polygon modes. The mode may take some getting used to - if you want to drag on the polygon extensions, drag a little in the polygon first, hit the Tab direction lock and then drag on the extension. Assuming that is what you’re after here in the first place…



Ye, basically yesterday is the first time I saw the other ctrl osnap options…I have no idea what they can do for me yet. (and I’ve been using rhino for 6 years)

But besides polygon constraint, which I could do with a cplane also, what if I want the constraint to be a cylindrical or a spherical surface?


Hello - can you please start a new thread for this question?