乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 125|回复: 9

AUTOCAD 选择对像后触发事件

[复制链接]

5

主题

20

帖子

2

银币

初来乍到

Rank: 1

铜币
40
发表于 2011-8-2 09:37:00 | 显示全部楼层 |阅读模式
这几天需要一个选择实体的触发事件,找啊试啊终于完成,分享下:
使用Addselectchang加载
使用Removeselectchang卸载
  1. using System;
  2. using Autodesk..Runtime;
  3. using Autodesk.AutoCAD.DatabaseServices;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.EditorInput;
  6. [assembly: CommandClass(typeof(Sample.ObjectErasedEvent))]
  7. namespace Sample
  8. {
  9.     public class ObjectErasedEvent
  10.     {
  11.         Autodesk.AutoCAD.EditorInput.Editor  ed = Application.DocumentManager.MdiActiveDocument.Editor;
  12.         [CommandMethod("Addselectchang")]
  13.         public void AddDocEvent()
  14.         {
  15.             Document acDoc = Application.DocumentManager.MdiActiveDocument;
  16.             acDoc.ImpliedSelectionChanged += new EventHandler(doc_ImpliedSelectionChanged);
  17.         }
  18.         [CommandMethod("Removeselectchang")]
  19.         public void RemoveDocEvent()
  20.         {
  21.             // Get the current document
  22.             Document acDoc = Application.DocumentManager.MdiActiveDocument;
  23.             acDoc.ImpliedSelectionChanged -= new EventHandler(doc_ImpliedSelectionChanged);
  24.         }
  25.         public void doc_ImpliedSelectionChanged(object sender, EventArgs e)
  26.         {
  27.             PromptSelectionResult pkf = ed.SelectImplied();
  28.             if (pkf.Status != PromptStatus.OK) return;
  29.             ObjectId[] objIds = pkf.Value.GetObjectIds();
  30.             String oids = "";
  31.             foreach (ObjectId objId in objIds)
  32.             {
  33.                 oids += "\n " + objId.ToString();               
  34.             }
  35.             Autodesk.AutoCAD.ApplicationServices.Application.ShowAlertDialog("\n选择的对像ObjectId为:" +
  36. oids + "\n共选择了对像个数是:" + objIds.Length.ToString());
  37.         }
  38.     }
  39. }
处理Document事件文档事件对应AutoCAD中的文档窗口,文档事件只和它关联的文档建立联系,因此如果文档事件需要在每个文档中注册,必须使用DocumentCollection对象的DocumentCreated事件来注册对每一个打开或创建的文档进行事件的注册。下面是一些常见的事件及触发事件的说明
事件
说明
BeginDocumentClose
当收到关闭文档的请求时触发
CloseAborted
当试图放弃关闭文档时触发
CloseWillStart
当BeginDocumentClose已被触发,并在文档关闭前触发
CommandCancelled
命令在执行完之前被取消后触发
CommandEnded
命令执行完后触发
CommandFailed
命令不是由于取消而执行失败后触发
CommandWillStart
命令被提交,但在执行前触发
ImpliedSelectionChanged
当前向选择集(pickfirst selection set)发生改变后触发
UnknownCommand
当命令行中收到不可知命令后触发
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2011-8-2 10:29:00 | 显示全部楼层
学习了,第一次知道有这个事件.
回复

使用道具 举报

0

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
2
发表于 2011-9-16 17:21:00 | 显示全部楼层
学习学习,正在研究这方面的东西
回复

使用道具 举报

5

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
28
发表于 2011-12-17 16:34:00 | 显示全部楼层
这些事件在哪里啊,我怎么没有发现,我用的是2006版本的cad
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2011-12-17 18:25:00 | 显示全部楼层
较新的版本才会有,应该是2008之后版本才有
回复

使用道具 举报

0

主题

21

帖子

6

银币

初来乍到

Rank: 1

铜币
21
发表于 2012-1-11 10:56:00 | 显示全部楼层
学习了,正在进步中
回复

使用道具 举报

7

主题

55

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
83
发表于 2012-10-31 16:41:00 | 显示全部楼层
DocumentCollection对象的DocumentCreated事件来注册对每一个打开或创建的文档进行事件的注册。
代码没有发全啊。
回复

使用道具 举报

5

主题

28

帖子

1

银币

初来乍到

Rank: 1

铜币
48
发表于 2013-11-19 10:55:00 | 显示全部楼层
如何在DocumentCollection找到我要的文档啊。。。
回复

使用道具 举报

19

主题

154

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
230
发表于 2014-1-16 20:36:00 | 显示全部楼层
AutoCAD里面的事件很麻烦啊
回复

使用道具 举报

9

主题

24

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2014-5-6 23:01:00 | 显示全部楼层
学习了,感谢!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 21:07 , Processed in 0.436492 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表