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

タイトル: よく使うBuiltInCategoryの一覧
SEOタイトル: Revit API の BuiltInCategory 完全リファレンス — Wall / Doors / MEP まで網羅

この記事の要点
  • BuiltInCategory は Revit の標準カテゴリを列挙した列挙型 enum
  • 主要な命名規則: OST_(Object Style)プレフィックス + 英語カテゴリ名(例: OST_Walls
  • FilteredElementCollector と組み合わせてOfCategory() でカテゴリ別取得
  • カテゴリ判定は element.Category.Id.IntegerValue == (int)BuiltInCategory.OST_Walls
  • 建築・構造・MEP(設備)系で 200+ カテゴリ、よく使うのは 30 個程度を覚えておけば実務で十分

BuiltInCategory とは

BuiltInCategory は Revit API(Autodesk.Revit.DB 名前空間)で定義された列挙型で、Revit のすべての標準カテゴリ(壁・ドア・窓・床・配管等)を表します。FilteredElementCollector で要素を絞り込む際の必須キーです。

基本的な使い方

using Autodesk.Revit.DB;

// すべての壁を取得
var walls = new FilteredElementCollector(doc)
    .OfCategory(BuiltInCategory.OST_Walls)
    .WhereElementIsNotElementType()
    .ToElements();

Console.WriteLine($"壁の数: {walls.Count}");

// 複数カテゴリを一度に取得
var categories = new List<BuiltInCategory> {
    BuiltInCategory.OST_Doors,
    BuiltInCategory.OST_Windows
};
var filter = new ElementMulticategoryFilter(categories);
var openings = new FilteredElementCollector(doc)
    .WherePasses(filter)
    .WhereElementIsNotElementType()
    .ToElements();

建築カテゴリ(よく使う 15 個)

BuiltInCategory意味備考
OST_Wallsもっとも使用頻度高
OST_Doorsドア壁にホスト
OST_Windows壁にホスト
OST_Floors床(スラブ)水平要素
OST_Roofs屋根
OST_Ceilings天井
OST_Stairs階段
OST_StairsRailing手すり
OST_Rampsスロープ
OST_Columns建築柱意匠柱
OST_Furniture家具
OST_FurnitureSystemsシステム家具
OST_Casework什器キッチン・収納
OST_GenericModel汎用モデルその他
OST_Rooms部屋面積拾い

構造カテゴリ(よく使う 8 個)

BuiltInCategory意味
OST_StructuralColumns構造柱
OST_StructuralFraming構造フレーム(梁・トラス)
OST_StructuralFoundation基礎
OST_StructuralStiffenerスチフナ
OST_StructuralTrussトラス
OST_Rebar鉄筋
OST_StructuralConnections接合部
OST_StructuralFramingSystem構造フレームシステム

MEP(設備)カテゴリ

BuiltInCategory意味分野
OST_PipeCurves配管衛生 / 空調
OST_PipeFitting配管継手衛生
OST_PipeAccessory配管付属品(バルブ等)衛生
OST_DuctCurvesダクト空調
OST_DuctFittingダクト継手空調
OST_DuctAccessoryダクト付属品空調
OST_MechanicalEquipment機械設備空調機等
OST_PlumbingFixtures衛生器具便器・洗面台
OST_LightingFixtures照明器具電気
OST_ElectricalEquipment電気設備分電盤等
OST_ElectricalFixtures電気器具コンセント等
OST_Conduit電線管電気
OST_CableTrayケーブルラック電気

注釈・ビュー系カテゴリ

BuiltInCategory意味
OST_Grids通り芯
OST_Levelsレベル(階)
OST_Dimensions寸法
OST_TextNotes文字注釈
OST_Tagsタグ
OST_Sheetsシート
OST_Viewsビュー
OST_Viewportsビューポート
OST_TitleBlocksタイトルブロック

カテゴリ判定の書き方

// パターン1: integer 値で比較
if (element.Category != null &amp;&amp;
    element.Category.Id.IntegerValue == (int)BuiltInCategory.OST_Walls)
{
    Console.WriteLine(&quot;これは壁&quot;);
}

// パターン2: BuiltInCategory に変換して比較
var bic = (BuiltInCategory)element.Category.Id.IntegerValue;
switch (bic)
{
    case BuiltInCategory.OST_Walls:
        Console.WriteLine(&quot;壁&quot;);
        break;
    case BuiltInCategory.OST_Doors:
        Console.WriteLine(&quot;ドア&quot;);
        break;
    case BuiltInCategory.OST_Windows:
        Console.WriteLine(&quot;窓&quot;);
        break;
    default:
        Console.WriteLine($&quot;その他: {element.Category.Name}&quot;);
        break;
}

// パターン3: Category.BuiltInCategory プロパティ (Revit 2023+)
// if (element.Category.BuiltInCategory == BuiltInCategory.OST_Walls) ...

FilteredElementCollector との応用

// すべての建築要素を一度に取得
var archCategories = new List<BuiltInCategory> {
    BuiltInCategory.OST_Walls,
    BuiltInCategory.OST_Floors,
    BuiltInCategory.OST_Roofs,
    BuiltInCategory.OST_Ceilings,
    BuiltInCategory.OST_Doors,
    BuiltInCategory.OST_Windows,
    BuiltInCategory.OST_Columns,
    BuiltInCategory.OST_Stairs
};

var multiFilter = new ElementMulticategoryFilter(archCategories);
var archElements = new FilteredElementCollector(doc)
    .WherePasses(multiFilter)
    .WhereElementIsNotElementType()
    .ToElements();

// レベルごとに壁を集計
var levels = new FilteredElementCollector(doc)
    .OfCategory(BuiltInCategory.OST_Levels)
    .Cast<Level>();

foreach (var level in levels)
{
    var levelFilter = new ElementLevelFilter(level.Id);
    var wallsOnLevel = new FilteredElementCollector(doc)
        .OfCategory(BuiltInCategory.OST_Walls)
        .WherePasses(levelFilter)
        .WhereElementIsNotElementType()
        .Count();

    Console.WriteLine($"{level.Name}: {wallsOnLevel} walls");
}

カテゴリ一覧を動的に取得する

// プロジェクトの全カテゴリを列挙
foreach (Category cat in doc.Settings.Categories)
{
    int id = cat.Id.IntegerValue;
    string bicName = &quot;&quot;;
    if (Enum.IsDefined(typeof(BuiltInCategory), id))
        bicName = ((BuiltInCategory)id).ToString();

    Console.WriteLine($&quot;{cat.Name} | {id} | {bicName}&quot;);
}

FAQ

Q: BuiltInCategory 一覧を全て見たい
A: Revit API ドキュメント、または Enum.GetValues(typeof(BuiltInCategory)) で列挙できます。約 1300 個あります。

Q: カスタムカテゴリは作れる?
A: BuiltInCategory には追加できませんが、サブカテゴリは作成可能(ファミリエディタ内)。

Q: タイプ要素もまとめて取得するには?
A: WhereElementIsElementType() または WhereElementIsNotElementType() を省略すれば両方取れます。