タイトル: 開発環境構築(Visual Studio + .addin マニフェスト)
SEOタイトル: Revit API 開発環境構築|Visual Studio・RevitAPI.dll参照・.addinマニフェスト・配置先
| この記事の要点 |
|
Revit API を使ったアドイン開発の第一歩は、ビルド環境とアドインの登録(マニフェスト)を整えることです。本記事では Visual Studio のセットアップから配置までを解説します。続けて API概要 も参照してください。
Visual Studio とプロジェクトの作成
開発には Visual Studio(Community エディションで可)を使います。新規プロジェクトで「クラスライブラリ(C#)」を選び、出力が DLL になるようにします。Revit アドインは実行ファイル(.exe)ではなく、Revit からロードされる DLL である点が特徴です。
.NET のターゲットフレームワークは Revit のバージョンに合わせます。Revit 2025 以降は .NET 8、Revit 2022〜2024 は .NET Framework 4.8 が対象です。バージョン不一致はロード失敗の典型原因なので、最初に確認します。
RevitAPI.dll / RevitAPIUI.dll の参照
API を呼び出すには、Revit インストールフォルダ(例: C:\Program Files\Autodesk\Revit 20xx)にある2つのアセンブリを参照に追加します。
RevitAPI.dll: データベース層(Autodesk.Revit.DB)。要素・パラメータ・ジオメトリなどモデル操作の中心。RevitAPIUI.dll: UI 層(Autodesk.Revit.UI)。外部コマンド・リボン・ダイアログなど画面操作。
重要なのは、追加した参照のプロパティで「ローカルにコピー(Copy Local)」を false にすることです。これらの DLL は Revit 本体が提供するため、アドインと一緒に配布する必要はなく、true のままだとバージョン衝突や肥大化の原因になります。
.addin マニフェスト(XML)
ビルドした DLL を Revit に認識させるのが .addin マニフェストファイルです。これは XML 形式で、外部コマンド/外部アプリの種別、DLL のパス、エントリとなるクラスの完全修飾名、アドインの GUID などを記述します。外部コマンドを登録する例は次の通りです(タグを文字として示しています)。
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Name>MyFirstCommand</Name>
<Assembly>C:\Addins\MyAddin\MyAddin.dll</Assembly>
<FullClassName>MyAddin.HelloWorldCommand</FullClassName>
<AddInId>8A4D1C6E-5F2B-4C7A-9E3D-1F2A3B4C5D6E</AddInId>
<VendorId>EXMP</VendorId>
<VendorDescription>Example Co.</VendorDescription>
</AddIn>
</RevitAddIns>
主な要素の意味は以下の通りです。
- Type 属性:
Command(外部コマンド)またはApplication(外部アプリ)。種別でロードのタイミングが変わる。 - Assembly: DLL の絶対パス。Addins フォルダからの相対パスでも指定できる。
- FullClassName: エントリクラスの完全修飾名(名前空間.クラス名)。これが間違うとロードできない。
- AddInId: アドインを一意に識別する GUID。プロジェクトごとに新規生成し、使い回さない。
配置先 Addins フォルダ
マニフェストと DLL は、Revit が起動時に走査する「Addins フォルダ」に配置します。代表的なパスは次の2系統です。
- 全ユーザー向け:
C:\ProgramData\Autodesk\Revit\Addins\20xx\ - 個人ユーザー向け:
%APPDATA%\Autodesk\Revit\Addins\20xx\
20xx は Revit のバージョン番号です。ここに .addin を置き、Assembly で指定したパスに DLL があれば、Revit 起動時に自動で読み込まれます。開発中はビルド後イベントで DLL とマニフェストをこのフォルダへコピーする設定にしておくと、反復が楽になります。