こんにちは。
AMD labの松原です。
みなさんBIMはご存じでしょうか?
Building Information Modelingの略称で、
属性情報の入力された部材モデルを組み上げて、建物を設計していくプロセスのことです。
世界的には、Autodesk社が出しているRevitのシェアが大きいですが、
日本では、Graphisoft社のARCHICADがRevitとシェアを争っているという感じでしょうか。
今回から段階を追って、
RevitAPIを利用したアドインプログラムの作成方法を公開していこうと思います。
まずは、開発環境を作りましょう。
以下の3つをWindowsPCにインストールしていください。
◆Microsoft Visual Studio Express
マイクロソフト社のWebサイトよりダウンロードしてきます。
※Microsoft Visual Studio Communityの方をMicrosoftは推奨していますが、
利用者ライセンス条項で利用にはかなり制限があります。
Expressはライセンス条項に従うことで、個人ユーザー/組織ユーザーに関係なく、商用アプリなどの開発に利用できるので、こちらを使っておくのが無難です。
◆RevitSDK
Revitをインストールしたインストーラよりインストールが可能です。、
◇Revit Add-in Wizards
今回はゼロから作成するため必要ないですが、入れておいた方が便利です。
このキーワードで検索すると、某有名Revitブロガーのページがでてきますので、そのページからダウンロードしてください。
ダウンロード後、所定のフォルダに配置するとRevitアドイン開発のためのテンプレートが使えるようになります。
インストールを終えたら、Visual Studioを起動しましょう。
「スタートページ」の「開始」より、プロジェクトを開くか、メニューの「ファイル」より「新しいプロジェクト」を選択してください。
以下のようなウインドウが表示されるはずです。
Add-in Wizardsをインストールしている場合、
テンプレートの中にRevitのテンプレートが含まれているはずですが、
今回は、Revitアドインの仕組みを知るためにも、クラスライブラリのテンプレートから作成していきます。
クラスライブラリを選択し、アプリケーション名を付けて「OK」をおしてください。
一般的なC#(この記事はC#でコーディングしますが、VB.NETでも同様です。)のクラスが、自動作成されているはずです。
まずは、Revitアドインに必要なライブラリを取り込みましょう。
ソリューションエクスプローラーの参照設定を右クリックし、参照の追加をクリックします。
※VB.NETの場合は、プロジェクトをダブルクリックし、参照のページから追加が行えます。
「参照」ボタンをクリックし、Revitがインストールされているフォルダ(C:\Program Files\Autodesk\Revit 2017)内に入っている、以下の3つのファイルを追加してください。
・RevitAPI.dll
・RevitAPIUI.dll
・AdWindows.dll
参照設定に追加されていることを確認したら、
これらのライブラリを、名前空間へUsing ディレクティブを使い読み込みます。
これで、一通り準備は整いました。
早速、アプリケーション起動時にメッセージを表示するプログラムを書いてみましょう。
まずは、自動で付けられたファイル名とclass名を変えてしまいましょう。
class名は、できるだけユニークな名前を付けることが好ましいです。
そして、class名の後に”:IExternalApplication”と追記することで、
このclassにIExternalApplicationというインターフェースを実装します。
このインターフェースを実装したクラスにより、
Revitのアプリケーションとしての振る舞いに、様々な機能を追加することができます。
ここで、”:IExternalApplication”を右クリックで必要な関数を実そっ。。。
と、思ったら警告が出ていますね。
警告は要するに二つ。
どちらも、先ほど入れたライブラリが原因です。
▲プロジェクトに設定している対象の.NET Frameworkのバージョンが低い。
▲ライブラリが、32bitには対応してない。
警告を解決するため、Propertiesをダブルクリックしプロジェクトの情報を開きます。
「アプリケーション」を選択し、「対象のフレームワーク」を警告に表示されている通り、.NET Framework4.5.2へ変更します。
それから、「ビルド」を選択し、「プロットフォームターゲット」の値をx64へ変更します。
警告が無くなっているはずです。
改めて、アプリケーションのクラスファイルを表示し、”:IExternalApplication”を右クリック。
「インターフェースの実装」→「インターフェースの実装」をクリックし
OnStartupとOnShutdownの関数を、このクラスへ追加します。
これらの関数は、
OnStartupがRevit起動時に呼び出される関数、
OnShutdownがRevit終了時に呼び出される関数です。
インターフェース実装時は、どちらも
throw new NotImplementedException()関数が入っており、例外が投げられてしまう状態になっているので、それらを消去して、下の図のようにResultの列挙子を返すよう書き換えましょう。
OnStartup関数へは、以下の3行を加えてください。
1 2 3 4 5 6 7 8 |
//TaskDialogインスタンスを作成、コンストラクタにはタイトルを代入 TaskDialog dialog = new TaskDialog("Welcome To Revit"); //ダイアログの内容を代入 dialog.MainContent = "I am AMDTools"; //ダイアログの表示 dialog.Show(); |
これで、プログラム自体は完成です。
「F7」を押してビルドしておきましょう。
特に、ビルド先の設定をしていないのであれば、[プロジェクトフォルダ]\bin\Debug\の中に、コンパイルされたdllファイルができているはずです。
次に、このプログラムをRevitが読みに行くため、マニフェストファイルを作成します。
メニューから「プロジェクト」→「新しい項目の追加」をクリックしてください。
そして、一覧の中からXMLファイルを選択します。
XMLを選択はしましたが、ファイル形式を「.addin」と付け直して「追加」ボタンをクリックしてください。
記述は以下のサンプルを真似して書いてください。
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="utf-8" ?> <RevitAddIns> <AddIn Type="Application"> <Name>AMDTools</Name> <!--アプリケーション名を記述します。--> <Assembly>AMDTools.dll</Assembly> <!--アドインファイルの名前を記述します。--> <FullClassName>AMDTools.AMDApp</FullClassName> <!--コーディングした外部アプリケーションクラスの名前を記述します。--> <ClientId>13e83f24-ea4c-4b6d-960f-a91c8b3393b2</ClientId> <!--GUIDを作成して記述します。--> <VendorId>AMD_</VendorId> <!--3文字 + アンダーバーのVendeorIDを記述します。--> <VendorDescription>AMD lab, http://www.amdlaboratory.com</VendorDescription> <!--ベンダー情報を記述します。(ベンダー名,WebサイトURL)--> </AddIn> </RevitAddIns> |
GUIDの作成方法ですが、Visual Studioのメニューバーから「ツール」→「GUIDの作成」をクリックすると、GUIDを作成するためのウインドウが表示されます。
このツールで生成したGUIDをコピーして、CliendIDのところへ記入してください。
以上で、コーディングはすべて終了です。
先ほどビルドして作成したdllファイルと、今、書き上げたaddinファイルを
①自分だけ使えるようにする場合は
%APPDATA%\Roaming\Autodesk\Revit\Addins\2017へ
②そのPCの全てのユーザーが使えるようにする場合は
C:\ProgramData\Autodesk\Revit\Addins\2017へコピーします。
これで、Revitのアドインのインストールが完了しました。
Revitを起動してください。
Revitの起動すると、まずは下の図のようなメッセージが表示されます。
証明書を取得してプログラムを作成すれば出てこないのですが、その方法はまた後日。
今回は、「常にロード」をクリックしましょう。
ここで、やっと外部アプリケーションのアプリが作動します。
タスクダイアログは表示されましたか?
COMMENTS