Draw line from curve

Hi there,
I’m wondering if there’s a way to do something similar to the GetPoint.DrawLineFromPoint() function but instead of dynamically drawing from a point, it could dynamically draw from a curve with one end constrained to the curve (snapping to the closest point on the curve) and the other end following the mouse. Thanks in advance!

Hi @Sophie3,

below is a Python example which you might replicate using Rhino Common.

GetPointDrawLine.py (1.4 KB)


1 Like

Thank you @clement - that was very helpful!

Here is the C# version in case anyone is interested:

  public class MyGetPoint : Rhino.Input.Custom.GetPoint
      public Curve curve {   get; set; }
      public Line line { get; set; }

      public Point3d startPoint { get; set; }

      protected override void OnDynamicDraw(GetPointDrawEventArgs e)
          double t;
          bool success = curve.ClosestPoint(e.CurrentPoint, out t);
          if (!success) return;

          startPoint = curve.PointAt(t);
          line = new Line(startPoint, e.CurrentPoint);
          e.Display.DrawLine(line, System.Drawing.Color.Black, 2);

  protected override Result RunCommand(RhinoDoc doc, RunMode mode)
      var go = new GetObject();
      go.SetCommandPrompt("Select Curve");
      go.GeometryFilter = ObjectType.Curve;
      go.GetMultiple(1, 1);

      if (go.CommandResult() != Result.Success)
          return go.CommandResult();
      MyGetPoint myGetPoint = new MyGetPoint();
      myGetPoint.curve = go.Object(0).Curve();
      myGetPoint.SetCommandPrompt("pick a point");
      //myGetPoint.DrawLineFromPoint(myGetPoint.startPoint, false);

      if (myGetPoint.line.IsValid)

      return Result.Success;
1 Like