Dynamically Drawing Text Strings
Demonstrates how to dynamically draw text strings relative to a given screen to world transform.
partial class Examples
{
public static Result DrawString(RhinoDoc doc)
{
var gp = new GetDrawStringPoint();
gp.SetCommandPrompt("Point");
gp.Get();
return gp.CommandResult();
}
}
public class GetDrawStringPoint : GetPoint
{
protected override void OnDynamicDraw(GetPointDrawEventArgs e)
{
base.OnDynamicDraw(e);
var xform = e.Viewport.GetTransform(CoordinateSystem.World, CoordinateSystem.Screen);
var current_point = e.CurrentPoint;
current_point.Transform(xform);
var screen_point = new Point2d(current_point.X, current_point.Y);
var msg = string.Format("screen {0:F}, {1:F}", current_point.X, current_point.Y);
e.Display.Draw2dText(msg, System.Drawing.Color.Blue, screen_point, false);
}
}
Partial Friend Class Examples
Public Shared Function DrawString(ByVal doc As RhinoDoc) As Result
Dim gp = New GetDrawStringPoint()
gp.SetCommandPrompt("Point")
gp.Get()
Return gp.CommandResult()
End Function
End Class
Public Class GetDrawStringPoint
Inherits GetPoint
Protected Overrides Sub OnDynamicDraw(ByVal e As GetPointDrawEventArgs)
MyBase.OnDynamicDraw(e)
Dim xform = e.Viewport.GetTransform(CoordinateSystem.World, CoordinateSystem.Screen)
Dim current_point = e.CurrentPoint
current_point.Transform(xform)
Dim screen_point = New Point2d(current_point.X, current_point.Y)
Dim msg = String.Format("screen {0:F}, {1:F}", current_point.X, current_point.Y)
e.Display.Draw2dText(msg, System.Drawing.Color.Blue, screen_point, False)
End Sub
End Class
from Rhino import *
from Rhino.DocObjects import *
from Rhino.Geometry import *
from Rhino.Commands import *
from Rhino.Input.Custom import *
from System.Drawing import Color
def RunCommand():
gp = GetDrawStringPoint()
gp.SetCommandPrompt("Point")
gp.Get()
return gp.CommandResult()
class GetDrawStringPoint(GetPoint):
def OnDynamicDraw(self, e):
xform = e.Viewport.GetTransform(CoordinateSystem.World, CoordinateSystem.Screen)
current_point = e.CurrentPoint
current_point.Transform(xform)
screen_point = Point2d(current_point.X, current_point.Y)
msg = "screen {0}, {1}".format(screen_point.X, screen_point.Y)
e.Display.Draw2dText(msg, Color.Blue, screen_point, False)
if __name__ == "__main__":
RunCommand()