马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 csharp 于 2014-8-5 10:11 编辑
以 GetDistance + 关键字为例
- using Autodesk.AutoCAD.Runtime;
- using Autodesk.AutoCAD.ApplicationServices;
- using Autodesk.AutoCAD.EditorInput;
- [assembly: CommandClass(typeof(InputTest.MyCommands))]
- namespace InputTest
- {
- public class MyCommands
- {
- [CommandMethod("MyGroup")]
- public void MyCommand()
- {
- Document doc = Application.DocumentManager.MdiActiveDocument;
- Editor ed = doc.Editor;
- //增加关键字提示
- PromptDistanceOptions pdo = new PromptDistanceOptions("\n拾取距离或等分[Divid]", "Divid");
- //是否使用默认值
- if (DefaultPamram.Dist != 0)
- {
- pdo.DefaultValue = DefaultPamram.Dist;
- }
- //提示输入,拾取距离或输入距离
- PromptDoubleResult pdr = ed.GetDistance(pdo);
- //如果输入为关键字
- if (pdr.StringResult == "Divid")
- {
- //输入等分后提示输入 Int
- PromptIntegerOptions pio = new PromptIntegerOptions("\n输入等分数量");
- //确定是否有默认值
- if (DefaultPamram.Num != 0)
- {
- pio.DefaultValue = DefaultPamram.Num;
- }
- //提示输入等分数量 Int
- PromptIntegerResult pir = ed.GetInteger(pio);
- if (pir.Status != PromptStatus.OK)
- {
- return;
- }
- else
- {
- //如果成功,保存到默认值并标记是距离还是 Int
- DefaultPamram.Num = (int)pir.Value;
- bool flag = true;
- }
- }
- //直接拾取距离或输入数值
- else if (pdr.Status == PromptStatus.OK)
- {
- //保存距离并设置标志
- DefaultPamram.Dist = pdr.Value;
- bool flag = false;
- }
- else
- {
- return;
- }
- }
- }
- /// <summary>
- /// 用于保存默认值
- /// </summary>
- class DefaultPamram
- {
- private static double _dist;
- private static int _num;
- public static double Dist
- {
- get { return _dist; }
- set { _dist = value; }
- }
- public static int Num
- {
- get { return _num; }
- set { _num = value; }
- }
- }
- }
运行效果
命令: MYGROUP
拾取距离或等分 [Divid]: 指定第二点: (第一使用没有默认值,直接拾取距离)
命令: MYGROUP
拾取距离或等分 [Divid] <298.2798>: 300(默认为上次拾取距离,输入距离)
命令: MYGROUP
拾取距离或等分 [Divid] <300>: d(默认为上次输入距离,输入关键字)
输入等分数量: 12(第一次使用没有默认值)
命令: MYGROUP
拾取距离或等分 [Divid] <300>: d
输入等分数量 <12>: 14(默认为上次输入次数) |