參考 Revit 的 api 教學網站 http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=16849339 時,發現雖然 Autodesk 在行文時力求簡單,希望讓非資訊本科的朋友們也能夠一步步製作API。然而我自己根據教學內容嘗試撰寫 plug-in 時,雖然在 Revit 中能看的到 plug-in 的標籤,但卻無法正確執行內容。爬了一些文,發現主要原因有二,
 
其一、在 Visual Studio 要將 class 匯出為 .dll 檔時,
Build Solution的編碼格式,
在<x64>與 Visual Studio 預設的<Any CPU>時有所不同,
導致某些使用64位元版的 Revit 用戶
無法辨識 pulg-in 的 class 內容,
當然也就無法執行這個 plug-in。
 
另外、在撰寫 .addin 時,
使用者也要注意 class 名稱
與 .dll 位置等內容的指定值是否有誤,
否則也是無法正確執行 plug-in 的。
 
以下提供小弟苦戰後的解決方法,
供遇到同樣問題卻不知如何解決的朋友們參考:
 

 

    1.  Visual Studio 中新建一個 class 後,
      在畫面右邊 solution explore 下
      reference > add reference 右鍵
      >加入 Revit 安裝路徑底下的 RevitAPI.dll 和 RevitAPIUI.dll。
       

       add Reference  
    2. 根據教學內容提供的 class 程式將內容完成後,
      若是使用 64 位元版的 Revit,在 Build Solution 時,
      便要在 Build > Configuration Manager 底下,
      將 Solution 模式由 Debug 改為 Release ,
      並把 Platform由<Any CPU>改為<x64>,
      這樣輸出的class檔才能被64位元版的 Revit 正常讀取 。
       

       check platform  
    3. 如此,雖然不管 Release 是<Any CPU>或是<x64>,
      當執行 Build Solution 時畫面底下 Output 的結果都寫 succeeded ,
      然而<Any CPU>會多出兩行錯誤訊息
      說明 Revit 版本與 CPU mismatch。
       

      platform: any CPU  platform: x64

 

    1. 接下來根據 Output 區所顯示的 .dll 文字來撰寫 .addin 檔案,
      並放入到 C:\program data\autodesk\revit\20xx\addin\ 中讓 Revit 讀取,
      本例中,執行 Build 後的結果,
      是將名叫做 Lab5PickFilter 的 class
      放到路徑為 E:\04=Reference\17=revitAPI\example02\bin\Release\Lab5.dll 的檔案裡面。
       

       2 more error lines  

 

  1. 因此,在撰寫開啟 Revit 要求預載的 .addin 檔時,我們應該分別如下圖所示,
    修改所要讀取的 .dll 檔位置(E:\04=Reference\17=revitAPI\example02\bin\Release\Lab5.dll)、
    class 的名稱(Lab5PickFilter)、
    與 希望在 Revit 標籤上看到的名稱。
     

    .addin content  
  2. 依步驟操作至此, 
    使用64位元版本的 Revit 用戶應當可以正常執行我們所編寫的 class 內容了:)
文章標籤
創作者介紹
OT

M+A Media Lab

OT 發表在 痞客邦 PIXNET 留言(0) 人氣()