E_Rhino_RhinoDoc_BeforeTransformObjects - mcneel/rhinocommon-api-docs GitHub Wiki
Called before objects are being transformed
Namespace: Rhino
Assembly: RhinoCommon (in RhinoCommon.dll) Version: Rhino 6.0
C#
public static event EventHandler<RhinoTransformObjectsEventArgs> BeforeTransformObjects
VB
Public Shared Event BeforeTransformObjects As EventHandler(Of RhinoTransformObjectsEventArgs)
Type: System.EventHandler(RhinoTransformObjectsEventArgs)
VB
Imports Rhino
Imports Rhino.DocObjects
Imports Rhino.Geometry
Imports Rhino.Commands
Imports Rhino.Input.Custom
Imports Rhino.Display
Namespace examples_vb
Public Class GetTranslation
Inherits GetTransform
Public Overrides Function CalculateTransform(viewport As RhinoViewport, point As Point3d) As Transform
Dim xform = Transform.Identity
Dim base_point As Point3d
If TryGetBasePoint(base_point) Then
Dim v = point - base_point
If Not v.IsZero Then
xform = Transform.Translation(v)
If Not xform.IsValid Then
xform = Transform.Identity
End If
End If
End If
Return xform
End Function
End Class
Public Class RhinoGetTransformCommand
Inherits TransformCommand
Public Sub New()
' simple example of handling the BeforeTransformObjects event
AddHandler RhinoDoc.BeforeTransformObjects, AddressOf RhinoDocOnBeforeTransformObjects
End Sub
Private Sub RhinoDocOnBeforeTransformObjects(sender As Object, ea As RhinoTransformObjectsEventArgs)
RhinoApp.WriteLine("Transform Objects Count: {0}", ea.ObjectCount)
End Sub
Public Overrides ReadOnly Property EnglishName() As String
Get
Return "vbGetTranslation"
End Get
End Property
Protected Overrides Function RunCommand(doc As RhinoDoc, mode As RunMode) As Result
Dim list = New Rhino.Collections.TransformObjectList()
Dim rc = SelectObjects("Select objects to move", list)
If rc <> Rhino.Commands.Result.Success Then
Return rc
End If
Dim gp = New GetPoint()
gp.SetCommandPrompt("Point to move from")
gp.[Get]()
If gp.CommandResult() <> Result.Success Then
Return gp.CommandResult()
End If
Dim gt = New GetTranslation()
gt.SetCommandPrompt("Point to move to")
gt.SetBasePoint(gp.Point(), True)
gt.DrawLineFromPoint(gp.Point(), True)
gt.AddTransformObjects(list)
gt.GetXform()
If gt.CommandResult() <> Result.Success Then
Return gt.CommandResult()
End If
Dim xform = gt.CalculateTransform(gt.View().ActiveViewport, gt.Point())
TransformObjects(list, xform, False, False)
doc.Views.Redraw()
Return Result.Success
End Function
End Class
End Namespace
C#
using Rhino;
using Rhino.DocObjects;
using Rhino.Geometry;
using Rhino.Commands;
using Rhino.Input.Custom;
using Rhino.Display;
namespace examples_cs
{
public class GetTranslation : GetTransform
{
public override Transform CalculateTransform(RhinoViewport viewport, Point3d point)
{
var xform = Transform.Identity;
Point3d base_point;
if (TryGetBasePoint(out base_point))
{
var v = point - base_point;
if (!v.IsZero)
{
xform = Transform.Translation(v);
if (!xform.IsValid)
xform = Transform.Identity;
}
}
return xform;
}
}
public class RhinoGetTransformCommand : TransformCommand
{
public RhinoGetTransformCommand()
{
// simple example of handling the BeforeTransformObjects event
RhinoDoc.BeforeTransformObjects += RhinoDocOnBeforeTransformObjects;
}
private void RhinoDocOnBeforeTransformObjects(object sender, RhinoTransformObjectsEventArgs ea)
{
RhinoApp.WriteLine("Transform Objects Count: {0}", ea.ObjectCount);
}
public override string EnglishName { get { return "csGetTranslation"; } }
protected override Result RunCommand(RhinoDoc doc, RunMode mode)
{
var list = new Rhino.Collections.TransformObjectList();
var rc = SelectObjects("Select objects to move", list);
if (rc != Rhino.Commands.Result.Success)
return rc;
var gp = new GetPoint();
gp.SetCommandPrompt("Point to move from");
gp.Get();
if (gp.CommandResult() != Result.Success)
return gp.CommandResult();
var gt = new GetTranslation();
gt.SetCommandPrompt("Point to move to");
gt.SetBasePoint(gp.Point(), true);
gt.DrawLineFromPoint(gp.Point(), true);
gt.AddTransformObjects(list);
gt.GetXform();
if (gt.CommandResult() != Result.Success)
return gt.CommandResult();
var xform = gt.CalculateTransform(gt.View().ActiveViewport, gt.Point());
TransformObjects(list, xform, false, false);
doc.Views.Redraw();
return Result.Success;
}
}
}
Supported in: 5D58w