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

Learning

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

近期文章

  • 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
  • 資源庫
  • 加入社群
  • 與我聯絡
  • 隱私權政策