Revit開發AddinManager原理探索

2021-07-24 22:28:51 字數 651 閱讀 2484

revit開發中addinmanager是乙個非常好用的工具,它可以快速的執行我們寫好的命令

並且生成addin檔案,最近突然好奇,它是怎麼實現這些功能的,然後研究了一下,

發現這裡面似乎是通過反射來實現的,他能執行我們的寫的命令最關鍵的是因為下面的**

iexternalcommand externalcommand = assembly.createinstance(fullclassname)asiexternalcommand;

if(externalcommand != null)

因為用反射建立我們寫的命令的類之前,我們要先載入dll,而載入dl後,如果載入dll的位置和我們生成dll的位置相同

當我們再編譯原來的工程就會失敗,因為我們生成的dll要替換原來的dll,而原來的dll已經被占用,所有就會替換失敗,

我想著就是addinmanager 執行命令之前,要先把dll檔案複製到其他地方的原因吧

下面嘗試些乙個簡單的addinmanager,並不包括將dll複製到其他地方,和生成addin檔案的功能

//建立介面

// addinmanager 命令

如有錯誤歡迎指正

Revit開發之管段

在api裡管段對應了乙個pipesegment類,要獲取可以用class過濾去來過濾 如果要建立管段可以使用pipesegment的create方法來建立,這是個靜態方法 public static pipesegment create document adocument,elementid ma...

Revit開發之元素過濾

revit 二次開發 中提供了乙個filteredelementcollector 類,通過這個類我們可以方便的獲取到 我們想要獲取的 這個類返回的是乙個 的集合,他有 種建構函式 1.filteredelementcollector document 這個是返回傳入document中的所有elem...

Revit開發管道風管分段

revit2017的api 裡提供了水管和風管分段的方法,如果開發者在要寫分段的功能就大大的方便了 主要是提供了 plumbingutils pipe分段 mechanicalutils duct分段 兩個類下面是個小測試 reference r uidoc.selection.pickobject...