Get curves and edges in same operation

Just checking: would the following be the optimum way to do this in Python/RhinoCommon?
Thx, Mitch

import Rhino
def GetCurvesAndEdges():
    filter=Rhino.DocObjects.ObjectType.EdgeFilter | Rhino.DocObjects.ObjectType.Curve
    rc, objrefs = Rhino.Input.RhinoGet.GetMultipleObjects("Select curves or surface edges", False, filter)
    if rc != Rhino.Commands.Result.Success: return rc    
    return [objref.Curve().ToNurbsCurve() for objref in objrefs]
1 Like

Looks pretty good to me. I seem to recall that ObjectType.Curve already selects surface edges so you may want to remove the ObjectType.EdgeFilter.

Secondly, you don’t necessarily need to convert with .ToNurbsCurve() unless you need the Nurb form later on.

Also, you may want to check for None on the objRefs list and any element in it. Does not hurt to be thorough :wink:

Lastly, you may also want to add a check if each curve returned has its IsValid property equal to True. Again, doesn’t hurt to be thorough :smile:

Yep, you are correct, thanks!

Originally I had done this for compatibility for another operation, but in fact it works without as well.

Good advice, thanks!

–Mitch