Site Tools


Sample: Showing Dynamic Object Transformations

C#

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 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;
  }
}

VB.NET

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 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
d Namespace
developer/rhinocommonsamples/rhinogettransform.txt ยท Last modified: 2014/06/26 (external edit)