ページの作成

ページの作成

親となるページを選択してください。

ページは必ず何かしらの親ページに紐づきます。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球

子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール

親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレートを更新

5. 【Revit API】アドインの作成サンプル(外部アプリケーション編)

前提

Visual Studioをインストール済み

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

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

 

プロジェクトの作成

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

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

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

 

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

Class1.cs
using System;

namespace CsSampleProject
{
    public class Class1
    {
    }
}

 

 

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

その場合、そのままではビルドが成功しないので、「プロジェクトを右クリック」→「プロパティ」→「アプリケーション」タブ にある「出力の種類」を「クラス ライブラリ」に変更する。

 

DLLの参照

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

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

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

 

実装

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

Class1.cs

using System;
using System.Reflection;

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

namespace CsSampleProject
{
    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]

    public class CsHelloWorld : IExternalApplication
    {
        public Result
OnStartup(UIControlledApplication application)
        {
            RibbonPanel ribbonPanel = application.CreateRibbonPanel("NewRibbonPanel");

            string thisAssemblyPath = Assembly.GetExecutingAssembly().Location;
            PushButtonData buttonData = new PushButtonData("cmdHelloWorld",
               "Hello World", thisAssemblyPath, "CsSampleProject.HelloWorld");

            PushButton pushButton = ribbonPanel.AddItem(buttonData) as PushButton;

            pushButton.ToolTip = "Say hello to the entire world.";

            return Result.Succeeded;
        }

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

    [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes.TransactionMode.Manual)]
    public class HelloWorld :
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;
        }
    }

}

IExternalApplicationを継承したクラスはOnStartupOnShutdownメソッドを実装する。それぞれRevitの起動時と終了時に呼び出される処理を定義する。

IExternalCommandを継承クラスはExecuteメソッドを実装する。これはボタンを押された際の処理を定義する。

 

ビルド

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

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

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

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

 

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

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

CsSampleProject.addin

<RevitAddIns>

    <AddIn Type="Application">

        <Name>SampleAddin</Name>

        <Assembly>CsSampleProject.dll</Assembly>

        <FullClassName>CsSampleProject.CsHelloWorld</FullClassName>

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

        <VendorId>会社名</VendorId>

        <VendorDescription>会社説明</VendorDescr
iption>

    </AddIn>

</RevitAddIns>

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

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

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

 

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

以下の記事を参照。

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

 

外部アプリケーションの起動

Revitを再起動する。

アドイン」タブを選択して、追加されたアプリを選択する。

Hello Worldのダイアログが出現すればOK。

 

 

 

子ページ
子ページはありません
同階層のページ
  1. RevitAPI.dll と RevitAPIUI.dll の参照
  2. マニフェストファイルの書き方
  3. アドインの追加/設置方法
  4. アドインの作成サンプル(外部ツール編)
  5. アドインの作成サンプル(外部アプリケーション編)
  6. 要素の取得と情報の表示
  7. 要素のカテゴリとマテリアルの取得と表示
  8. よく使うBuiltInCategoryの一覧
  9. 外部ツールでAutodesk.Revit.Documentを取得する方法
  10. エラーメッセージの設定方法
  11. 「はい」、「いいえ」、「キャンセル」ボタンの設置と処理分岐
  12. 要素(カテゴリ、ファミリ、タイプ)とは
  13. ElementId とUniqueId の違い
  14. 要素フィルターの使い方
  15. 要素のパラメータ一覧の取得
  16. pyRevitの導入と簡単なアプリケーションの作成
  17. Revit SDKのサンプルの場所とビルド方法
  18. FamilySymbol(タイプ)の取得とパラメータの変更
  19. 相対パスでdllにアイコン画像を埋め込む方法

最近の質問

コメント一覧

    No.2 | guest | 2020-05-21 16:48:27

    Hi to every single one, it's really a good for me to pay a visit this web page, it consists of important Information. http://uricasino114.com

    No.1 | guest | 2020-05-17 16:39:26

    Hi there, i read your blog from time to time and i own a similar one and i was just wondering if you get a lot of spam remarks? If so how do you protect against it, any plugin or anything you can recommend? I get so much lately it's driving me mad so any support is very much appreciated. It is the best time to make some plans for the future and it is time to be happy. I've learn this publish and if I may just I want to suggest you some interesting things or suggestions. Perhaps you could write next articles regarding this article. I want to learn even more issues approximately it! Hi would you mind letting me know which webhost you're utilizing? I've loaded your blog in 3 completely different internet browsers and I must say this blog loads a lot faster then most. Can you suggest a good hosting provider at a fair price? Kudos, I appreciate it! http://nissan.com/