This is old but it works:
protected override bool Update()
{
switch (myPromptCounter)
{
case 0:
try
{
Entity.TransformBy(Matrix3d.Displacement(myActualPoint - myCenterPt));
// reset point for next mouse move
myCenterPt = myActualPoint;
}
catch
{
return false;
}
break;
case 1:
try
{
Entity.TransformBy(Matrix3d.Rotation(
myActualAngle - myAngleRad, myNormal, myCenterPt));
// reset the angle
myAngleRad = myActualAngle;
}
catch
{
return false;
}
break;
}
return true;
}
/// <summary>
/// The Callback method
/// </summary>
/// <param name="prompts"></param>
/// <returns></returns>
protected override SamplerStatus Sampler(JigPrompts prompts)
{
switch (myPromptCounter)
{
case 0: // prompt for insertion point
try
{
JigPromptPointOptions pointOpts = new JigPromptPointOptions();
pointOpts.UserInputControls = (UserInputControls.Accept3dCoordinates
| UserInputControls.NoZeroResponseAccepted
| UserInputControls.NoNegativeResponseAccepted);
pointOpts.Message = "\nEnter insert point: ";
PromptPointResult pointRes = prompts.AcquirePoint(pointOpts);
if (myActualPoint == pointRes.Value)
{
return SamplerStatus.NoChange;
}
// The point has moved
myActualPoint = pointRes.Value;
}
catch
{
return SamplerStatus.NoChange;
}
break;
case 1: // prompt for angle of rotation
try
{
JigPromptAngleOptions angleOptions = new JigPromptAngleOptions();
angleOptions.UserInputControls = (UserInputControls.AnyBlankTerminatesInput
| UserInputControls.NullResponseAccepted);
angleOptions.Message = "\nRotation Angle: ";
angleOptions.BasePoint = myCenterPt;
angleOptions.UseBasePoint = true;
angleOptions.Cursor = CursorType.RubberBand;
PromptDoubleResult result = prompts.AcquireAngle(angleOptions);
if (myActualAngle == result.Value)
{
return SamplerStatus.NoChange;
}
// The angle has changed
myActualAngle = result.Value;
}
catch
{
return SamplerStatus.NoChange;
}
break;
case 2: // Prompt for scale - TO DO possibly in the future
break;
}
return SamplerStatus.OK;
}
Not the entire class but you get the idea