///<summary> This gets called when when the user runs this command.</summary>
        public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
        {
            MRhinoGetObject go = new MRhinoGetObject();

            go.SetCommandPrompt("Select objects to move");
            go.GetObjects(1, 0);
            if (go.CommandResult() != IRhinoCommand.result.success)
            {
                return(go.CommandResult());
            }

            MRhinoXformObjectList list = new MRhinoXformObjectList();

            if (list.AddObjects(go, true) < 1)
            {
                return(IRhinoCommand.result.failure);
            }

            MRhinoGetPoint gp = new MRhinoGetPoint();

            gp.SetCommandPrompt("Point to move from");
            gp.GetPoint();
            if (gp.CommandResult() != IRhinoCommand.result.success)
            {
                return(gp.CommandResult());
            }

            RhinoGetTranslation gt = new RhinoGetTranslation();

            gt.SetCommandPrompt("Point to move to");
            gt.AppendObjects(list);
            gt.SetBasePoint(gp.Point());
            gt.DrawLineFromPoint(gp.Point(), true);
            gt.GetXform();
            if (gt.CommandResult() != IRhinoCommand.result.success)
            {
                return(gt.CommandResult());
            }

            OnXform xform = new OnXform();

            if (gt.CalculateTransform(gt.View().ActiveViewport(), gt.Point(), ref xform))
            {
                // TODO: do object transformation here.
            }

            return(IRhinoCommand.result.success);
        }
        ///<summary> This gets called when when the user runs this command.</summary>
        public override IRhinoCommand.result RunCommand(IRhinoCommandContext context)
        {
            MRhinoGetObject go = new MRhinoGetObject();
              go.SetCommandPrompt("Select objects to move");
              go.GetObjects(1, 0);
              if (go.CommandResult() != IRhinoCommand.result.success)
            return go.CommandResult();

              MRhinoXformObjectList list = new MRhinoXformObjectList();
              if (list.AddObjects(go, true) < 1)
            return IRhinoCommand.result.failure;

              MRhinoGetPoint gp = new MRhinoGetPoint();
              gp.SetCommandPrompt("Point to move from");
              gp.GetPoint();
              if (gp.CommandResult() != IRhinoCommand.result.success)
            return gp.CommandResult();

              RhinoGetTranslation gt = new RhinoGetTranslation();
              gt.SetCommandPrompt("Point to move to");
              gt.AppendObjects(list);
              gt.SetBasePoint(gp.Point());
              gt.DrawLineFromPoint(gp.Point(), true);
              gt.GetXform();
              if (gt.CommandResult() != IRhinoCommand.result.success)
            return gt.CommandResult();

              OnXform xform = new OnXform();
              if (gt.CalculateTransform(gt.View().ActiveViewport(), gt.Point(), ref xform))
              {
            // TODO: do object transformation here.
              }

              return IRhinoCommand.result.success;
        }
        /////////////////////////////////////////////////////////////////////////
        // STEP 1: Use MRhinoGet member functions to specify command prompt

        /////////////////////////////////////////////////////////////////////////
        // STEP 2: Use MRhinoGet member functions to specify what types of
        //         alternate input can be accepted.

        /////////////////////////////////////////////////////////////////////////
        // STEP 3: Add any objects you want transformed and grips you want
        //         transformed.  Make sure no duplicates are in the list
        //         and that no grip owners are passed in as objects.
        public void AppendObjects(IRhinoGetObject go)
        {
            m_list.AddObjects(go, true);
        }