この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:atom
更新日時:2026-06-29 12:04:59

タイトル: カテゴリ・タイプ・インスタンス
SEOタイトル: Revitのデータ構造 — カテゴリ→ファミリ→タイプ→インスタンスの4層とタイプ/インスタンスパラメータ

この記事の要点
  • Revit の要素は カテゴリ → ファミリ → タイプ → インスタンスという 4 層構造で整理される。
  • カテゴリ(Walls / Doors / Windows など)は最上位の大分類。要素の用途を表し、表示制御・集計・API のフィルタの基準になる。
  • タイプは規格定義(共有される)、インスタンスは配置された 1 個(個別)。
  • タイプパラメータは同じタイプの全インスタンスで共有され、変えると全部に反映。インスタンスパラメータは 1 個ごとに個別設定。
  • この 4 層と 2 種類のパラメータが、API・IFC・Speckle のオブジェクト構造の基礎

4 層構造の全体像

Revit のすべての要素は、上位から順に カテゴリ → ファミリ → タイプ → インスタンスの 4 層で整理されています。この階層は Revit のデータ構造そのものであり、API でのフィルタ・IFC への変換・Speckle へのマッピングのすべてがこの構造を土台にしています。

意味具体例
カテゴリ(Category)要素の用途・種類の大分類Doors(ドア)
ファミリ(Family)振る舞い・共通パラメータのまとまり片開きドア
タイプ(Type)ファミリ内の規格バリエーション片開きドア 900×2100
インスタンス(Instance)モデルに配置された 1 個の要素1F 会議室の入口に付いた、その特定のドア

カテゴリ(Category)

カテゴリは要素の最上位の分類で、Walls(壁)、Floors(床)、Doors(ドア)、Windows(窓)、Structural Columns(構造柱)、Furniture(家具)といった、あらかじめ定義された用途の区分です。利用者が自由に増やせるものではなく、Revit が持つ固定のリストから選ばれます。

カテゴリは次のような場面で基準として使われます。

  • 表示制御:ビューごとに「ドアを表示/非表示」のようにカテゴリ単位で制御する(後述のビュー設定 VG)。
  • 集計(スケジュール):集計表はカテゴリを指定して作成する(例:ドア集計表)。
  • API のフィルタ:要素を取得するとき、組込み列挙 BuiltInCategory(例 OST_Doors)でフィルタするのが基本。
  • IFC マッピング:Revit カテゴリは IFC のエンティティ(IfcDoor 等)へ対応づけられる。

タイプとインスタンスの違い

4 層のうち、実務で最も誤解されやすいのがタイプインスタンスの関係です。

  • タイプは「規格・仕様の定義」です。たとえば「片開きドア 900×2100」というタイプは 1 つで、モデル内に同じ仕様のドアが何枚あっても、参照しているタイプは共通です。
  • インスタンスは「配置された実体」です。1F 会議室の入口にあるドア、2F 廊下にあるドア…それぞれが別々のインスタンスで、位置や向きといった個別の情報を持ちます。

プログラム的に言えば、タイプはクラス(あるいはプロトタイプ)、インスタンスはそのクラスから生成された個々のオブジェクトに近い関係です。Revit API では、タイプは ElementType(およびその派生 FamilySymbol 等)、インスタンスは FamilyInstance など、別の要素として扱われます。あるインスタンスから、それが参照しているタイプをたどることもできます(タイプ ID を取得して解決する)。この「インスタンス → タイプ → ファミリ → カテゴリ」とたどれる関係が、要素の正体を特定する手がかりになります。

この区別を誤ると、たとえば「タイプの寸法を変えるつもりが、本当はインスタンス固有の値を変えていた(あるいはその逆)」といった事故につながります。連携で値を書き込むときは、書き込み先がタイプとインスタンスのどちらのスコープなのかを必ず確認することが重要です。

タイプパラメータとインスタンスパラメータ

4 層構造と表裏一体なのが、パラメータの 2 つのスコープです。これは連携実装で取り違えると数量や属性がずれる、極めて重要なポイントです。

種類スコープ変更の影響
タイプパラメータタイプ単位(同タイプの全インスタンスで共有)変えるとそのタイプの全インスタンスに一斉反映ドアの幅・高さ、壁の構成・厚さ、材質
インスタンスパラメータインスタンス単位(1 個ごと)その 1 個だけに反映配置レベル、敷居高さ、コメント、個別マーク番号

たとえば「片開きドア 900×2100」のタイプパラメータである幅を 900 → 1000 に変更すると、そのタイプを使うすべてのドアが一斉に 1000 幅になります。一方、特定のドアだけ取り付けレベルを変えたいときは、そのインスタンスのインスタンスパラメータを編集します。「全体で揃えたいものはタイプ、個別に持たせたいものはインスタンス」と覚えると間違えにくくなります。

API・IFC・Speckle との関係

この 4 層 + 2 スコープの構造は、外部連携でそのまま現れます。

  • Revit API:要素取得はカテゴリ(BuiltInCategory)でフィルタするのが定石。各要素からタイプ(GetTypeId で取得)とインスタンスを区別し、パラメータは get_Parameter 等で読む。
  • IFC:Revit のカテゴリ/タイプ/インスタンスは、IfcDoor などのエンティティと、IfcTypeObject(型)/プロパティセットに対応づけられる。
  • Speckle:Revit コネクタは要素をオブジェクトに変換し、カテゴリ・ファミリ・タイプ・各パラメータをプロパティとして保持する。受信側はこの構造を頼りに要素を再構成する。

つまり、ここで押さえた 4 層構造は連携実装の共通言語です。Revit・IFC・Speckle はいずれも「大分類(カテゴリ/エンティティ)」「型(タイプ)」「実体(インスタンス)」「属性(パラメータ/プロパティ)」という同じ発想で要素を表現します。表現の名前は違っても構造が共通しているからこそ、ツール間でデータを行き来させられるわけです。パラメータの詳しい種類(共有パラメータ・組込みパラメータなど)は次の パラメータ(プロジェクト/共有/グローバル/ファミリ) で扱います。

まとめ

カテゴリ・ファミリ・タイプ・インスタンスの 4 層と、タイプ/インスタンスの 2 種類のパラメータが、Revit データ構造の骨格です。これを正確に理解しておけば、API・IFC・Speckle のどれを扱うときも迷いません。逆に、この区別が曖昧だと、データの取り違いや書き込みミスの温床になります。Revit を SE として扱う出発点として、まずここを固めておきましょう。次は パラメータ を、全体は Revit を参照してください。