ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレート
テンプレートがありません。
要素の取得とフィルタ
Revit API で何かをするには、まず「対象の要素を集める」ことから始まります。その中心となるのが FilteredElementCollector。フィルタを連結して、モデルから狙った要素だけを効率よく取り出す方法を学びます。
この記事の要点
- 要素を取り出す中心クラスは
FilteredElementCollector。Document を渡して生成する OfClass(.NET クラスで絞る)とOfCategory(BuiltInCategory で絞る)が代表的なフィルタWhereElementIsNotElementTypeでインスタンス、WhereElementIsElementTypeでタイプを取得できる- 結果は IEnumerable なので LINQ(Where / Select / Cast)で柔軟に加工できる
この記事は Revit カテゴリの一部です。API の全体像は Revit API 概要 で押さえておくと理解が早まります。要素を集めたら、編集は トランザクションと要素編集 内で行います。
1FilteredElementCollector の基本
FilteredElementCollector は、Document(またはビュー)を対象に要素を収集するクラスです。生成しただけでは全要素が対象ですが、フィルタを連結(チェーン)して絞り込みます。フィルタは「速い順序」で適用されるよう、まず種別系で絞ってから条件を加えるのが定石です。
コレクタは「遅延評価」で、最終的に列挙(foreach や ToList、ToElements)した時点で初めて実体化します。絞り込みフィルタを連結している途中ではコストがかからず、列挙時にまとめて評価されます。ビューを対象にした new FilteredElementCollector(doc, viewId) なら、そのビューに表示されている要素だけに対象を限定でき、大規模モデルでの高速化に有効です。
2OfClass と OfCategory
絞り込みには 2 系統あります。目的に応じて使い分けます。
- Wall、FamilyInstance、ViewPlan などクラスが明確な場合に使う
- 「ドア」「窓」「部屋」などカテゴリ単位で集めたい場合に使う
- カテゴリ名は
OST_DoorsやOST_RoomsのようにOST_接頭辞が付く
壁インスタンスを取得する基本形は次の通りです。
using Autodesk.Revit.DB;
using System.Collections.Generic;
using System.Linq;
// doc は Document
FilteredElementCollector collector =
new FilteredElementCollector(doc)
.OfClass(typeof(Wall))
.WhereElementIsNotElementType();
List<Wall> walls = collector.Cast<Wall>().ToList();
TaskDialog.Show("結果", "壁の数: " + walls.Count);
List<Wall> のようなジェネリクスを多用するため、型を意識してキャストするのがポイントです。
3インスタンスとタイプの区別
Revit の要素には「タイプ(ElementType: 種類・規格の定義)」と「インスタンス(実際に配置された個体)」があります。コレクタはどちらも拾うため、目的に応じて絞ります。
配置済みインスタンスのみ取得。「実際に建っている壁を数える」ような用途
タイプ定義のみ取得。「使用可能な壁タイプを列挙する」ような用途
この絞り込みを忘れると、インスタンスとタイプが混在して件数が想定と合わなくなります。
4ElementId と LINQ による加工
取得した各要素は ElementId で一意に識別されます。ID から本体を得るには doc.GetElement(id) を使い、逆に要素から ID は element.Id で取得できます。
コレクタは IEnumerable<Element> を実装するため、LINQ で柔軟に処理できます。たとえばカテゴリで集めた上で、特定の高さの壁だけを抽出するには次のように書きます。
var tallWalls = new FilteredElementCollector(doc)
.OfCategory(BuiltInCategory.OST_Walls)
.WhereElementIsNotElementType()
.Cast<Wall>()
.Where(w => w.get_Parameter(
BuiltInParameter.WALL_USER_HEIGHT_PARAM)
.AsDouble() > 10.0) // 内部単位フィート
.ToList();
LINQ の Where でロジックを表現し、Select で値へ変換、Cast で型を確定する、という流れが基本パターンです。比較する数値は内部単位(フィート)である点に注意してください。
「集める」が API の出発点
Revit API での作業は、ほぼ例外なく「対象要素を集める」ことから始まります。FilteredElementCollector で種別系フィルタ → 条件 → LINQ 加工という流れを身につければ、数量集計から一括編集まで応用が利きます。早めの絞り込みでパフォーマンスを保つこと、内部単位がフィートであることの 2 点を忘れないようにしましょう。
要素を集めたら、次は変更です。トランザクションと要素編集 で、安全に値を書き換え・要素を作成する方法を学びましょう。
→次に読む
実際のコードは要素の取得と情報の表示と要素フィルターの使い方を参照してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
テンプレート
テンプレートがありません。
子ページはありません
- 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】マニフェストファイルの書き方/作成方法
最近更新/作成されたページ
- 建築・BIM 総合Wiki — 建築の基礎からBIM・Revit・Speckleまで体系的に解説 2026-09-07 22:56:20
- ArchiCAD 階段と手摺りの作成手順|階段ツール / 設定画面 / 手摺り追加 2026-09-07 22:55:03
- ARCHICAD 参照線の移動・削除・編集ガイド(Reference Line) 2026-09-07 22:55:03
- ARCHICAD で床(スラブ)を作る方法|ポリゴン入力と複合構造 2026-09-07 22:55:03
- ARCHICAD 窓の作成完全ガイド 2026-09-07 22:55:03
- ARCHICAD 交点矢印の自動配置完全ガイド (Intelligent References) 2026-09-07 22:55:03
- ARCHICAD ドア (Door) の作成完全ガイド 2026-09-07 22:55:03
- ARCHICAD 壁の作成方法完全ガイド 2026-09-07 22:55:03
- ARCHICADの3D表示方法|F5ショートカット・軸測投影と透視投影の切替 2026-09-07 22:55:03
- ARCHICAD 梁 (Beam) の作り方完全ガイド 2026-09-07 22:55:03
- ARCHICAD Column ツールで柱を配置する手順(断面・高さ・複合構造・3D 確認) 2026-09-07 22:55:03
- ARCHICAD で通り芯を追加する方法|グリッドツールと命名規則 2026-09-07 22:55:03
- ARCHICAD でフロア(階)を切り替える方法(ポップアップナビゲータ / プロジェクト一覧 / ショートカット) 2026-09-07 22:55:03
- ARCHICAD (BIM ソフト) 完全ガイド 2026-09-07 22:55:03
- Revit のグループ機能|モデル/詳細グループの作成・解除と Revit API 2026-09-07 03:02:40
コメントを削除してもよろしいでしょうか?