Click or drag to resize

GetPointOnDynamicDraw Method

Default calls the DynamicDraw event.

Namespace:  Rhino.Input.Custom
Assembly:  RhinoCommon (in RhinoCommon.dll)
Syntax
protected virtual void OnDynamicDraw(
	GetPointDrawEventArgs e
)

Parameters

e
Type: Rhino.Input.CustomGetPointDrawEventArgs
Current argument for the event.
Examples
using Rhino;
using Rhino.Geometry;
using Rhino.Commands;
using Rhino.Input.Custom;

namespace examples_cs
{
  public class GetPointDynamicDrawCommand : Command
  {
    public override string EnglishName { get { return "csGetPointDynamicDraw"; } }

    protected override Result RunCommand(RhinoDoc doc, RunMode mode)
    {
      var gp = new GetPoint();
      gp.SetCommandPrompt("Center point");
      gp.Get();
      if (gp.CommandResult() != Result.Success)
        return gp.CommandResult();
      var center_point = gp.Point();
      if (center_point == Point3d.Unset)
        return Result.Failure;

      var gcp = new GetCircleRadiusPoint(center_point);
      gcp.SetCommandPrompt("Radius");
      gcp.ConstrainToConstructionPlane(false);
      gcp.SetBasePoint(center_point, true);
      gcp.DrawLineFromPoint(center_point, true);
      gcp.Get();
      if (gcp.CommandResult() != Result.Success)
        return gcp.CommandResult();

      var radius = center_point.DistanceTo(gcp.Point());
      var cplane = doc.Views.ActiveView.ActiveViewport.ConstructionPlane();
      doc.Objects.AddCircle(new Circle(cplane, center_point, radius));
      doc.Views.Redraw();
      return Result.Success;
    }
  }

  public class GetCircleRadiusPoint : GetPoint
  {
    private Point3d m_center_point;

    public GetCircleRadiusPoint(Point3d centerPoint)
    {
      m_center_point = centerPoint;
    }

    protected override void OnDynamicDraw(GetPointDrawEventArgs e)
    {
      base.OnDynamicDraw(e);
      var cplane = e.RhinoDoc.Views.ActiveView.ActiveViewport.ConstructionPlane();
      var radius = m_center_point.DistanceTo(e.CurrentPoint);
      var circle = new Circle(cplane, m_center_point, radius);
      e.Display.DrawCircle(circle, System.Drawing.Color.Black);
    }
  }
}
Python
from Rhino import *
from Rhino.Geometry import *
from Rhino.Commands import *
from Rhino.Input.Custom import *
from scriptcontext import doc
from System.Drawing import *

def RunCommand():
  gp = GetPoint()
  gp.SetCommandPrompt("Center point")
  gp.Get()
  if gp.CommandResult() <> Result.Success:
    return gp.CommandResult()
  center_point = gp.Point()
  if center_point == Point3d.Unset:
    return Result.Failure

  gcp = GetCircleRadiusPoint(center_point)
  gcp.SetCommandPrompt("Radius")
  gcp.ConstrainToConstructionPlane(False)
  gcp.SetBasePoint(center_point, True)
  gcp.DrawLineFromPoint(center_point, True)
  gcp.Get()
  if gcp.CommandResult() <> Result.Success:
    return gcp.CommandResult()

  radius = center_point.DistanceTo(gcp.Point())
  cplane = doc.Views.ActiveView.ActiveViewport.ConstructionPlane()
  doc.Objects.AddCircle(Circle(cplane, center_point, radius))
  doc.Views.Redraw()
  return Result.Success

class GetCircleRadiusPoint (GetPoint):
  def __init__(self, centerPoint):
    self.m_center_point = centerPoint

  def OnDynamicDraw(self, e):
    cplane = e.RhinoDoc.Views.ActiveView.ActiveViewport.ConstructionPlane()
    radius = self.m_center_point.DistanceTo(e.CurrentPoint)
    circle = Circle(cplane, self.m_center_point, radius)
    e.Display.DrawCircle(circle, Color.Black)

if __name__ == "__main__":
    RunCommand()
See Also