当前位置: 代码迷 >> 综合 >> Revit API 开发 (7): Event 事件的应用
  详细解决方案

Revit API 开发 (7): Event 事件的应用

热度:15   发布时间:2024-01-24 22:37:15.0

前言

Event 是一个在各种编程语言中,都非常重要的概念。它是一种重要的设计模式,Revit API 也需要利用它来完成一些工作。
在介绍 Event 之前,首先说明一下Revit API 中的两个 Application 类。Autodesk.Revit.Creation.ApplicationAutodesk.Revit.ApplicationServices.Application
前者主要功能是在 Revit 里创建新的元素,比如族实例信息,几何图形等等。
后者主要功能包括文档的创建和打开,文档整体的操作,还有 Event 事件处理。

细节

例子

在下面这个例子中:

  1. 使用 IExternalApplication,在它的 OnStartup 中注册事件,在它的 OnShutdown 中取消事件。
  2. 事件处理方法是在注册的时候传进去的,这里是 application_DocumentOpened
  3. 在事件处理方法中,可以编写你自己的逻辑,他会在文档打开之后执行。
public class Application_DocumentOpened : IExternalApplication
{public Result OnStartup(UIControlledApplication application){application.ControlledApplication.DocumentOpened += new EventHandler<Autodesk.Revit.DB.Events.DocumentOpenedEventArgs>(application_DocumentOpened);return Result.Succeeded;}public Result OnShutdown(UIControlledApplication application){application.ControlledApplication.DocumentOpened -= application_DocumentOpened;return Result.Succeeded;}public void application_DocumentOpened(object sender, DocumentOpenedEventArgs args){Document doc = args.Document;using (Transaction transaction = new Transaction(doc, "Edit Address")){if (transaction.Start() == TransactionStatus.Started){// 在这里,你可以编写你想要的操作。doc.ProjectInformation.Address ="United States - Massachusetts - Waltham - 1560 Trapelo Road";transaction.Commit();}}}
}

事件类型

Autodesk.Revit.ApplicationServices.Application 类中的主要事件:

作用级别 / 范围 事件
整个应用 ApplicationInitialized
文档操作 DocumentChanged 以及DocumentXXX
导入导出 FileExporting, FileImported, FileImporting
链接文件 LinkedResourceOpened, LinkedResourceOpening
视图导出/打印 ViewExported, ViewExporting, ViewPrinted, ViewPrinting
文件协同 DocumentSynchronizedWithCentral, DocumentSynchronizingWithCentral, WorksharedOperationProgressChanged
  相关解决方案