找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1856|回复: 0

[原创] 练习 Editor.GetXXX 的关键字

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-8-5 10:09:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 csharp 于 2014-8-5 10:11 编辑

以 GetDistance + 关键字为例

  1. using Autodesk.AutoCAD.Runtime;
  2. using Autodesk.AutoCAD.ApplicationServices;
  3. using Autodesk.AutoCAD.EditorInput;


  4. [assembly: CommandClass(typeof(InputTest.MyCommands))]

  5. namespace InputTest
  6. {
  7.     public class MyCommands
  8.     {
  9.         [CommandMethod("MyGroup")]
  10.         public void MyCommand()
  11.         {
  12.             Document doc = Application.DocumentManager.MdiActiveDocument;
  13.             Editor ed = doc.Editor;

  14.             //增加关键字提示
  15.             PromptDistanceOptions pdo = new PromptDistanceOptions("\n拾取距离或等分[Divid]", "Divid");

  16.             //是否使用默认值
  17.             if (DefaultPamram.Dist != 0)
  18.             {
  19.                 pdo.DefaultValue = DefaultPamram.Dist;
  20.             }
  21.             //提示输入,拾取距离或输入距离
  22.             PromptDoubleResult pdr = ed.GetDistance(pdo);
  23.             //如果输入为关键字
  24.             if (pdr.StringResult == "Divid")
  25.             {
  26.                 //输入等分后提示输入 Int
  27.                 PromptIntegerOptions pio = new PromptIntegerOptions("\n输入等分数量");
  28.                 //确定是否有默认值
  29.                 if (DefaultPamram.Num != 0)
  30.                 {
  31.                     pio.DefaultValue = DefaultPamram.Num;
  32.                 }
  33.                 //提示输入等分数量 Int
  34.                 PromptIntegerResult pir = ed.GetInteger(pio);
  35.                 if (pir.Status != PromptStatus.OK)
  36.                 {
  37.                     return;
  38.                 }
  39.                 else
  40.                 {
  41.                     //如果成功,保存到默认值并标记是距离还是 Int
  42.                     DefaultPamram.Num = (int)pir.Value;
  43.                     bool flag = true;
  44.                 }
  45.             }
  46.             //直接拾取距离或输入数值
  47.             else if (pdr.Status == PromptStatus.OK)
  48.             {
  49.                 //保存距离并设置标志
  50.                 DefaultPamram.Dist = pdr.Value;
  51.                 bool flag = false;
  52.             }
  53.             else
  54.             {
  55.                 return;
  56.             }
  57.         }
  58.     }
  59.     /// <summary>
  60.     /// 用于保存默认值
  61.     /// </summary>
  62.     class DefaultPamram
  63.     {
  64.         private static double _dist;
  65.         private static int _num;

  66.         public static double Dist
  67.         {
  68.             get { return _dist; }
  69.             set { _dist = value; }
  70.         }

  71.         public static int Num
  72.         {
  73.             get { return _num; }
  74.             set { _num = value; }
  75.         }
  76.     }
  77. }

运行效果
命令: MYGROUP

拾取距离或等分 [Divid]:  指定第二点: (第一使用没有默认值,直接拾取距离)
命令:  MYGROUP

拾取距离或等分 [Divid] <298.2798>: 300(默认为上次拾取距离,输入距离)

命令:  MYGROUP

拾取距离或等分 [Divid] <300>: d(默认为上次输入距离,输入关键字)

输入等分数量: 12(第一次使用没有默认值)

命令:  MYGROUP

拾取距离或等分 [Divid] <300>: d

输入等分数量 <12>: 14(默认为上次输入次数)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-22 22:17 , Processed in 0.393424 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表