タイトル: よく使う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 &&
element.Category.Id.IntegerValue == (int)BuiltInCategory.OST_Walls)
{
Console.WriteLine("これは壁");
}
// パターン2: BuiltInCategory に変換して比較
var bic = (BuiltInCategory)element.Category.Id.IntegerValue;
switch (bic)
{
case BuiltInCategory.OST_Walls:
Console.WriteLine("壁");
break;
case BuiltInCategory.OST_Doors:
Console.WriteLine("ドア");
break;
case BuiltInCategory.OST_Windows:
Console.WriteLine("窓");
break;
default:
Console.WriteLine($"その他: {element.Category.Name}");
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 = "";
if (Enum.IsDefined(typeof(BuiltInCategory), id))
bicName = ((BuiltInCategory)id).ToString();
Console.WriteLine($"{cat.Name} | {id} | {bicName}");
}
FAQ
Q: BuiltInCategory 一覧を全て見たい
A: Revit API ドキュメント、または Enum.GetValues(typeof(BuiltInCategory)) で列挙できます。約 1300 個あります。
Q: カスタムカテゴリは作れる?
A: BuiltInCategory には追加できませんが、サブカテゴリは作成可能(ファミリエディタ内)。
Q: タイプ要素もまとめて取得するには?
A: WhereElementIsElementType() または WhereElementIsNotElementType() を省略すれば両方取れます。