Revit API 入門 その3

Revit API のトレーニングをする際など、これからAdd-inを作成しようとしている方に対して、私が必ずお勧めするいくつかのツールがあります。以下がそれらです:

  • Revit Lookup
  • Add-In Manager
  • RevitAPIDllsPathUpdater.exe 
  • SDKSamples2013.sln
  • RvtSamples

今日は、これらのうち、最初の2つについて説明したいと思います。

その前に、まだ、外部コマンドで Hello World を作成した経験がない方は、まずは、前回お話した、Wiki Help やトレーニングの教材を見ていただき、最小のRevit の外部コマンドを作成してみてください。(まだ、これからというかたは、例えば、Wiki Helpにある、Hello World C# あるいはVB.NETの例をみて試していただくとよいでしょう。)それによって、RevitAPI.dll やRevitAPIUI.dll、.NETのクラスライブラリ、.addin マニフェストの意味を理解していただき、そのあと、ここでお話しするツールを見ていただくと、ツールのインストール方法もわかるはずです。

Revit Lookup

Revitのデータベース構造を”のぞき見”することができるツールです。ツールそのものがRevit APIで書かれてあるので、もしも、Revit Lookupで内部データを確認できるようであれば、APIでアクセスすることが可能です。学習用としてもデバッグ用としても、Revit APIのプログラマのためのなくてはならないツールです。このツールはRevit SDKのRevitLookupフォルダにあります。C#で書かれたプロジェクトです。Hello Worldと同様の方法で、RevitAPI.dll、RevitAPIUI.dllを参照、ビルドし、.addinマニフェストを実際のDllのロケーションに合わせて修正し、Revitにセットアップします。

以下にLookupツールのメニューと壁要素をひとつ選択した例をとって、Revit Lookupで内部データを見た例を示します。

Revit Lookupのメニュー:

Screenshot of a drop-down menu in Revit, showing options including 'Hello World...', 'Snoop DB...', 'Snoop Current Selection...', 'Snoop Application...', 'Test Framework...', and 'Events...'.

壁要素を選択した例:

Snoop Objects interface displaying details for a wall element, including name, ID, object type, geometry, and various parameters related to the wall's characteristics.

太字で表示されている部分をクリックすると、さらに深くそのデータを「掘り込んで」いくことができます。以下が、Parameters をさらに詳しく見ていった例です:

Screenshot of Snoop Parameters interface displaying various fields and values related to area measurements, including display unit type, storage type, and a specific value in square meters.

Add-in Manager

Revit APIで開発を始めたばかりの方がよく言われるのは、「.addinマニフェストを作成するのが面倒」ということです。確かにAutoCADですと、NETLOAD コマンドで、ロードでき、わざわざ、マニフェストファイルを作成する必要がありません。AutoCADでなれていらっしゃる方は特にそう思われるかもしれません。

あと、もうひとつはアンロードの問題です。これはAutoCADでも同じですが、.NET のアップリーケーションはアンロードが簡単にできないようになっています。これはマイクロソフトの仕様です。コードをビルド、Revitを立ち上げ、デバッグ。再度コードを修正してテストをしなおすとなると、再度Revitを立ち上げるとこになりますが、これが意外と時間がかかってしまうので、Revitを再起動しないでDebugを繰り返す方法はないのかという質問をよく受けます。

Add-In Manager はそういった要望のあるかたに便利なツールです。アドインをマニフェストで登録せずにコマンドを実行することができ、またRevitを実行している間に、DLLをアンロードロードすることが可能です。(ただし、Revitがすでにたちあがっているため、Revitのスタートアップで何かをするといったようなアプリケーションのデバッグは当然Revitを再度立ち上げる必要があります。)

このツールはRevit Lookup ツールと同じくSDKのAdd-In Managerフォルダにあります。MSIとして用意されていますので、単にダブルクリックしてインストールするだけです。ソースコードは提供されていません。インストールすると、以下のようなメニューが外部ツールボタンに追加されます:

User interface showing a dropdown menu for 'External Tools' with options for different Add-In Manager modes: Manual Mode, Faceless Manual Mode, ReadOnly Mode, and Automatic Mode.

コマンドのトランザクションモードの種類によってマニュアル、読み込み専用、自動が用意されています。作成しているコマンドのモードに応じてそれらから選択します。Facelessの意味はUIなしで、前回使用したコマンドが実行されます。以下にダイアログの使用例を示します:

Screenshot of the Add-In Manager 2013 interface showing loaded commands and applications, including FireRating.dll and various Revit SDK samples.

私もサポートの際によく使用します。ぜひ試してみてください。

原田

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading