Is there a "Offset Subcrv" command or script?

Hello Forum!

Let me explain:

Is there a simple way to modify a closed curve to go from this:


without having to: explode the curve, offset the one sub-curve, extend/trim the curves, and finally join everything back?

I know there is MoveCrv but it is not at all the same. The angles of the adjacent sub-curves will change and the length of the moved curve will stay the same.

A bit of background for this: As an architect I use this kind of modification very very often and it is a standard command in programs like Archicad… I Doubt I am the only one who misses this…

Does anybody have a script? Tip? Or have I been missing an already existing command?

Thanks in advance

for a case like that you can make a planarSrf with those lines and then ExtendSrf to “move” the edge keeping the adjacent edges and angles the same

1 Like

Hey Thanks for the answer!

This is the sort of behaviour I’ve been looking for. :smiley: and its probably quite easily turned into a handy macro…

But I must say, playing around a little, it feels a bit buggy though… sometimes it won’t extend beyond a certain distance and starts to flicker randomly?.. also it won’t turn into a simple “triangle” when being extended beyond the intersection of the two adjacent crvs…

Anyhow Thank you so much!

for the triangle thing you can use ReplaceEdge with the mode = ExtendSideEdges


In Rhino V6 and later, simply Ctrl+Shift+Pick the subcurve you want to offset and then use the normal Offset command. If you want to combine it with the original figure as you show above, CurveBoolean should do the trick.

Hey thank you for your suggestion!

Still I’m not sure if I understand… the Ctrl-Shift+Pick and then offset works fine… but If I do it toward the outside, I have this one open curve and I don’t see how to curve-boolean everything back together without having to do all the trimming and extending?

(btw. I don’t know If my pictures are very clear. The blue line in the second picture is supposed to represent the “before” state.)

… So by now I have two ways to do it… but they are more or less similar in efficiency:

1: ExtractCurve (with Join off) > Offset > Delete initial sub-curve > 2x Connect (with Join On)

2: PlanarSrf > ExtendSrf > DupBorder > Delete initial curve and Delete the surface

…For now I like Method 1 better because I can sort of go beyond the intersection point of the two adjacent curves and make two triangles… and it also works on open curves :wink: …

Do you guys maybe know on how I could get started to write a simple script for this… I really am a total beginner for this though I must say…


The Slide command does exactly that in V7 WIP for meshes and SubD, so maybe a macro that creates a mesh from closed curve, then extract the outline and delete the mesh could do the trick?