RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件
来源:互联网 发布:网络延迟对网速的影响 编辑:程序博客网 时间:2024/06/01 18:49
很多时候,我想通过API获取上一次操作有哪些对象被创建、修改或者删除了。或者想监听文档的改变事件,一旦改变发生,程序就做一些特定的事情,例如,把这些改变记录在数据库中,再和其他应用进行交流。
这个时候,就要用到ControlledApplication.DocumentChanged或者Application.DocumentChanged事件了。
这里,我先推荐大家学习一个SDK里面的例子,名字就叫:DocumentChanged,它用来把所有的对文档的修改记录下来,显示在一个表格里面:
接下来我们看怎么使用。
首先,我们需要注册这个事件,通常情况下,会在IExternalApplication里面注册,因为它是ControlledApplication或Application类的事件,如果在IExternalCommand里面注册的话,当Execute函数退出的时候,需要注销这个事件,否则可能造成事件无法管控。
但是在测试环境的时候,我们可以使用IExternalCommand来注册事件,这样比较方便使用AddInManager来加载和调试。
这里我们就以IExternalApplication作为例子:
public class DocChangedRegistryApp : IExternalApplication{ public Result OnStartup(UIControlledApplication application) { //注册事件 application.ControlledApplication.DocumentChanged += ControlledApplication_DocumentChanged; return Result.Succeeded; } public Result OnShutdown(UIControlledApplication application) { //注销事件 application.ControlledApplication.DocumentChanged -= ControlledApplication_DocumentChanged; return Result.Succeeded; } void ControlledApplication_DocumentChanged(object sender, DocumentChangedEventArgs e) { var doc = e.GetDocument(); //获取对应的文档对象 var added = e.GetAddedElementIds(); //获取增加的对象 var deleted = e.GetDeletedElementIds(); //获取删除的对象 var modified = e.GetModifiedElementIds(); //获取修改的对象 //自己的后续程序 }}
可以看到,在事件的handler函数里面,我们可以获取对应的Document对象,以及增删改的元素的Id,获得这些对象之后,几乎可以做任何事情了。
0 0
- RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件
- 布局改变监听事件
- 布局改变监听事件
- 监听文本框内容改变事件
- Revit二次开发之双事件:空闲事件与DocumentChanged事件
- RevitAPI: 注意Revit 2016事件注册和注销行为的改变
- RevitAPI: 注意Revit 2016事件注册和注销行为的改变
- 监听EditView中的文本改变事件详解
- jquery监听文本框输入改变事件
- EditText 文本域改变事件监听
- 实时监听textField的值改变事件
- iOS-监听UITextField值改变事件
- angularjs路由改变的事件监听
- jq监听下拉列表至改变事件
- input textarea 实时监听 改变值 事件
- 监听脚本绑定事件与属性改变事件
- RevitAPI: 关闭当前文档Close Active Document
- web事件操作【监听器】之对application监听
- Android 之 图片压缩
- php实现递归的三种基本方式及其说明
- 详释(常见UITextView 输入之字数限制)之一---固定长度
- Unity全面优化
- A-Playing with Paper
- RevitAPI:监听文档改变ControlledApplication/Application.DocumentChanged事件
- iOS企业发布问题记录三(Log Guru 使用方法)
- 问题记录
- 平台中配置网格列表样式报:ORA-01461错误
- html js highcharts绘制圆饼图表
- RadioButton的特定使用场景
- java中判断字符串是否为数字的三种方法
- Spring 4.2.4.RELEASE MVC 学习笔记 - 4.1(咋个办呢 zgbn)
- B-Queue on Bus Stop