Ejemplo n.º 1
0
Archivo: JigDrag.cs Proyecto: iamHXQ/Oy
 /// <summary>简便快捷执行Jig拖动</summary>
 /// <param name="options">选项</param>
 /// <param name="callFun">回调函数</param>
 public static PromptResult StartDrag(JigPromptOptions options, Action <Result> callFun)
 {
     if (options is JigPromptPointOptions)
     {
         _PointOptions = options as JigPromptPointOptions;
         _acquireMod   = GetPoint;
     }
     else if (options is JigPromptDistanceOptions)
     {
         _DistanceOptions = options as JigPromptDistanceOptions;
         _acquireMod      = GetDistance;
     }
     else if (options is JigPromptAngleOptions)
     {
         _AngleOptions = options as JigPromptAngleOptions;
         _acquireMod   = GetAngle;
     }
     else if (options is JigPromptStringOptions)
     {
         _StringOptions = options as JigPromptStringOptions;
         _acquireMod    = GetString;
     }
     _callBack = callFun;
     Autodesk.AutoCAD.ApplicationServices.Application.
     DocumentManager.MdiActiveDocument.Editor.Drag(new JigDrag());
     _callBack(new Result(_rst, null));
     return(_rst);
 }
Ejemplo n.º 2
0
        Stream(ArrayList data, JigPromptGeometryOptions jigPromptGeoOpts)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(JigPromptGeometryOptions)));

            data.Add(new Snoop.Data.Point3d("Base point", jigPromptGeoOpts.BasePoint));
            data.Add(new Snoop.Data.Bool("Use base point", jigPromptGeoOpts.UseBasePoint));

            JigPromptAngleOptions jigPromptAngleOpts = jigPromptGeoOpts as JigPromptAngleOptions;

            if (jigPromptAngleOpts != null)
            {
                Stream(data, jigPromptAngleOpts);
                return;
            }

            JigPromptDistanceOptions jigPromptDistanceOpts = jigPromptGeoOpts as JigPromptDistanceOptions;

            if (jigPromptDistanceOpts != null)
            {
                Stream(data, jigPromptDistanceOpts);
                return;
            }

            JigPromptPointOptions jigPromptPointOpts = jigPromptGeoOpts as JigPromptPointOptions;

            if (jigPromptPointOpts != null)
            {
                Stream(data, jigPromptPointOpts);
                return;
            }
        }
Ejemplo n.º 3
0
        public void PrapareForNextInput(JigPromptDistanceOptions opt, string message)
        {
            inputFunc = (prompts) =>
            {
                opt.Message = message;

                var res = prompts.AcquireDistance(opt);
                if (res.Value != Distance)
                {
                    Distance = res.Value;
                }
                else
                {
                    return(SamplerStatus.NoChange);
                }

                if (res.Status == PromptStatus.OK)
                {
                    return(SamplerStatus.OK);
                }
                else
                {
                    return(SamplerStatus.Cancel);
                }
            };
        }
Ejemplo n.º 4
0
        protected override SamplerStatus Sampler(JigPrompts prompts)
        {
            switch (mCurJigFactorNumber)
            {
            case 1:
                JigPromptDistanceOptions opts = new JigPromptDistanceOptions("\nAdjust Elevation");
                opts.BasePoint    = Entity.Location;
                opts.UseBasePoint = true;
                PromptDoubleResult pdr = prompts.AcquireDistance(opts);
                if (pdr.Status == PromptStatus.Cancel)
                {
                    return(SamplerStatus.Cancel);
                }
                if (pdr.Value.Equals(mElevAdj))
                {
                    return(SamplerStatus.NoChange);
                }
                else
                {
                    mElevAdj = pdr.Value;
                    return(SamplerStatus.OK);
                }

            default:
                break;
            }
            return(SamplerStatus.OK);
        }
Ejemplo n.º 5
0
            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                switch (step)
                {
                case 1:
                    JigPromptPointOptions prOptions1 = new JigPromptPointOptions("\n圆心:");
                    PromptPointResult     prResult1  = prompts.AcquirePoint(prOptions1);
                    if (prResult1.Status == PromptStatus.Cancel)
                    {
                        return(SamplerStatus.Cancel);
                    }

                    if (prResult1.Value.Equals(_center))
                    {
                        return(SamplerStatus.NoChange);
                    }
                    else
                    {
                        _center = prResult1.Value;
                        return(SamplerStatus.OK);
                    }

                case 2:
                    JigPromptDistanceOptions prOptions2 = new JigPromptDistanceOptions("\n半径:");
                    prOptions2.BasePoint = _center;
                    PromptDoubleResult prResult2 = prompts.AcquireDistance(prOptions2);
                    if (prResult2.Status == PromptStatus.Cancel)
                    {
                        return(SamplerStatus.Cancel);
                    }

                    if (prResult2.Value.Equals(_radius))
                    {
                        return(SamplerStatus.NoChange);
                    }
                    else
                    {
                        if (prResult2.Value < 0.0001)
                        {
                            return(SamplerStatus.NoChange);
                        }
                        else
                        {
                            _radius = prResult2.Value;
                            return(SamplerStatus.OK);
                        }
                    }

                default:
                    break;
                }

                return(SamplerStatus.OK);
            }
Ejemplo n.º 6
0
        protected override SamplerStatus Sampler(JigPrompts prompts)
        {
            switch (CurrentInput)
            {
            // get the center point of the circle.
            case 0:
                Point3d           oldPnt          = centerPoint;
                PromptPointResult jigPromptResult = prompts.AcquirePoint("Pick the center point: ");

                if (jigPromptResult.Status == PromptStatus.OK)
                {
                    centerPoint = jigPromptResult.Value;

                    if (oldPnt.DistanceTo(centerPoint) < 0.0001)
                    {
                        return(SamplerStatus.NoChange);
                    }
                }

                break;

            // get the radius of the circle.
            case 1:
                double oldRadius = radius;
                JigPromptDistanceOptions jigPromptDistance = new JigPromptDistanceOptions("Pick the radius: ");

                jigPromptDistance.UseBasePoint = true;
                jigPromptDistance.BasePoint    = centerPoint;

                PromptDoubleResult jigPromptRadiusResult = prompts.AcquireDistance(jigPromptDistance);
                if (jigPromptRadiusResult.Status == PromptStatus.OK)
                {
                    radius = jigPromptRadiusResult.Value;

                    if (Math.Abs(radius) < 0.01)
                    {
                        radius = 1;
                    }

                    if (Math.Abs(oldRadius - radius) < 0.0001)
                    {
                        return(SamplerStatus.NoChange);
                    }
                }

                break;
            }

            return(SamplerStatus.OK);
        }
Ejemplo n.º 7
0
 protected override SamplerStatus Sampler(JigPrompts prompts)
 {
     if (!_pointAcquired) //insert point
     {
         JigPromptPointOptions jigOpts = new JigPromptPointOptions();
         jigOpts.Message           = "\nSelect insert point: ";
         jigOpts.UserInputControls = (UserInputControls.Accept3dCoordinates | UserInputControls.NullResponseAccepted | UserInputControls.NoNegativeResponseAccepted);
         jigOpts.BasePoint         = Point3d.Origin;
         jigOpts.UseBasePoint      = true;
         PromptPointResult jigPoint = prompts.AcquirePoint(jigOpts);
         if (jigPoint.Status != PromptStatus.OK)
         {
             return(SamplerStatus.Cancel);
         }
         if (_insertPoint.DistanceTo(jigPoint.Value) < 0.1)
         {
             return(SamplerStatus.NoChange);
         }
         _insertPoint = jigPoint.Value;
     }
     else //scale
     {
         JigPromptDistanceOptions jigOpts = new JigPromptDistanceOptions();
         jigOpts.UserInputControls = UserInputControls.GovernedByOrthoMode;
         jigOpts.BasePoint         = _insertPoint;
         jigOpts.UseBasePoint      = true;
         jigOpts.Message           = "\nSpecify size: ";
         PromptDoubleResult jigScale = prompts.AcquireDistance(jigOpts);
         if (jigScale.Status != PromptStatus.OK)
         {
             return(SamplerStatus.Cancel);
         }
         double delta = _previousScale - jigScale.Value;
         if (delta < 0.0)
         {
             delta *= -1;
         }
         if (delta < 0.01)
         {
             return(SamplerStatus.NoChange);
         }
         _scale = jigScale.Value;
     }
     return(SamplerStatus.OK);
 }
Ejemplo n.º 8
0
        public void Cmd1()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;

            Editor ed = doc.Editor;

            var bsPointRes = ed.GetPoint(new PromptPointOptions("\n请输入圆心"));

            if (bsPointRes.Status == PromptStatus.OK)
            {
                var jigdistanceOpts = new JigPromptDistanceOptions();

                jigdistanceOpts.BasePoint = bsPointRes.Value;

                jigdistanceOpts.UseBasePoint = true;

                var circle1 = new Circle()
                {
                    Center = jigdistanceOpts.BasePoint
                };
                var circle2 = new Circle()
                {
                    Center = jigdistanceOpts.BasePoint
                };
                var hatch = new Hatch();

                hatch.SetHatchPattern(HatchPatternType.PreDefined, "BOX");
                hatch.PatternScale = 0.01;

                var donut = new JigHelper();

                donut.PrapareForNextInput(jigdistanceOpts, "\n请输入第一圈");
                donut.SetEntities(new Entity[] { circle1 });
                donut.SetUpdate(jig => { circle1.Radius = Math.Max(0.1, jig.Distance); });
                if (donut.Drag() != PromptStatus.OK)
                {
                    return;
                }


                donut.PrapareForNextInput(jigdistanceOpts, "\n请输入第二圈");
                donut.SetEntities(new Entity[] { circle1, circle2, hatch });
                donut.SetUpdate(jig => { circle2.Radius = Math.Max(0.1, jig.Distance); });

                if (donut.Drag() != PromptStatus.OK)
                {
                    return;
                }

                hatch.AppendLoop(HatchLoopTypes.Default, new Curve2dCollection()
                {
                    new CircularArc2d(new Point2d(circle1.Center.X, circle1.Center.Y), circle1.Radius)
                },
                                 new IntegerCollection()
                {
                    0
                });

                hatch.AppendLoop(HatchLoopTypes.Default, new Curve2dCollection()
                {
                    new CircularArc2d(new Point2d(circle2.Center.X, circle2.Center.Y), circle2.Radius)
                },
                                 new IntegerCollection()
                {
                    0
                });

                if (donut.Drag() != PromptStatus.OK)
                {
                    return;
                }

                circle1.ToSpace();
                circle2.ToSpace();
                hatch.ToSpace();
            }
        }
Ejemplo n.º 9
0
            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var jigOpt = new JigPromptDistanceOptions();

                jigOpt.BasePoint    = Circ1.Center;
                jigOpt.UseBasePoint = true;

                if (Step == 1)
                {
                    jigOpt.Message = "\n请确定第一圈";
                    var res = prompts.AcquireDistance(jigOpt);
                    if (res.Value != Circ1.Radius)
                    {
                        if (res.Value == 0)
                        {
                            Circ1.Radius = 0.1;
                        }
                        else
                        {
                            Circ1.Radius = res.Value;
                        }
                    }
                    else
                    {
                        return(SamplerStatus.NoChange);
                    }

                    if (res.Status == PromptStatus.OK)
                    {
                        return(SamplerStatus.OK);
                    }
                    else
                    {
                        return(SamplerStatus.Cancel);
                    }
                }

                if (Step == 2)
                {
                    jigOpt.Message = "\n请确定第二圈";
                    var res = prompts.AcquireDistance(jigOpt);
                    if (res.Value != Circ2.Radius)
                    {
                        if (res.Value == 0)
                        {
                            Circ2.Radius = 0.1;
                        }
                        else
                        {
                            Circ2.Radius = res.Value;
                        }
                    }
                    else
                    {
                        return(SamplerStatus.NoChange);
                    }

                    if (res.Status == PromptStatus.OK)
                    {
                        return(SamplerStatus.OK);
                    }
                    else
                    {
                        return(SamplerStatus.Cancel);
                    }
                }

                return(SamplerStatus.Cancel);
            }
Ejemplo n.º 10
0
        public void jigcmd2()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;

            var basePt = doc.Editor.GetPoint("\n请输入圆心");

            if (basePt.Status == PromptStatus.OK)
            {
                var jigOpt = new JigPromptDistanceOptions();
                jigOpt.BasePoint    = basePt.Value;
                jigOpt.UseBasePoint = true;

                var circle1 = new Circle()
                {
                    Center = basePt.Value
                };
                var circle2 = new Circle()
                {
                    Center = basePt.Value
                };
                var hatch = new Hatch();
                hatch.SetHatchPattern(HatchPatternType.PreDefined, "BOX");

                var donut = new JigHelper();

                // Step 1
                donut.PrapareForNextInput(jigOpt, "\n请确定第一圈");
                donut.SetEntities(new Entity[] { circle1 });
                donut.SetUpdate(jig => circle1.Radius = Math.Max(0.1, jig.Distance));
                if (donut.Drag() != PromptStatus.OK)
                {
                    return;
                }

                // Step 2
                donut.PrapareForNextInput(jigOpt, "\n请确定第二圈");
                donut.SetEntities(new Entity[] { circle1, circle2, hatch });
                donut.SetUpdate(jig =>
                {
                    circle2.Radius = Math.Max(0.1, jig.Distance);
                    while (hatch.NumberOfLoops > 0)
                    {
                        hatch.RemoveLoopAt(0);
                    }
                    hatch.AppendLoop(HatchLoopTypes.Default, new Curve2dCollection()
                    {
                        new CircularArc2d(new Point2d(circle1.Center.X, circle1.Center.Y),
                                          circle1.Radius),
                    }, new IntegerCollection()
                    {
                        0
                    });
                    hatch.AppendLoop(HatchLoopTypes.Default, new Curve2dCollection()
                    {
                        new CircularArc2d(new Point2d(circle2.Center.X, circle2.Center.Y),
                                          circle2.Radius),
                    }, new IntegerCollection()
                    {
                        0
                    });
                });
                if (donut.Drag() != PromptStatus.OK)
                {
                    return;
                }

                // Final
                circle1.ToSpace();
                circle2.ToSpace();
                hatch.ToSpace();
            }
        }
Ejemplo n.º 11
0
        // EntityJig protocol
        protected override SamplerStatus Sampler(JigPrompts prompts)
        {
            // Get the current phase
            var p = _phases[_phase];

            // If we're dealing with a geometry-typed phase (distance,
            // point or angle input) we can use some common code

            var gp = p as GeometryPhase;

            if (gp != null)
            {
                JigPromptGeometryOptions opts;
                if (gp is DistancePhase)
                {
                    opts = new JigPromptDistanceOptions();
                }
                else if (gp is AnglePhase)
                {
                    opts = new JigPromptAngleOptions();
                }
                else if (gp is PointPhase)
                {
                    opts = new JigPromptPointOptions();
                }
                else // Should never happen
                {
                    opts = null;
                }

                // Set up the user controls

                opts.UserInputControls =
                    (UserInputControls.Accept3dCoordinates |
                     UserInputControls.NoZeroResponseAccepted |
                     UserInputControls.NoNegativeResponseAccepted);

                // All our distance inputs will be with a base point
                // (which means the initial base point or an offset from
                // that)

                opts.UseBasePoint = true;
                opts.Cursor       = CursorType.RubberBand;
                opts.Message      = p.Message;
                opts.BasePoint    = (gp.Offset == null ? _pt.TransformBy(_ucs) : (_pt + gp.Offset.Invoke(_phases, _pt)).TransformBy(_ucs));

                // The acquisition method varies on the phase type

                if (gp is DistancePhase)
                {
                    var phase = (DistancePhase)gp;
                    var pdr   = prompts.AcquireDistance((JigPromptDistanceOptions)opts);
                    if (pdr.Status == PromptStatus.OK)
                    {
                        // If the difference between the new value and its
                        // previous value is negligible, return "no change"
                        if (System.Math.Abs((double)phase.Value - pdr.Value) < Tolerance.Global.EqualPoint)
                        {
                            return(SamplerStatus.NoChange);
                        }

                        // Otherwise we update the appropriate variable
                        // based on the phase

                        phase.Value     = pdr.Value;
                        _phases[_phase] = phase;
                        return(SamplerStatus.OK);
                    }
                }
                else if (gp is PointPhase)
                {
                    var phase = (PointPhase)gp;
                    var ppr   = prompts.AcquirePoint((JigPromptPointOptions)opts);

                    if (ppr.Status == PromptStatus.OK)
                    {
                        // If the difference between the new value and its
                        // previous value is negligible, return "no change"
                        var tmp = ppr.Value.TransformBy(_ucs.Inverse());

                        if (tmp.DistanceTo((Point3d)phase.Value) < Tolerance.Global.EqualPoint)
                        {
                            return(SamplerStatus.NoChange);
                        }

                        // Otherwise we update the appropriate variable
                        // based on the phase

                        phase.Value     = tmp;
                        _phases[_phase] = phase;
                        return(SamplerStatus.OK);
                    }
                }
                else if (gp is AnglePhase)
                {
                    var phase = (AnglePhase)gp;
                    var par   = prompts.AcquireAngle((JigPromptAngleOptions)opts);

                    if (par.Status == PromptStatus.OK)
                    {
                        // If the difference between the new value and its
                        // previous value is negligible, return "no change"
                        if ((double)phase.Value - par.Value < Tolerance.Global.EqualPoint)
                        {
                            return(SamplerStatus.NoChange);
                        }

                        // Otherwise we update the appropriate variable
                        // based on the phase

                        phase.Value     = par.Value;
                        _phases[_phase] = phase;
                        return(SamplerStatus.OK);
                    }
                }
            }
            else
            {
                // p is StringPhase
                var phase = (StringPhase)p;

                var psr = prompts.AcquireString(p.Message);

                if (psr.Status == PromptStatus.OK)
                {
                    phase.Value     = psr.StringResult;
                    _phases[_phase] = phase;
                    return(SamplerStatus.OK);
                }
            }
            return(SamplerStatus.Cancel);
        }
Ejemplo n.º 12
0
        // Override the Sampler function.
        protected override SamplerStatus Sampler(JigPrompts prompts)
        {
            // Create a switch statement.
            switch (currentInputValue)
            {
            // se 0 (zero) for the case. (getting center for the circle)
            case 0:

                Point3d oldPnt = centerPoint;

                PromptPointResult jigPromptResult = prompts.AcquirePoint("Pick center point : ");

                // Check the status of the PromptPointResult
                if (jigPromptResult.Status == PromptStatus.OK)
                {
                    // Make the centerPoint member variable equal to the Value
                    // property of the PromptPointResult
                    centerPoint = jigPromptResult.Value;

                    // Check to see if the cursor has moved.
                    if ((oldPnt.DistanceTo(centerPoint) < 0.001))
                    {
                        // If we get here then there has not been any change to the location
                        // return SamplerStatus.NoChange
                        return(SamplerStatus.NoChange);
                    }
                }


                // If the code gets here than there has been a change in the location so
                // return SamplerStatus.OK
                return(SamplerStatus.OK);

            // Use 1 for the case. (getting radius for the circle)
            case 1:

                double oldRadius = radius;
                JigPromptDistanceOptions jigPromptDistanceOpts = new JigPromptDistanceOptions("Pick radius : ");

                jigPromptDistanceOpts.UseBasePoint = true;

                jigPromptDistanceOpts.BasePoint = centerPoint;

                // Now we ready to get input.
                PromptDoubleResult jigPromptDblResult = prompts.AcquireDistance(jigPromptDistanceOpts);


                //  Check the status of the PromptDoubleResult
                if ((jigPromptDblResult.Status == PromptStatus.OK))
                {
                    radius = jigPromptDblResult.Value;

                    // Check to see if the radius is too small
                    if (Math.Abs(radius) < 0.1)
                    {
                        // Make the Member variable radius = to 1. This is
                        // just an arbitrary value to keep the circle from being too small
                        radius = 1;
                    }

                    // Check to see if the cursor has moved.
                    if ((Math.Abs(oldRadius - radius) < 0.001))
                    {
                        // If we get here then there has not been any change to the location
                        // Return SamplerStatus.NoChange
                        return(SamplerStatus.NoChange);
                    }
                }

                // If we get here the cursor has moved. return SamplerStatus.OK
                return(SamplerStatus.OK);
            }
            // Return SamplerSataus.NoChange. This will not ever be hit as we are returning
            // in the switch statement. (just avoiding the compile error)
            return(SamplerStatus.NoChange);
        }
Ejemplo n.º 13
0
        Stream(ArrayList data, JigPromptDistanceOptions jigPromptDistanceOpts)
        {
            data.Add(new Snoop.Data.ClassSeparator(typeof(JigPromptDistanceOptions)));

            data.Add(new Snoop.Data.Double("Default value", jigPromptDistanceOpts.DefaultValue));
        }
Ejemplo n.º 14
0
 // Sampler函数用于检测用户的输入.
 protected override SamplerStatus Sampler(JigPrompts prompts)
 {
     if (mPromptCounter == 0)
     {
         // 定义一个点拖动交互类.
         JigPromptPointOptions optJigPoint = new JigPromptPointOptions("\n请指定椭圆弧轴上一点");
         // 设置拖拽的光标类型.
         optJigPoint.Cursor = CursorType.RubberBand;
         // 设置拖动光标基点.
         optJigPoint.BasePoint    = mCenterPt;
         optJigPoint.UseBasePoint = true;
         // 用AcquirePoint函数得到用户输入的点.
         PromptPointResult resJigPoint = prompts.AcquirePoint(optJigPoint);
         Point3d           curPt       = resJigPoint.Value;
         if (curPt != mMajorPt)
         {
             //
             mMajorPt = curPt;
         }
         else
         {
             return(SamplerStatus.NoChange);
         }
         if (resJigPoint.Status == PromptStatus.Cancel)
         {
             return(SamplerStatus.Cancel);
         }
         else
         {
             return(SamplerStatus.OK);
         }
     }
     else if (mPromptCounter == 1)
     {
         // 定义一个距离拖动交互类.
         JigPromptDistanceOptions optJigDis = new JigPromptDistanceOptions("\n请指定另一条半轴的长度");
         // 设置对拖拽的约束:禁止输入零和负值.
         optJigDis.UserInputControls = UserInputControls.NoZeroResponseAccepted | UserInputControls.NoNegativeResponseAccepted;
         // 设置拖拽的光标类型.
         optJigDis.Cursor = CursorType.RubberBand;
         // 设置拖动光标基点.
         optJigDis.BasePoint    = mCenterPt;
         optJigDis.UseBasePoint = true;
         // 用AcquireDistance函数得到用户输入的距离值.
         PromptDoubleResult resJigDis        = prompts.AcquireDistance(optJigDis);
         double             mRadiusRatioTemp = resJigDis.Value;
         if (mRadiusRatioTemp != mRadiusRatio)
         {
             // 保存当前距离值.
             mRadiusRatio = mRadiusRatioTemp;
         }
         else
         {
             return(SamplerStatus.NoChange);
         }
         if (resJigDis.Status == PromptStatus.Cancel)
         {
             return(SamplerStatus.Cancel);
         }
         else
         {
             return(SamplerStatus.OK);
         }
     }
     else if (mPromptCounter == 2)
     {
         // 设置椭圆弧0度基准角.
         double   baseAng;
         Vector2d mMajorAxis2d = new Vector2d(mMajorAxis.X, mMajorAxis.Y);
         if (radiusRatio < 1)
         {
             baseAng = mMajorAxis2d.Angle;
         }
         else
         {
             baseAng = mMajorAxis2d.Angle + 0.5 * Math.PI;
         }
         // 设置系统变量“ANGBASE”.
         Application.SetSystemVariable("ANGBASE", baseAng);
         // 定义一个角度拖动交互类.
         JigPromptAngleOptions optJigAngle1 = new JigPromptAngleOptions("\n请指定椭圆弧的起始角度");
         // 设置拖拽的光标类型.
         optJigAngle1.Cursor = CursorType.RubberBand;
         // 设置拖动光标基点.
         optJigAngle1.BasePoint    = mCenterPt;
         optJigAngle1.UseBasePoint = true;
         // 用AcquireAngle函数得到用户输入的角度值.
         PromptDoubleResult resJigAngle1 = prompts.AcquireAngle(optJigAngle1);
         ang1 = resJigAngle1.Value;
         if (startAng != ang1)
         {
             // 保存当前角度值.
             startAng = ang1;
         }
         else
         {
             return(SamplerStatus.NoChange);
         }
         if (resJigAngle1.Status == PromptStatus.Cancel)
         {
             return(SamplerStatus.Cancel);
         }
         else
         {
             return(SamplerStatus.OK);
         }
     }
     else if (mPromptCounter == 3)
     {
         // 定义一个角度拖动交互类.
         JigPromptAngleOptions optJigAngle2 = new JigPromptAngleOptions("\n请指定椭圆弧的终止角度");
         // 设置拖拽的光标类型.
         optJigAngle2.Cursor = CursorType.RubberBand;
         // 设置拖动光标基点.
         optJigAngle2.BasePoint    = mCenterPt;
         optJigAngle2.UseBasePoint = true;
         // 用AcquireAngle函数得到用户输入的角度值.
         PromptDoubleResult resJigAngle2 = prompts.AcquireAngle(optJigAngle2);
         ang2 = resJigAngle2.Value;
         if (endAng != ang2)
         {
             // 保存当前角度值.
             endAng = ang2;
         }
         else
         {
             return(SamplerStatus.NoChange);
         }
         if (resJigAngle2.Status == PromptStatus.Cancel)
         {
             return(SamplerStatus.Cancel);
         }
         else
         {
             return(SamplerStatus.OK);
         }
     }
     else
     {
         return(SamplerStatus.NoChange);
     }
 }