Revit二次開發,新手接入Revit接口,如何使用它們

1.首先安裝好Revit,至於版本是哪個關係不大。具體怎麼安裝,就不囉嗦了。安裝完成後,桌面會有類似這樣的圖標:

Revit二次開發,新手接入Revit接口,如何使用它們

Revit二次開發,新手接入Revit接口,如何使用它們

上圖是Revit2020和2019的圖標,我自己的電腦是安裝了兩個版本的Revit。

2.找到安裝目錄下的兩個dll文件,你可以把它copy出來,或者直接在C#工程項目中引用它:

Revit二次開發,新手接入Revit接口,如何使用它們

3.新建一個C#新項目,我們以.net standard類庫進行創建,然後編寫一個類實現IExternalCommand接口

<code>using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using System;

namespace UseIExternalCommand
{
    /// 
    /// 演示類
    /// 
    /// marc
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    [Autodesk.Revit.Attributes.Regeneration(Autodesk.Revit.Attributes.RegenerationOption.Manual)]
    [Autodesk.Revit.Attributes.Journaling(Autodesk.Revit.Attributes.JournalingMode.NoCommandData)]
    public class Helloworld : IExternalCommand
    {
        /// 
        /// 執行指令
        /// 
        /// 
        /// 
        /// 
        /// 
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            using (Transaction tran = new Transaction(commandData.Application.ActiveUIDocument.Document, Guid.NewGuid().ToString()))
            {
                tran.Start();

                TaskDialog.Show("提示", "工程名:" + commandData.Application.ActiveUIDocument.Document.ProjectInformation.Name);

                tran.Commit();
            }

            return Result.Succeeded;
        }
    }
}
/<code>

4.編譯後,將生成bin目錄,我們把bin目錄的路徑copy到下圖中:

Revit二次開發,新手接入Revit接口,如何使用它們

Revit二次開發,新手接入Revit接口,如何使用它們

選擇外部工具下的Add-In Manager(Manual Mode),如果你沒有外部工具,那麼你可以先找一下其它文章,先讓Revit把這個插件裝上。至於為什麼會選擇第一項Add-In Manager(Manual Mode),這個是在代碼中定義的:

Revit二次開發,新手接入Revit接口,如何使用它們

5.好,下面將bin目錄的地址copy進去 :

Revit二次開發,新手接入Revit接口,如何使用它們

點擊“Load"按鈕,然後選擇bin目錄下的編譯好的項目dll文件。然後截入得到下面的效果:

Revit二次開發,新手接入Revit接口,如何使用它們

6.選中剛剛載入的helloworld,進行點擊"Run"的按鈕,運行它:

Revit二次開發,新手接入Revit接口,如何使用它們

7.如此便可完成Revit的IExternalCommand擴展入門。



除了IExternalCommand外,還有一個相應的叫IExternalApplication,二者的區別在於:

IExternalCommand:是用來執行具體的命令任務的,是執行者。如客戶拿著一個菜單跟你說要來份炒粉,那麼炒粉這個事情,就你來做。

IExternalApplication:是界面相關,主要用途是顯示菜單。如客戶拿著一個菜單跟你說要來份炒粉,那麼菜單上有什麼可以選的,那麼這個菜單就是用IExternalApplication來做的。他不做具體的炒粉動作,只負責告訴客戶,我有炒粉這道菜,你可以選擇。

Revit二次開發,新手接入Revit接口,如何使用它們

如果你實現了IExternalApplication,那麼就可以類似上圖紅圈一樣,在面板上任意加上你起的名字的菜單 。當點擊這個菜單 的時候 ,會自動執行IExternalCommand這個動作。

IExternalApplication是與IExternalCommand關聯的,你指定一個菜單的時候,必須告訴Revit點擊這個菜單的時候 ,要啟動哪個動作(IExternalCommand)。

8.IExternalApplication接口,他的使用時機是在Revit啟動時進行初始化加載,關閉Revit的時候進行資源卸載。

<code>namespace Autodesk.Revit.UI
{
    public interface IExternalApplication
    {
        Result OnShutdown(UIControlledApplication application);
        Result OnStartup(UIControlledApplication application);
    }
}/<code>

OnShutdown:在Revit這個軟件關閉時被調用。

OnStartup:在Revit這個軟件打開並初始化時被調用,軟件打開後,不論你再新建幾個Revit工程項目,都不會再第2次執行此方法。

9.介紹.addin文件。

上述操作是在外部工具中加載的。正常一個插件開發出來後,使用者,即我們的用戶,他們是不會去用“外部工具”的,所以,我們需要配置一份執行指令以及菜單的.addin文件,具體這個文件的內容,讀者可以參考其它文章。

<code>

	
		UseIExternalCommand.dll
		ac97eb33-31cb-434e-a496-d1c5dd079681
		UseIExternalCommand.Helloworld
		你好世界
		Revit二次開發入門。
		AlwaysVisible
		ADSK
		Autodesk, www.autodesk.com
	
	
		菜單
		UseIExternalCommand.dll
		9db84df0-b5b6-4ffb-ad16-a5c607f5624a
		UseIExternalCommand.Menu
		ADSK
	
/<code> 

10.如上面所示,一個帶有執行指令IExternalCommand和菜單功能IExternalApplication的.addin文件就是這樣,此時,重新打開Revit軟件,將出現如下效果

Revit二次開發,新手接入Revit接口,如何使用它們

菜單叫什麼名字,是我們在IExternalApplication文件中定義的,具體代碼,請參看源碼即可。

至於點擊“世界”這個菜單按鈕,為什麼會執行我們的IExternalCommand指令?也是在IExternalApplication中寫好的,所以他才觸發執行這個指令。


源碼下載

下載地址:https://download.csdn.net/download/mazhiyuan1981/12875400


分享到:


相關文章: