Revit二次開發環境搭建(Revit 2019+Visual Studio 2017)準備內容
Revit 2019開發環境的搭建,需要安裝的內容如下:
- Revit 2019(主要的開發環境)
- Visual Studio 2019(用於程式碼的編寫)
- Revit SDK 2019
- AddinManager(用於管理二次開發外掛)
- Revit Lookup(檢視工具)
- lLSpy 4.0.1(檢視Revit API)
安裝
系統要求:Windows 10 (x64)
Revit 2020 的安裝
可以選擇瀏覽器搜尋Revit找到官網下載,只能試用版本(2020可能已經試用版和正式版2合1了,但是試用到期之後還是要錢)或者選用教育/學生版。如果想要永久版本的……(咳咳,都懂得這東西不好發,而且有手就找得到,懶得找就私信我或者VX:R7jsdh)
太久版本的Revit版本建議還是不要安裝了吧。(Revit 安裝過程小概率會遇到總是安裝失敗的問題,不過不屬於本篇筆記的內容,故不加贅述,如果遇到了,同上,私聊,95%的把握可以幫你解決)
Visual Studio 2019 的安裝
在VS社群中可以找到下載連結,可以點選這裡下載。
同時,請注意 .NET框架的安裝,另外也要安裝 .NET Core 。官方給出的是:Revit 2019 對應 .NET Framwork 4.7。但是本文之後需要安裝的 Revit Lookup 用到的是 4.7 的框架,所以即便您安裝的是 Revit 2020,請依舊安裝 4.7 框架。
如若想要安裝其他版本,譬如Professional,但是苦於只能使用試用版,同上,私信 or VX。
Revit SDK 2020
點選這裡跳轉下載地址,安裝路徑最好和 Revit 2020 安裝在同一路徑,非要不在一起也無大礙。
配置 AddinManager
Revit SDK 2020安裝路徑應該包含了Revit SDK檔案和AddinManager外掛,用來允許外部進行二次開發程式碼。
在Windows 10 中可能會找不到該目錄:C:\ProgramData\Autodesk\Revit\Addins\2020,需要開啟資源管理器的【選項卡檢視→勾選隱藏的專案】。
複製SDK檔案下的Add-In Manager目錄下的AddInManager.dll和Autodesk.AddInManager.addin檔案到上面的目錄中。然後更改Autodesk.AddInManager.addin檔案中的Assembly標籤中的東西,裡面的路徑為SDK的實際安裝路徑,然後儲存。
【注】如果找不到這句說的2個.dll檔案,請參照下方步驟。
- 如果你安裝了 Revit 2019 SDK,那麼可直接將19的這兩個AddIn檔案複製到上方路徑中;
- 如果沒有,那麼請【移步?這裡】(提取碼:76ig),同樣的下載完之後複製兩個檔案到上方路徑即可。
更改之後開啟Revit即可在【附加模組→外部工具】中看到安裝的外掛。
【提示】如果有要求選擇載入型別的視窗,請一律選擇“總是載入”,切記!
Revit Lookup
點選這裡跳轉下載地址。
選擇Download ZIP,下載後解壓在先前安裝的Revit SDK路徑下,之後點選解壓完之後的專案資料夾,找到最下面的RevitLookup.sln檔案,雙擊使用VS開啟。
【注】如果有彈出視窗顯示對應的.NET Framwork 框架版本不對應,請選擇第二項,為該專案下載並安裝對應版本的.NET 框架,之後瀏覽器會自動開啟一個連結,連結就是框架的下載地址。選擇Download .NET Framwork 4.7 Developer Pack,跳轉到下載頁面之後,會提示你是否需要另外的語言包,確定下載原英文框架之後,可以再自行下載中文(簡體)語言包。兩個安裝包都安裝好之後,就會發現開啟RevitLookup.sln檔案不載有彈窗提示。
專案開啟之後重新新增下面的引用,剛開啟專案的時候,這幾個引用會有黃色警告⚠的標記,在Revit安裝路徑下可以找到這些.dll(引用),之後點選啟動▶,是否出現提示或者其他視窗請不要在意,主要檢視在 C:\Program Files (x86)\Autodesk\Revit 2020 SDK\RevitLookup-2019.0.0.7\CS\bin\Debug 中有沒有出現這個檔案:RevitLookup.dll。
【需要重新新增的引用】
AdWindows
RevitAPI
RevitAPIIFC
RevitAPIMacros
RevitAPIUI
RevitAPIUIMacros
【快速找到上方引用的方法】
- 右鍵選擇【引用→新增引用】
- 開啟【引用管理器→瀏覽→選擇要引用的檔案】
- 在瀏覽視窗的右上方搜尋框中輸入需要新增的引用,系統即可自動檢索到所需內容
在這之後,進入SDK安裝路徑:C:\Program Files (x86)\Autodesk\Revit 2020 SDK\RevitLookup-2019.0.0.7\CS,找到RevitLookup.addin檔案,開啟檔案,將裡面的Assembly標籤內容修改為(即上述編譯生成的RevitLookup.dll所在的路徑,也就是?C:\Program Files (x86)\Autodesk\Revit 2020 SDK\RevitLookup-2019.0.0.7\CS\bin\Debug)
這之後,將這個已經修改過的RevitLookup.dll拷貝到該目錄中?C:\ProgramData\Autodesk\Revit\Addins\2020,如此,便完成RevitLookup的安裝,重啟Revit 2020之後就可以在選項卡【附加模組】中看到RevitLookup,如下圖:
【注】需要提醒的是,紅框標記處的Revit Lookup只有當開啟一個專案的時候才會亮起,否則是灰色的圖示且不能點選。
ILSpy 4.0.1
點選這裡跳轉下載地址。
測試
- 開啟Visual Studio 2019,建立新專案,找到建立模板【類庫(.NET Framwork)】,切記,選擇的是類庫(.NET Framwork),不是類庫(通用 Windows)或者類庫(.NET Standard),這裡一定會有人心急趕緊弄好而看錯。之後寫上專案名Hello Revit。
- 在右邊的引用中右鍵新增引用(RevitAPI.dll和RevitAPIUI.dll),用上文一樣的方法,找到所需要的新增的引用,確定新增之後,記得把這裡上述兩個引用的【複製到本地】屬性改為false,否則會生成一大堆沒用的東西。因為做的是測試外掛,不可能脫離Revit程式本身來執行的。
- 除了using System;其他所有的引用全部刪掉;然後在後面加上下面的欄位。
using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.Attributes;
- 在預設生成的public class Class1{}前面加上下面的欄位。
[Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
- 把預設生成的public class Class1{}改成下面的欄位。
public class Class1: IExternalCommand{}
- 在上面的欄位內部新增下面的欄位。
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { }
- 在上面的欄位內部新增如下欄位。
TaskDialog.Show(“Revit”, “Hello Revit!”); return Result.Succeeded;
- 最終這個.cs檔案的全部程式碼應該是下面這樣:
using System; using Autodesk.Revit.DB; using Autodesk.Revit.UI; using Autodesk.Revit.Attributes; namespace Hello_Revit { [Transaction(TransactionMode.Manual)] public class Class1 : IExternalCommand { public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements) { TaskDialog.Show("Revit", "Hello Revit!"); return Autodesk.Revit.UI.Result.Succeeded; } } }
- CtrlK,S儲存全部檔案,不會快捷鍵的情點選【檔案】,找到【全部儲存】。之後右鍵專案本身選擇【屬性】,找到【生成】,把【目標平臺】改為 x64,省略該步驟在編譯的時候會出現警告。檢查無誤之後生成類庫,並記下輸出視窗中的.dll檔案的位置。【注】是目標平臺!不要看成平臺!
- 新建一個文字檔案.txt,輸入以下內容。但是要注意的是:注意第4行、第5行和第6行,都要根據實際情況填寫。第4行Assembly標籤內就是上一步記下的.dll檔案的位置,第5行AddIn標籤的內容可以在這個類庫專案的Properties資料夾中的AssemblyInfo.cs檔案裡找到,直接把Guid冒號後面的引號中內容完全貼上到標籤內即可。【注】FullClassName標籤內的類名一定要和上面的類庫專案中.cs檔案的名稱空間一致,下面的程式碼中Hello和Revit欄位中間的下劃線是因為建立專案的名稱是Hello Revit,建立時會預設把空格當做下滑線處理。
<?xml version ="1.0" encoding ="utf-8" standalone ="no"?> <RevitAddIns> <AddIn Type="Command"> <Assembly>E:\文件\Visual Studio 2019\repos\Hello Revit\bin\Debug\Hello Revit.dll</Assembly> <AddInId>0d27e093-398b-41f2-bbfd-eaef14cad3b1</AddInId> <FullClassName>Hello_Revit.Class1</FullClassName> <Text>Hello Revit</Text> <VendorId>NAME</VendorId> </AddIn> </RevitAddIns>
- 把這個.txt檔案重新命名為HelloRevit.addin,複製到Revit外掛目錄下:C:\ProgramData\Autodesk\Revit\Addins\2020。
- 重啟Revit,選擇【附加模組→外部工具→Hello Revit】,執行之後就可以看到彈出對話方塊,測試成功。