RhinoCommon Curve.Offset() with multiple results (limitation)

Hi all,
This is a long standing problem which I had always hoped Rhino could solve - especilly RhinoCommon.
When you have a figure such as in the attached, the inner offset will result in two curves if the offset distance is large enough. With the Rhino native command, you don’t get both, you only get the one nearest your pick point.

However, the RhinoCommon method Curve.Offset() does not need a pick point, only a distance - whether this distance is positive or negative will determine the side. As this method is pick-point independent I had always hoped that it would return all valid results… Unfortunately, it doesn’t, as you can test with the 3dm file and the test script below. It returns one or other of the two inner curves, depending on the curve start point… Both V5 and WIP.

Is there any hope for this getting improved in the near future?

OffTest.3dm (30.3 KB)

import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino

def OffsetCrv1SideRC(crv,plane,dist,trans,side,tol):
    #offset is list that could contain one or multiple curves or be None
    return crv.Offset(plane,side*dist,tol,trans)
def TestOffsetInOrOut():
    crvID=rs.GetObject("Select curve to offset",4,preselect=True)
    for offset_crv in offset_crvs:


Just to make sure that I understand this correctly… you would want the Rhino command to return both results in the first place (as well as the RhinoCommon method that is point-pick independent). Or just the RhinoCommon method?

I’ve added a wish to the list.


Giulio Piacentino
for Robert McNeel & Associates

Sure, I don’t see why the normal Rhino command should not return all the offsets either… I’m sure if one gets fixed, the other will too, this looks like a core problem to me.

Cheers, --Mitch

1 Like