概要
Revitのアドイン開発に役に立つサイトやページをまとめました。
私はRevitアドイン開発の初心者で、プログラムを通じて図面に直接触れた経験はほとんどありません。また、アドイン開発を通じてでも直接Revitの仕様に関わるようなコアな部分に触れることはあまりありません。それでも時々Revit APIの仕様の把握が必要な場面があり、その際にRevit関連の情報収集に少し苦労しています。
そこで、自分を含めこれからRevitアドイン開発を始める人や少し関わる可能性のある人にとって、抑えていて損はなさそうな有用な情報が記載されているサイトをまとめてみました。
※掲載しているURLのページには少し古い情報もありますが、初学者にとってはとても役に立つと思うので掲載しています。
目次
Revit APIに関して解説しているページ
- Revitアドイン基礎
- Revitアドイン応用~具体例
- AutoCAD アドオン開発者のためのRevit API入門~概説
- AutoCAD アドオン開発者のためのRevit API入門~アドイン
- AutoCAD アドオン開発者のためのRevit API入門~アクセス
Revit APIの仕様に関するドキュメント関連
アドイン開発に役立ちそうなツール
押さえておいたほうが良さそうな知識
- Revit APIの呼出し方法
- ジャーナルファイル
- 拡張ストレージ
- Revit起動時、終了時の処理の実装
- ユーザーの操作に合わせて特定の処理を実行
- ポストコマンド
- 外部コマンド、外部アプリケーション
- 外部アプリケーションを実行するためのボタンの種類
- 外部イベント
そのほか役に立つサイト
Revit APIに関して解説しているページ
Revitアドイン基礎
Revitの歴史や開発環境がまとめられています。
また、開発を進めるにあたって必要な「外部コマンド」「外部アプリケーション」「アドインファイル」についてもまとめられています。
Revitアドイン応用~具体例
一つ前のURLの応用編です。
「スレッド」や「トランザクション」等、こちらも開発を進めるにあたって必要となる情報がまとめられています。
AutoCAD アドオン開発者のためのRevit API入門~概説
「AutoCAD アドオン開発者のための」とありますが、AutoCAD アドオンの開発経験がなくても役に立つ情報が沢山記載されているので、こちらも目を通しておくことをオススメします。
AutoCAD アドオン開発者のためのRevit API入門~アドイン
一つ上のページの続きです。
「外部コマンド」や「外部アプリケーション」等、アドインに関する情報が記載されています。
AutoCAD アドオン開発者のためのRevit API入門~アクセス
Revit APIを使用して、Revitのデータにアクセス方法が記載されています。
Revit APIの仕様に関するドキュメント関連
Revit API 開発者用ガイド
Revit APIの概要や、使用方法について説明しているページです。
Revit API Docs
RevitAPIのオンラインドキュメントです。
RevitAPI内のクラス名やメソッド名で検索すると、それに関する仕様が表示されます。
RevitAPIで気になるクラス名やメソッド名があった場合、このドキュメントを使用して仕様を確認することができます。
アドイン開発に役立ちそうなツール
Revit Lookup
このツールを使用すると、Revitのプロジェクトファイルやファミリ ファイルにある色々な要素の情報を確認できます。
後述する「拡張ストレージ」の構成や保存内容も、このツールを使用して確認できます。
以下からダウンロードできます。
押さえておいたほうが良さそうな知識
基本的に Revit APIに関して解説しているページに記載されている知識が多いです。
Revit APIの呼出し方法
Revit API は、単一スレッドのアクセスのみサポートしています。
なので、Revit APIを呼び出す際は、メイン スレッドで実行する必要があります。
参考URL
Revit 開発者用ガイド 配置オプション
ジャーナルファイル
Revitの起動から終了したタイミングまでのRevit上の操作を記録したファイルです。
参考URL
Revit 開発者用ガイド ジャーナルファイルについて
Autodesk Support Revit ジャーナル ファイルの場所
拡張ストレージ
Revitのファイルにアドイン関連のデータなどを保存したい場合に使用します。
参考URL
Revit 開発者用ガイド 拡張ストレージ
Revit起動時、終了時の処理の実装
インターフェース「IExternalApplication」を実装して使用します。
「IExternalApplication」には2つの抽象メソッド「OnStartup」「OnShutdown」があります。
Revit起動時にはOnStartup()が、終了時にはOnShutdown()が呼び出されます。
OnStartup()では設定ファイルの読み込みのような、最初に最初に行っておきたい初期処理を書くと便利です。
また私の所属していたプロジェクトでは、アドインを起動するためのボタンの作成処理も、このOnstartup()の中で行っていました。
参考URL
Revit 開発者用ガイド 外部アプリケーション
RevitAPI屋さん RevitAPIのプログラムをタブ・リボン・ボタンでアドイン化
ユーザーの操作に合わせて特定の処理を実行
ユーザーが特定の操作を実行しようとするときや、実行された直後に特定の処理を行いたい場合のため、Revit APIには様々なイベントが定義されています。
どのようなイベントがあるか、イベントの登録、キャンセル方法は下記の参考URLから確認できます。
参考URL
Revit 開発者用ガイド イベント
ポストコマンド
PostCommand()を使用することで、ユーザーがアドインのボタンを押したのと同じように、
外部アドインをコードからも実行できます。
また、Revitのネイティブなコマンドも実行できます。
CommandIDを引数に指定してポストします。
ポストした後に実際に実行されるタイミングは、Revitの制御がAPIから戻ったときです。
参考URL
Revit 開発者用ガイド コマンド
AutoCAD DevBlog Revit 2014 API の新機能
※上記URLの真ん中あたりのPostCommand記載部分
補足
ポストコマンドの終了を検出して、ポストコマンド後に後続処理を実行したい場合は、下記のURLを参考にしてください。
外部コマンド、外部アプリケーション
アドインを用いて作成できるコマンドのことです。
このコマンドをユーザーが実行することにより、アドインの処理を走らせることができます。
参考URL
Revit 開発者用ガイド 配置オプション
外部アプリケーションを実行するためのボタンの種類
外部アプリケーションを実行するためのボタンには種類が色々とあります。
「Button」「PulldownButton」「SplitButton」等…
色々な種類のボタンを知っておくと、UIの幅も広がります。
参考URL
Revit 開発者用ガイド リボン パネルとコントロール
外部イベント
外部のスレッドとRevit APIの間の通信はすべて、アイドリングイベントもしくは外部イベントのハンドラ内で行われる必要があります。
外部イベントを使用すると、Revitが入力を受け入れる準備ができたときにRevit APIに関する処理の実行できます。
インターフェース「IExternalEventHandler」を実装したクラスを用意し、
Execute()にコールバックメソッド (Revit APIに関する処理) を渡す形になります。
ExternalEvent.Raise()を呼び出すと、その後Revitが入力を受け入れる準備ができたときに、 IExternalEventHandler.Execute()メソッドが呼び出されます。
参考URL
Revit 開発者用ガイド 外部イベント
そのほか役に立つサイト
The Building Coder
Autodeskのエンジニアのブログです。
RevitAPIに関する情報の記事が多く載せられています。
RevitAPI屋さん コピペで使えるコード集
Revitアドイン開発者がRevit APIのコード集を掲載しているサイトです。
Technology Perspective from Japan
オートデスク株式会社のブログです。
Revitに関する情報も掲載されています。