Events
Revit 中有多重类型的事件,平时使用中难免有疑惑,根据官方网站的介绍做个梳理。官网链接
事件,顾名思义就是通过某个特定动作或者API触发的通知。通过订阅事件,当某个动作发生时,一个插件应用可以被通知到。
有些事件是在动作发生时产生的,有些是在动作发生前,或者发生或产生的。那些没有发生前或者后的事件,被称作单独事件。
Revit 提供了两种层次的事件,应用层面的和文档层面的。同一个应用层面的事件可以从 Application 或者 ControlledApplication
(不能访问 documents)中拿到。 ControlledApplication
可以在 add-ins 的 OnStartup()
和OnShutdown()
方法中拿到,或者说在订阅事件的时候,这两个类是可以互换的。即,订阅 ControlledApplication
和订阅 Application
是一样的。
事件还可以被分类成 DB 事件和 UI 事件,DB 事件可以从 Application
和 Document
中获得,UI 事件可以从 UIApplication
中获得。
有些事件是只读的,这意味着在进行这些操作的时候,不能改变文档的内容。所以在事件的过程中,需要去确定文档是否可以更改, Document.IsModifiable
和 Document.IsReadOnly
。
DataBase Events
以下是各种类型的 DB 事件:
- DocumentChanged - 在事务完成、失败和回滚时触发。
- DocumentClosing - 在文档关闭时触发。
- DocumentClosed - 在文档关闭后触发。
- DocumentCreating - 在文档创建时触发。
- DocumentCreated - 在文档创建后触发。
- DocumentOpening - 在文档打开时触发。
- DocumentOpened - 在文档打开后触发。
- DocumentPrinting - 在文档打印时触发。
- DocumentPrinted - 在文档打印后触发。
- DocumentSaving - 在文档保存时触发。
- DocumentSaved - 在文档保存后触发。
- DocumentSavingAs - 在文档另存为时触发。
- DocumentSavedAs - 在文档另存为之后触发。
- DocumentSynchronizingWithCentral - 在文档进行中心文件同步时触发。
- DocumentSynchronizedWithCentral - 在文档进行中心文件同步之后触发。
- FailuresProcessing - 在 failure 处理的事务末尾触发。
- FileExporting - 在通过 API 导出的时候触发。
- FileExported - 在通过 API 导出之后触发。
- FileImporting - 在通过 API 导入的时候触发。
- FileImported - 在通过 API 导入之后触发。
- ProgressChanged - 在进度条发生变化之后触发。
- ViewPrinting - 在打印视图的时候触发。
- ViewPrinted - 在打印视图之后触发。
UI 接口事件
以下是各个类型的 UI 接口事件:
- ApplicationClosing - 在 Revit 将要被关闭时触发。
- ApplicationInitialized - 在Revit 被初始化,所有的 addin、addon 被加载,准备打开文档的时候触发。
- DialogBoxShowing - 在对话框弹出的时候触发。
- DisplayingOptionsDialog - 在 Revit 弹出 Options 对话框的时候触发。
- Idling - 在 Revit 空闲的时候触发。
- ViewActivating - 在视图被唤醒的时候触发。
- ViewActivated - 在视图被唤醒之后触发。