Revit API 概要
Revit API は、Revit のモデルをプログラムから操作するためのオブジェクト指向 API です。何ができて、どんな構造になっているのか。開発時に必ず押さえておきたい勘所を、全体像から整理します。
この記事の要点
- API は 2 つの名前空間に大別される。モデル操作の
Autodesk.Revit.DBと UI 操作のAutodesk.Revit.UI - 主要オブジェクトは Application・Document・Element の階層になっている
- 処理の入口は
IExternalCommand(ボタン実行型)とIExternalApplication(起動時常駐型) - モデル変更は必ずトランザクション内で行う。内部単位は「フィート」固定
この記事は Revit カテゴリの一部です。API の全体像を押さえると、個々の機能の位置づけが理解しやすくなります。環境準備は 開発環境構築、要素の取り出しは 要素の取得とフィルタ を参照してください。
12 つの名前空間:DB と UI
Revit API は大きく 2 つの名前空間に分かれます。「モデルそのものを触るなら DB、ユーザーや画面に関わるなら UI」と覚えると整理しやすいです。
- Element・Wall・Parameter
- FilteredElementCollector
- Transaction など、モデル本体を扱うクラス群
- IExternalCommand
- UIApplication・UIDocument
- TaskDialog・RibbonPanel など、対話を扱うクラス群
2Application / Document / Element の階層
API の主要オブジェクトは、大きいものから小さいものへと階層構造になっています。
Revit セッション全体を表す(Autodesk.Revit.ApplicationServices.Application)。UI 側の入口は UIApplication。
開いている 1 つのモデル(.rvt)。要素の追加・編集・取得はすべて Document を起点に行う。UI 側は UIDocument。
壁・床・ファミリインスタンスなど個々の要素。すべての要素は ElementId で一意に識別される。
外部コマンドでは、引数の ExternalCommandData から UIApplication → UIDocument → Document とたどって、対象モデルにアクセスします。
3IExternalCommand と IExternalApplication
アドインのエントリポイントは、用途に応じて次の 2 つのインターフェースを実装します。詳しい使い分けは 外部コマンド/アプリ を参照してください。
- ボタンクリックなどで 1 回実行される処理
Executeメソッドを実装- 戻り値に
Result.Succeeded/Failed/Cancelledを返す
- Revit 起動時にロードされ常駐
OnStartupでリボン UI 構築やイベント購読OnShutdownで後始末
最小限の外部コマンドは次のように書きます。
using Autodesk.Revit.DB;
using Autodesk.Revit.UI;
using Autodesk.Revit.Attributes;
[Transaction(TransactionMode.Manual)]
public class HelloWorldCommand : IExternalCommand
{
public Result Execute(ExternalCommandData commandData,
ref string message, ElementSet elements)
{
UIDocument uidoc = commandData.Application.ActiveUIDocument;
Document doc = uidoc.Document;
TaskDialog.Show("Hello", "ドキュメント: " + doc.Title);
return Result.Succeeded;
}
}
[Transaction(TransactionMode.Manual)] 属性は必須で、モデル変更時のトランザクション管理方式を宣言します。
4トランザクション必須と内部単位
API を使ううえで、初めて触れる人が必ずつまずく 2 点を先に押さえておきます。この 2 つを理解しておくと「変更できない」「数値が異常」といった典型的なハマりを避けられます。
要素作成・パラメータ設定・削除などモデルを変更する操作は、必ず
Transaction の Start〜Commit で囲む。トランザクション外で変更しようとすると例外になる。詳細は トランザクションと要素編集 を参照長さの内部値は表示単位(mm など)に関わらず常に「フィート」。座標や寸法を入出力する際は
UnitUtils.ConvertToInternalUnits / ConvertFromInternalUnits で変換する全体像でつかむ Revit API
Revit API は一見クラスが膨大ですが、構造はシンプルです。DB と UI の 2 名前空間に分かれ、Application → Document → Element の階層でモデルにたどり着き、IExternalCommand / IExternalApplication という 2 つの入口から処理が始まる——この骨格さえ掴めば、個々のクラスは「どの層・どの段階のものか」で位置づけられます。
次は実際に要素を集めてみましょう。要素の取得とフィルタ で FilteredElementCollector の使い方を学ぶと、API でできることが具体的に見えてきます。
→次に読む
実際にアドインを書く手順はRevit API の記事一覧(20件)にまとまっています。アドインの追加/設置方法から読むと動くものが早く手に入ります。
子ページはありません
- Revitとは
- ファミリ(システム/ロード/インプレイス)
- カテゴリ・タイプ・インスタンス
- パラメータ(プロジェクト/共有/グローバル/ファミリ)
- レベルと通り芯
- ビューとビューテンプレート
- シートと図面化
- スケジュール表(集計表)
- ワークシェアリングと中心ファイル
- フェーズとデザインオプション
- リンクと座標連携
- Dynamo入門
- 開発環境構築(Visual Studio + .addin マニフェスト)
- Revit API 概要
- Revit API:要素の取得とフィルタ
- Revit API:トランザクションと要素編集
- Revit API:外部コマンド/アプリ
- 共有パラメータの作り方と使い方
- ファミリの作り方(ロード可能ファミリ入門)
- パラメータの種類と分類(総まとめ)
- Revit 総合ガイド
- Revit API
人気ページ
- 1 【Revit API】アドインの作成サンプル(外部ツール編)
- 2 Revit の要素(Category / Family / Type / Instance)4 階層モデルとは
- 3 【Revit API】要素の取得とID、名前、タイプの情報表示
- 4 【PythonでRevit API】pyRevitの導入と簡単なアプリケーションの作成
- 5 ArchiCAD 階段と手摺りの作成手順|階段ツール / 設定画面 / 手摺り追加
- 6 【Revit API】アドインの作成サンプル(外部アプリケーション編)
- 7 【Revit API】FamilySymbol(タイプ)の取得とパラメータの変更
- 8 RevitAPI.dll と RevitAPIUI.dll の参照
- 9 【Revit API】特定の要素のパラメータ一覧の取得
- 10 【Revit API】マニフェストファイルの書き方/作成方法
最近更新/作成されたページ
- 図面の縮尺 換算早見表|1/100→1/50は2倍・S=1/100の意味 2026-10-03 03:36:16
- 平面図・立面図・断面図の違い|建築図面の種類と配置図・矩計図 2026-10-03 03:36:16
- Revit グループ化の方法|作成・編集・解除とモデル/詳細グループ 2026-10-03 03:36:16
- ARCHICAD(アーキキャド)参照線の移動・削除|参照線だけは消せない 2026-10-03 03:36:16
- ARCHICAD(アーキキャド)通り芯の追加・設定|グリッドシステムと命名 2026-10-03 03:36:16
- 断面図とは|切断線の見方・矩計図との違い・階高と天井高の読み方をやさしく解説 NEW 2026-10-03 03:35:03
- 平面図とは|切断高さの考え方・建具や階段の記号・配置図との違いと読み方をやさしく解説 NEW 2026-10-03 03:35:03
- 立面図とは|平面図・断面図との違いと読み方、東西南北4面と高さ表記をやさしく解説 NEW 2026-10-03 03:35:03
- Revit パラメータの種類と使い分け|共有・プロジェクト・ファミリ 2026-10-03 03:32:12
- Revit API 外部コマンド・外部アプリ|IExternalCommand 2026-10-03 03:32:12
- Revit API トランザクション|Start/Commit と Parameter.Set 2026-10-03 03:32:12
- Revit API 要素取得|FilteredElementCollector・OfClass 2026-10-03 03:32:12
- Revit API 概要|Application/Document/Element と IExternalCommand 2026-10-03 03:32:12
- Dynamo入門|Revit のビジュアルプログラミングと Python ノード 2026-10-03 03:32:12
- Revit ワークシェアリングとは|ワークセットとセントラルファイル 2026-10-03 03:32:12