標籤:

外部命令和外部應用

通過Revit API開發的延展功能包括以下三個方面:

  • 外部命令
  • 內部事件響應
  • 動態更新響應

對於最後一個動態更新響應將在後面講解。

外部命令跟菜單項一一對應。每一個外部命令都需要實現Autodesk.Revit.UI.IExternalCommand介面,該介面只需要實現Execute介面(介面定義請參見《開發手冊》)。當用戶點擊命令菜單時,對應外部命令的Execute介面函數會被調用。為Revit創建一個外部命令包含以下幾個基本步驟:

  1. 創建Class Library項目(項目需要添加RevitAPI.dll和RevitAPIUI.dll引用)
  2. 實現Autodesk.Revit.UI.IExternalCommand
  3. 註冊該命令

外部應用通俗來說就是把一系列外部命令打包成一個應用包,同時外部應用還可以通過啟動時註冊Revit內部事件的響應函數或註冊動態更新響應類來擴展Revit功能,例如通過響應DocumentSaving事件在Revit文檔保存前進行內部標準檢查。每一個外部應用都需要實現Autodesk.Revit.UI.IExternalApplication介面,該介面包含兩個函數:OnStartup和OnShutdown,分別在Revit啟動和關閉時觸發。

為Revit創建外部應用步驟與創建外部命令相似,區別就是創建外部命令需要實現的介面不同,同時註冊文件也有區別。詳情請參考SDK的《Getting Started with the Revit API》文檔。

備註:實現外部命令或外部應用介面時需要指定事務類型,否則在執行時會報錯。設定只需要在外部命令或外部應用類增加Transaction屬性,一般推薦使用TransactionMode.Manual模式,如果確認在命令執行時不會修改任何文檔內容,也可以使用TransactionMode.ReadOnly。如下例:

[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]npublic class SampleCommand : IExternalCommandn{n public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)n {n // do something...n return Result.Succeeded;n }n}n

小知識:使用Revit API開發的外部命令也可以像內部命令一樣設置快捷鍵,給習慣使用鍵盤調用命令的工程師提供了方便。

推薦閱讀:

有沒有人來講一下關於Revit的跨區域協作的Revit server?
關於 BIM 遇到的技術、流程、軟體上的問題,應該去哪裡找資料和答案?
如何自學 Revit?
BIM中revit三維顯示?定向到視圖?具體樓層平面後,以後切換三維視圖的時候就看不到整體的模型了?
有沒有比較好的學習Revit Architecture的網站?

TAG:AutoDeskRevit | API |