双击CAD对象(具有扩展数据),显示自定义对话框实现方法

news/2024/7/4 9:42:31

转自:Cad人生

链接:http://www.cnblogs.com/cadlife/p/3463337.html

题目:双击CAD对象,显示自定义对话框实现方法

内容粘贴如下:

 主要是绑定两个事件:一个是 Application.DocumentManager.DocumentLockModeChanged -----  该事件为文档锁定事件,一直在被监测中
一个是 Application.BeginDoubleClick ----- 该事件为应用程序的双击事件
 1     class TlsApplication : IExtensionApplication //程序初始化,在加载dll时,cad会自动捕捉并运行该过程
  3     { 
  5         void IExtensionApplication.Initialize() 
  7         { 
  9             TTest.Start(); 
 11         } 
 13         void IExtensionApplication.Terminate() 
 15         { 
 17         } 
 19     }
 20 
 21     class TTest 
 23     { 
 25         static bool m_Veto = false; 
 27         public static void Start() 
 29         { 
 31             Application.DocumentManager.DocumentLockModeChanged += new DocumentLockModeChangedEventHandler(vetoCommand); 
 33             Application.BeginDoubleClick += new BeginDoubleClickEventHandler(beginDoubleClick); 
 35         } 
 37         static void beginDoubleClick(object sender, BeginDoubleClickEventArgs e) 
 39         { 
 41             Document doc = Application.DocumentManager.MdiActiveDocument; 
 43             Editor ed = doc.Editor; 
 45             PromptSelectionResult res = ed.SelectImplied(); 
 47             SelectionSet ss = res.Value; 
 49             if (ss != null) 
 51             { 
 53                 if (ss.Count == 1) 
 55                 { 
 57                     using (Transaction tr = doc.TransactionManager.StartTransaction()) 
 59                     { 
 61                         Line line = tr.GetObject(ss[0].ObjectId, OpenMode.ForRead) as Line; 
 63                         if (line != null) 
 65                         { 
 67                             ResultBuffer rb = line.GetXDataForApplication("MyApp"); //提取对象的扩展数据
 69                             if (rb != null) 
 71                             { 
 73                                 m_Veto = true; 
 75                             } 
 77                         } 
 79                     } 
 81                 } 
 83             } 
 85         }
 86 
 87         static void vetoCommand(object sender, DocumentLockModeChangedEventArgs e) 
 89         { 
 91             if (e.GlobalCommandName.ToLower() == "properties") //判断是否是调用属性对话框
 93             { 
 95                 if (m_Veto) 
 97                 {
 99                     e.Veto(); 
103                     Application.ShowAlertDialog("hello"); //在此处可以添加自定义对话框
105                     m_Veto = false; 
107                 } 
109             } 
111         } 
113     }

 

转载于:https://www.cnblogs.com/whlkx/p/8678779.html


http://www.niftyadmin.cn/n/4558090.html

相关文章

405

get和post用反的话 没有按照服务端要求的请求格式

分别用顺序交换法和选择顺序法和 按由小到大输出 如何用C写一段程序:任意输入10个数

自己试着做吧 都可以 还有交换排序 选择排序 不会了可以再找我 num[i]);}for(i8;i>0;i--){ for(j9;j>9-i;j--){ if(num[j]<num[j-1]) { tnum[j]; num[j]num[j-1]; num[j-1]t; }}for(i0;i<10;i){ printf("%d/t" num[10];int t;for(i0;i<10;i){ scanf(&…

bzoj1572 [Usaco2009 Open]工作安排Job

[Usaco2009 Open]工作安排Job Time Limit: 10 Sec Memory Limit: 64 MB Description Farmer John 有太多的工作要做啊&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;为了让农场高效运转&#xff0c;他必须靠他的工作赚钱&…

C语言怎么 学

然后在为了同样的目的自己写一次代码并试验 先从抄书上的简单代码开始 最大限度的完成并理解每个你见过的程序 最后要学会举一反三 ||| 全身心的投入 如果不成功再对照样例 抄完了以后就试验代码

20154312 曾林 Exp3 免杀原理与实践

20154312 曾林 0.写在前面 AV厂商检测恶意软件的方式主流的就三种&#xff1a; 基于特征码的检测启发式恶意软件检测基于行为的恶意软件检测我们要做的就是让我们的恶意软件没法被这三种方式找到&#xff0c;也就是免杀。具体的手段有&#xff1a; 改变特征码 如果你手里只有EX…

java高手进

实在太钻了 ||| 这是做什么的 1.abc 2.abd 3.acd 4.ce 5.ce 6.f 7.a 8.df 9.a 10.cd 13.a 14.abd 16.e 18.acde 19.ce 20.ae没写我不确定 面试题吗

通配符的使用

*&#xff1a;表示匹配全部字符可以多个 &#xff1f;&#xff1a;表示匹配任意一个字符 [a-z] &#xff1a;表示 a-z范围内的任意一个字符 [1-9]:表示匹配1-9其中的任意一个数字 daokrDK:~$ ls -l [a-z].??? -rwxrwxr-- 1 daokr daokr 7456 3月 29 20:59 a.out daokrDK:~$…

怎样让这个程序重复执行而不退出啊

/a/a/a");scanf("%c" word1);printf("/n它的ASCILL码是%d" word &word);while(word 0)//在这加一个循环 当输入的word 不为0时 可以给换成回车{printf("请输入大写字母&#xff1a;");if((word>A)&&(word<Z)){word1word-…