Offset Curve on Surface

Hi all,
I wonder if we can achieve the same result like the Rhino command “OffsetCrvOnSrf”?
By default, the Grasshopper component “Offset on Srf” can only offset the Crv but without extending it. I try to find another GH component like “ExtendCrvOnSrf” but there is no such thing…
![14809d99b08781c4378571b7101010d|690x386]


OffsetCrvOnSrf.3dm (206.6 KB)
OffsetCrvOnSrf.gh (34.9 KB)
The common extend doesn’t work because it is not a flat surface, it is a free form surface.
I wonder if there is plugins or python script can achieve it? Many thanks

Using Python you could use:

import Rhino.Geometry as rg

a = crv.ExtendOnSurface(rg.CurveEnd.Both,srf)

OffsetCrvOnSrf_v2.gh (40.0 KB)

Amazing!! thanks Adam!!

Hi Adam, is it possible just use a “OffsetCrvOnSrf” to achieve these 2 steps? So I don’t need to use the GH offset component. Thanks

You could so something like this:

import Rhino.Geometry as rg
import Rhino

tol = Rhino.RhinoDoc.ActiveDoc.ModelAbsoluteTolerance

offstCrv = crv.OffsetOnSurface(srf,offset,tol)[0]

a = offstCrv.ExtendOnSurface(rg.CurveEnd.Both,srf)

I see, so this “crv.OffsetOnSurface” is the same as GH’s Offset on Srf, it can only offset, no extend. I thought it would be the same as Rhino’s OffsetCrvOnSrf would do both things.
Thanks Adam.