Site Tools

Sample: Reversing the Direction of Curves


public class ReverseCurveCommand : Command
  public override string EnglishName { get { return "csReverseCurve"; } }
  protected override Result RunCommand(RhinoDoc doc, RunMode mode)
    ObjRef[] objRefs; 
    var rc = RhinoGet.GetMultipleObjects("Select curves to reverse", true, ObjectType.Curve, out objRefs);
    if (rc != Result.Success)
      return rc;
    foreach (var objRef in objRefs)
      var curveCopy = objRef.Curve().DuplicateCurve();
      if (curveCopy != null)
        doc.Objects.Replace(objRef, curveCopy);
    return Result.Success;


<System.Runtime.InteropServices.Guid("732BA8B1-6436-4556-8303-F3D9C7F41A8F")> _
Public Class ReverseCurveCommand
  Inherits Command
  Public Overrides ReadOnly Property EnglishName() As String
      Return "vbReverseCurve"
    End Get
  End Property
  Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
    Dim objRefs As ObjRef()
    Dim rc = RhinoGet.GetMultipleObjects("Select curves to reverse", True, ObjectType.Curve, objRefs)
    If rc <> Result.Success Then
      Return rc
    End If
    For Each objRef As ObjRef In objRefs
      Dim curveCopy = objRef.Curve().DuplicateCurve()
      If curveCopy IsNot Nothing Then
        doc.Objects.Replace(objRef, curveCopy)
      End If
    Return Result.Success
  End Function
End Class
d Namespace


import rhinoscriptsyntax as rs
from scriptcontext import *
import Rhino
def ReverseCurves():
    crvs = rs.GetObjects("Select curves to reverse", rs.filter.curve)
    if not crvs: return
    for crvid in crvs:
        crv = rs.coercecurve(crvid)
        if not crv: continue
        dup = crv.DuplicateCurve()
        if dup:
        doc.Objects.Replace(crvid, dup)
if __name__ == "__main__":
developer/rhinocommonsamples/curvereverse.txt ยท Last modified: 2020/08/14 (external edit)