EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 600|回复: 0
打印 上一主题 下一主题

[事件] AutoCAD中的事件处理(一)

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12406

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-8 14:53:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
事件(Event)是AutoCAD用来告知或提醒用户(更多的应该是程序员)当前会话的状态、事情的发生等而发出的消息。例如保存一个文档时,BeginSave事件就会被触发。其他的像图形的关闭、命令的开始、系统变量的改变等都会触发事件。通过捕获事件,程序员可以编写自己的事件处理程序来对感兴趣的事件做出合理的响应。

事件的分类

事件大致可分为以下9类:Application、Database、Document、DocumentCollection、Editor、Graphics、Plotting、Publishing、Runtime、Windows

事件的处理

       当事件被触发之后,需要对事件进行捕获并做出相应的处理,做出处理的函数被称为事件处理函数(event handler),被指定的事件处理函数将会在事件触发之后自动的执行,由于事件能够产生一些参数,因此可被传递到事件处理函数中去,使得处理函数能够识别事件的来源和它所携带的参数,从而做出更精细的处理。

       由于事件只是简单的提供了某些信息,事件处理函数则要根据这些信息来执行,并反馈到AutoCAD中去,所以如何正确的编写事件处理函数将会显得很重要。

       关于编写事件处理函数需要注意以下几点:

1.       不要依赖事件顺序

当执行一个动作的时候,可能会产生一系列的事件,而且这些事件的顺序并不总是按某种特定的顺序产生的,唯一能确定顺序的是某个事件的开始和结束


2.       不要依赖操作的顺序

例如使用erase命令删除实体1然后再删除实体2,不要固执的以为会先收到实体1的ObjectErased事件,或许恰好相反

3.       不要在事件处理函数中使用交互操作

由于事件被触发时,AutoCAD可能仍旧在执行命令,所以使用交互操作会带来严重的问题,简单的可能会导致命令被中断,严重会导致AutoCAD崩溃。所以在事件处理函数中不要提示用户输入、实体的选择、或者使用SendStringToExecute方法发送命令。

4.       不要在事件处理函数中使用对话框

由于对话框可能会影响到AutoCAD的操作,所以也被视为交互操作。不过消息框和警告框可以放心的使用,但也不是所有的事件处理函数中都可以的,例如对EnterModal、 LeaveModal,、DocumentActivated以及DocumentToBeDeactivated的事件处理函数中可能导致不可预知的错误。

5.       不要在针对某个事件的处理函数中再次触发该事件

原因很简单,这回导致死循环

6.       当AutoCAD显示一个模式对话框的时候并不会触发事件
转自:http://379910987.blog.163.com
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对

相关帖子

工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-27 13:57

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

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