假許起手式
  • 首頁
  • CREO
  • Revit API
  • 資源庫
  • 加入社群
  • 與我聯絡
  • 隱私權政策
Author

LuSir

LuSir

Revit API

【Revit API】05-Revit API UI創建 & AddInManager製作addin檔

by LuSir 2021-11-10

此章節要教學的是,如何將寫好的外掛製作成按鈕,讓人可輕鬆執行,這裡會學習到的是以下…

  • Visual C# 程式撰寫Revit的UI外掛-FirstButton
  • 使用Add-In Manager製作addin檔

這裡先提供稍後要製作按鈕的圖示,請先另存圖片下列綠色圖示,放置到你要讀取圖片的位置,下方提供的程式碼我是將它放在專案內。

下載我

Visual Studio 新增項目進行UI程式撰寫

使用上一章節的專案新增項目

通常 Visual C# 項目 會預設為類別,如果太多選項找不到,可以先選擇左方的程式碼,再選擇類別。接著將底下的Class取名,在此我取的Class名稱為FirstButton,如果你不是用這名稱的話,稍後提供的程式碼記得更改為你取的Class名稱。

VS環境建置完成,開始寫程式嘍~ 底下有提供程式碼,可以直接整個複製貼上,留意如果專案名稱不同的,記得要修改為自己的專案名稱,另一是輸出的dll檔與圖片路徑也記得要修改。

using Autodesk.Revit.UI;
using System;
using System.Windows.Media.Imaging;

namespace FirstPlugin
{
    public class FirstButton : IExternalApplication
    {
        public Result OnStartup(UIControlledApplication app)
        {
            // 要執行的dll與按鈕圖片檔案路徑
            string firstBtnDll = @"C:\Prj\Revit\FirstPlugin\bin\Debug\FirstPlugin.dll";
            string picPath = @"C:\Prj\Revit\FirstPlugin\FirstButton.png";

            // 創建一個新的工具列
            string tabName = "Revit API";
            app.CreateRibbonTab(tabName);
            // 添加面板
            RibbonPanel firstBtnPanel = app.CreateRibbonPanel(tabName, "First Button");
            // FirstBtn按鈕創建
            PushButton firstBtn = firstBtnPanel.AddItem(new PushButtonData("First_Button", "FirstPlugin", firstBtnDll, "FirstPlugin.Class1")) as PushButton;
            // 給按鈕添加圖片
            Uri firstBtnImage = new Uri(picPath);
            BitmapImage firstBtnLargeImage = new BitmapImage(firstBtnImage);
            firstBtn.LargeImage = firstBtnLargeImage;

            return Result.Succeeded;
        }
        public Result OnShutdown(UIControlledApplication app)
        {
            return Result.Succeeded;
        }
    }
}

最後到VS的建置中重建方案(或建置方案),輸出顯示為成功即可,記得VS輸出dll的路徑位置。

接著就是要透過Add-In Manager製作addin檔,然後將外掛按鈕載入到Revit中使用。

底下這個我說明一下

  • Save checked items to Addins folder:路徑會輸出至C:\ProgramData\Autodesk\Revit\Addins\2014
  • Save checked items to Local .addin file:路徑會輸出至同dll檔資料夾中

因為稍後會將dll與addin兩個檔案一起搬移,讓Revit啟動此外掛,所以我將addin生成到同dll資料夾中

Add-In Manager生成addin檔操作步驟影片

最後,我們將輸出的dll與addin檔複製到C:\ProgramData\Autodesk\Revit\Addins\20XX貼上,Revit即會詢問你是否要將外掛載入,載入後即可使用。

載入外掛操作影片

2021-11-10 1 comment
0 FacebookPinterestLINEEmail
Revit API

【Revit API】04-Revit API-First Plugin & AddInManager使用

by LuSir 2021-05-12

這個章節會針對第一個外掛進行以下動作說明…

  • Visual Studio (以下文章簡稱為VS) 專案建置與環境建立
  • Visual C# 程式撰寫-FirstPlugin
  • Add-In Manager使用

那事不宜遲,接下來就進入到我們Revit API開發的主軸吧!

Visual Studio 專案建置與環境建立

以下用圖文進行步驟教學,開啟VS先建立新的專案

使用C#、Windows、程式庫進行篩選,特別留意需選擇類別庫(.NET Framework)

取專案名稱,這裡使用的名稱為FirstPlugin,如果不是用這個名稱建立專案的話,稍後提供的程式碼記得要修改成你自己取的專案名稱。

加入參考

到要開發的Revit版本下(路徑:C:\Program Files\Autodesk\Revit 20xx),找到RevitAPI.dll與RevitAPIUI.dll這兩個檔案,加入參考。

  • RevitAPI.dll:用於訪問Revit的應用程序、檔案、元素與參數。
  • RevitAPIUI.dll:用於Revit使用者界面的操作和自定義界面。

將加入參考的RevitAPI、RevitAPIUI,屬性內複製到本機的參數選擇為False。

VS環境建置完成,開始寫程式嘍~ 底下有提供程式碼,可以直接整個複製貼上,留意如果專案名稱不同的,記得要修改為自己的專案名稱。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;
using Autodesk.Revit.Attributes;
using Autodesk.Revit.ApplicationServices;

namespace FirstPlugin
{
    [Transaction(TransactionMode.Manual)]
    public class Class1 : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            UIApplication uiapp = commandData.Application;
            UIDocument uidoc = uiapp.ActiveUIDocument;
            Application app = uiapp.Application;
            Document doc = uidoc.Document;

            // Revit視窗顯示
            TaskDialog.Show("Revit", "My First Plugin!");

            return Result.Succeeded;
        }
    }
}

最後到VS的建置中重建方案(或建置方案),輸出顯示為成功即可,記得VS輸出dll的路徑位置。

接著,來看看我們第一個Revit API的成果吧!

請先確認已安裝Add-In Manager後,開啟Revit後,依序點選增益集 –> 外部工具 –> Add-In Manager (Manual Mode)

將剛剛VS輸出的dll檔載入至Revit中。

滑鼠左鍵點選兩下要執行的Class,則成功跳出我們的第一支Revit API成果嘍~

2021-05-12 2 comments
0 FacebookPinterestLINEEmail
Revit API

【Revit API】03-Revit API-AddInManager安裝

by LuSir 2021-05-10

在進行Revit API二次開發時,重複地載入dll檔測試撰寫的程式碼是必須的,在開始教學之前,先提供 Add-In Manager安裝檔給各位,讓大家節省繁雜的安裝動作,下載下來後,一直點選下一步到結束即可,我做的這個安裝檔會一次安裝好Revit 2015-2020版的RevitLookup與Add-In Manager,安裝檔連結請點選這裡。
這裡也提供Add-In Manager的dll與addin檔案,教學的部分會透過這兩個檔案說明,如何讓Revit新增外掛,請點選這裡。

下載下來的addin檔案,主要會放置在兩個位置,當Revit啟動時,會自動偵測是否有要啟動的外掛。

  • C:\ProgramData\Autodesk\Revit\Addins\Revit版本 –> 所有使用者
  • C:\Users\使用者名稱\AppData\Roaming\Autodesk\Revit\Addins\Revit版本 –> 特定使用者

下方addin檔案中,紅字的部分需特別留意,<Assembly> 表示的是要驅動的dll檔案位置,<ClientId> 是GUID(全域唯一識別碼),主要目的是產生完全唯一的數字,不得重複,可於以下網址生成複製貼上,https://www.guidgenerator.com/

<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
   <AddIn Type="Command">
      <Assembly>C:\ProgramData\Autodesk\Revit\Addins\2020\AddInManager.dll</Assembly>
      <ClientId>9411ad7a-754d-4c83-94b6-f552d1e8b176</ClientId>
      <FullClassName>AddInManager.CAddInManager</FullClassName>
      <Text>Add-In Manager (Manual Mode)</Text>
      <VisibilityMode>AlwaysVisible</VisibilityMode>
      <LanguageType>Unknown</LanguageType>
      <VendorId>ADSK</VendorId>
      <VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
  </AddIn>
  <AddIn Type="Command">
      <Assembly>C:\ProgramData\Autodesk\Revit\Addins\2020\AddInManager.dll</Assembly>
      <ClientId>95cda59a-8d90-40c6-930b-d7be8544bac1</ClientId>
      <FullClassName>AddInManager.CAddInManagerFaceless</FullClassName>
      <Text>Add-In Manager (Manual Mode, Faceless)</Text>
      <VisibilityMode>AlwaysVisible</VisibilityMode>
      <LanguageType>Unknown</LanguageType>
      <VendorId>ADSK</VendorId>
      <VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
  </AddIn>
  <AddIn Type="Command">
      <Assembly>C:\ProgramData\Autodesk\Revit\Addins\2020\AddInManager.dll</Assembly>
      <ClientId>83b1ba22-4e3c-4403-8fa5-4dd74ff7544a</ClientId>
      <FullClassName>AddInManager.CAddInManagerReadOnly</FullClassName>
      <Text>Add-In Manager (ReadOnly Mode)</Text>
      <VisibilityMode>AlwaysVisible</VisibilityMode>
      <LanguageType>Unknown</LanguageType>
      <VendorId>ADSK</VendorId>
      <VendorDescription>Autodesk, www.autodesk.com</VendorDescription>
  </AddIn>  
</RevitAddIns>

修改好addin檔案內文,將檔案放置如下位置即可新增Revit外掛。

放置完成開啟Revit後,即可在增益集 –> 外部工具中,看到新增的Add-In Manager外掛了。

上方提供連結的addin、dll檔案,是預設為Revit 2020、給本機所有使用者使用,可練習修改addin內文給Revit其他版本,或者特定使用者才能使用。

Add-In Manager的使用方式,我會在之後講解,主要功能是當撰寫好了dll檔,如何透過Add-In Manager來運作(點選這裡看最末段落說明),另一是透過 Add-In Manager 生成addin檔案(點選這裡看最末段落說明)。

2021-05-10 5 comments
0 FacebookPinterestLINEEmail
Revit API

【Revit API】02-Revit API-RevitLookup

by LuSir 2021-05-06

無論你是使用Revit API或Dynamo進行二次開發,RevitLookup都是你一定要會使用的工具。
在開始教學之前,先提供RevitLookup安裝檔給各位,讓大家節省繁雜的安裝動作,下載下來後,一直點選下一步到結束即可,我做的這個安裝檔會一次安裝好Revit 2015-2020版的RevitLookup與Add-In Manager,安裝檔請點選這裡。
如果想要RevitLookup的Source Code或原始安裝檔,可到jeremytammik的GitHub下載,請點選這裡。
安裝完成後,開啟Revit則可以在增益集看到RevitLookup的外掛按鈕。

RevitLookup一定要會的!

  • Snoop DB
  • Snoop Current Selection
  • Snoop Linked Element

會以上那幾個,90%想開發的資訊都可以找到了,首先 Snoop DB 是針對開啟的模型中所擁有的資訊,舉例BasePoint、Level、ProjectInfo、ViewFamilyType、ViewPlan… 可以看到所有屬性等資料。

接著這個 Snoop Current Selection 是查詢最常使用的,可針對單一或多選元件進行資料查詢,下圖我選取了屋頂與牆,可看到右方顯示各元件資訊,並且可再往下查詢各參數資料。

如果我們插入外部參考,例如連結rvt檔時,會發現當使用 Snoop Current Selection 只會看到RevitLinkInstance,若想找連結模型特定元件資訊時,此時可使用 Snoop Linked Element 查詢。

2021-05-06 1 comment
0 FacebookPinterestLINEEmail
Revit API

【Revit API】01-Revit API-前置作業與資源

by LuSir 2021-05-05

工欲善其事,必先利其器,在我們開始撰寫Revit API之前,需要先準備以下工具。

開始前準備

  • Revit (不同版本撰寫時可能會有不同的Method)
  • Visual Studio 2019 (上傳文章時目前的最新版本)
  • .NET Framework 4.7 以上
  • C# 程式基本能力

學習必備工具:SDK

  • Revit API Help
  • Getting Started with the Revit API
  • Revit Developer Center & SDK Samples
  • Revit API Docs

以上的工具,是學習Revit API與未來要查詢如何撰寫的重要資源,我在開始學習到現在,都還是常常在這些地方搜尋我所需要的知識。

開發必備工具:

  • RevitLookup
  • Add-In Manager
  • ILSpy、dnSpy (反組譯工具)

無論是使用Revit API抑或Dynamo二次開發,RevitLookup都是不可或缺的工具,針對RevitLookup基本所需要的功能與說明,可以點選這裡。

Add-In Manager是在Revit API開發中很重要的工具,主要是讓使用者可以將寫好的外掛直接套用,快速進行程式debug ,還有一個很重要的知識,是關於如何安裝、新增移除Revit外掛的細節,這些內容可以點選這裡看文章說明,讓各位清楚了解讓Revit運作外掛的方式。

反組譯工具有許多,ILSpy、dnSpy… 主要是來看dll檔內的程式碼,用來查看說明、結合Revit API Docs使用,可輔助Revit API二次開發。

2021-05-05 0 comments
0 FacebookPinterestLINEEmail
Revit API

【Revit API】00-Revit API 淺談

by LuSir 2021-04-28

在開始前,讓我們先來了解何謂API,API全名為(Application Programming Interface ),
稱為應用程式介面,舉例而言,當你要搭乘電梯上五樓快活時,你要去五樓,電梯可以運送你上去,
但你需要與電梯溝通,就是透過電梯內的按鈕,這個按鈕就如同API,讓你能與電梯溝通的橋樑。
所以當我們想要Revit可以進行我們要的動作時,會撰寫要執行運作的程式碼,製作成一個按鈕,
當你按下這個按鈕時,讓Revit幫你進行期望執行的動作。

為什麼要進行Revit二次開發?

  • 提高工作效率,減少重工的反覆動作
  • 擴展Revit不足的功能
  • 與其他系統的對接,匯出、匯入模型資訊,並轉換另一系統可辨識之格式等…

我想要進行Revit二次開發,可以有哪些選擇?

  • 巨集(C#、VB.NET、Ruby、Python)
  • Dynamo(Python)
  • Revit API (Visual C#、VB.NET)

巨集、 Dynamo與Revit API差異在哪裡?

巨集(Marco)其實也就等同於Revit API,只是它使用了Revit內建的介面,故我們在此就先不多著墨。
(對不起巨集,只用一句話就把你省略了… >O<)
大多數人都比較想知道,Dynamo與Revit API差異在哪裡?如果我要學習,該要選誰呢?
以我個人的認知,兩者並沒有誰特別的好壞,因為多數的開發外掛功能,兩者皆可達成。

真要比較的話,我認為最大的差異點是,Dynamo的優點在,擁有介面可在開發過程中即看到成果,
缺點在於運行的效果較差;Revit API的優點則是開發較不被受限(Ex. 與其他系統對接、開發介面等…),
運行效率較Dynamo快上數倍,缺點則是入門較Dynamo難入手,較難預先於開發中看到成果。

但其實Dynamo到了後期二次開發進階功能,依然是得熟悉Python語法,並且引用Revit API,所以要學習程式語言這回事,似乎也沒誰較難入手的差別,遲早得面對啊~~
我想對於二次開發這件事有個想法,那就是,只要能夠完成我們期望的結果,減少使用者的工時,提高工作效率,無論選擇何者二次開發,都是好方法!

個人經驗分享

最後,在此提供我的個人學習經驗給各位參考,開始的我並不會Revit,對程式語言也多年未接觸,
最開始的問題就是,我要選擇哪個語言入手二次開發?選擇Visual C#最主要的原因為,原廠所提供或網路上查詢等資源,多數都為 Visual C# ,可以讓學習的過程較容易找到支援。

問我為何沒選擇Dynamo,我得說當年在二次開發時Dynamo還沒有普及,所以我選擇了Visual C#,在Dynamo開始時我也去使用過,但因為許多想要開發的功能,後來還是都得引用Revit API的RevitAPI.dll與RevitAPIUI.dll(日後會開新文章說明),所以我最後還是選擇用Visual C#來開發。
近期Revit新增了許多功能,例如路徑分析需要耗費大量時間來運算,我慶幸當時是選擇Revit API,在現今需要大量數據運算結果時,可以減少許多運算時間。

接下來我會分享我在學習Revit API的過程中,透過哪些資源學習、遇到哪些問題、如何排除等經驗,希望對你在未來學習Revit API的路程中有所幫助,能縮短學習與排除問題的時間。

2021-04-28 0 comments
0 FacebookPinterestLINEEmail

近期文章

  • 2025 AI CAD 軟體趨勢|7 款最佳 AI CAD 軟體評測與推薦
  • 【Creo】35-用Creo11效能報告比較陣列
  • 【Creo】34-人體模型安裝使用
  • 【Creo】33-草繪尺寸無法編輯
  • 【Creo】32-Pro/E Wildfire與Creo的差異

近期留言

  1. 「假許」於〈【Creo】05-工程圖轉PDF設定線寬(table.pnt)〉發佈留言
  2. 「賴秀俞」於〈【Creo】05-工程圖轉PDF設定線寬(table.pnt)〉發佈留言
  3. 「Junjia」於〈【Creo】19-materials library材料庫下載〉發佈留言
  4. 「假許」於〈【Creo】18-輕鬆刪除舊版檔案,Purge大法〉發佈留言
  5. 「James」於〈【Creo】18-輕鬆刪除舊版檔案,Purge大法〉發佈留言

Keep in touch

Facebook Instagram Youtube Line

電子報

訂閱我的電子報,以獲得新的部落格文章、技巧。讓我們保持更新!

文章分類

  • Creo (37)
  • Revit API (6)
  • Trend (3)
  • 未分類 (1)

Copyright © 2024 - 假許起手式 Start-up joshups.com


Back To Top
假許起手式
  • 首頁
  • CREO
  • Revit API
  • 資源庫
  • 加入社群
  • 與我聯絡
  • 隱私權政策