この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:T
更新日時:2020-05-05 19:54:37

タイトル: アドインの作成サンプル(外部ツール編)
SEOタイトル: 【Revit API】アドインの作成サンプル(外部ツール編)

前提

Visual Studioをインストール済み

Revitをインストール済み (今回使用するバージョンは2021)

今回はC#を例に簡単なアドインを作成する(Hello Worldをダイアログで表示させるアドイン)

 

プロジェクトの作成

Visual Studioでプロジェクトを新規作成する。

C#を使えるクラスライブラリを選択する。

※入力フォームなどの画面UIを作成する場合は「.NET Framework」を使用すること

プロジェクト名は「CsSampleProject」とする。

 

以下のファイルが自動で作成される。

Class1.cs
using System;

namespace CsSampleProject
{
    public class Class1
    {
    }
}

 

 

DLLの参照

作ったプロジェクトがRevit APIのDLLを参照するように設定する。

参照方法は以下の記事を参照。

https://jpn.itlibra.com/article?id=21487

 

実装

最初に作られたクラスに以下の記述をする。

Class1.cs

using System;
using Autodesk.Revit.UI;
using Autodesk.Revit.DB;

namespace CsSampleProject
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class Class1:
IExternalCommand
    {
        public Autodesk.Revit.UI.Result
Execute(ExternalCommandData revit,
            ref string message, ElementSet elements)
        {
            TaskDialog.Show("Revit", "Hello World");
            return Autodesk.Revit.UI.Result.Succeeded;
        
}

 

ビルド

ビルド」→「ソリューションのビルド」を選択する。

ビルドエラーが無いかコンソールで確認すること。

ビルドしたdllファイルの出力先はコンソール上に表示される。

dllは最終的には後述するマニフェストファイルと同じパスに保存することを推奨する。

 

マニフェストファイルの作成

以下のようなマニフェストファイルを作成します。

CsSampleProject.addin

<RevitAddIns>

    <AddIn Type="Command">

        <Text>SampleAddin</Text>

        <Description>アドインの説明</Description>

    <Assembly>C:\ ... \CsSampleProject.dll</Assembly>

        <FullClassName>CsSampleProject.Class1</FullClassName>

        <ClientId>3B1635B8-FAE7-4E07-A2B3-6EC7B8AEF57E</ClientId>

        <VendorId>会社名</VendorId>

        <VendorDescription>会社説明</VendorDescription>

    </AddIn>

</RevitAddIns>

※Assemlyはddlの出力先を指定する。

マニフェストファイルの詳細な定義方法は以下の記事を参照。

https://jpn.itlibra.com/article?id=21489

 

マニフェストファイルの設置

以下の記事を参照。

https://jpn.itlibra.com/article?id=21488

 

外部ツールの実行

Revitを再起動する。

アドイン」タブを押す。

外部ツール」から追加した外部ツールを選択する。

Hello Worldのダイアログが表示されればOK。