Revitの開発では要素を取得する機会が多いです。
その際、FilteredElementCollectorクラスは非常に便利な機能を提供します。
特にFirstElementメソッドを活用すると最初の要素を簡単に取得できます。
本記事ではFilteredElementCollectorとFirstElementの使い方を詳しく解説します。
Revitアドイン開発をLancersにて承っております。
詳しくは下の記事にまとめています。

FilteredElementCollectorとは?
FilteredElementCollectorは、Revit内の要素を収集するためのクラスです。
フィルタを適用することで特定の要素だけを抽出できます。
例えば、壁やドア、窓などのカテゴリごとの取得が可能です。
次のコードはドキュメント内のすべての要素を収集する例です。
Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; FilteredElementCollector collector = new FilteredElementCollector(doc);
要素のフィルタリングにはさまざまなメソッドを利用できます。
例えばカテゴリごとに取得したり条件を追加したりできます。

FirstElementメソッドの概要
FirstElementメソッドはFilteredElementCollectorの先頭の要素を取得するメソッドです。
このメソッドを使うとリスト全体を取得せずに最初の要素のみを取得できます。
Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; FilteredElementCollector collector = new FilteredElementCollector(doc); Element firstElement = collector.FirstElement();
FirstElementを使った最初の要素の取得
FirstElementメソッドをFilteredElementCollectorに使用したコードサンプルは以下のようになります。
Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; FilteredElementCollector wallCollector = new FilteredElementCollector(doc) .OfCategory(BuiltInCategory.OST_Walls) .WhereElementIsNotElementType(); Element firstWall = wallCollector.FirstElement(); if (firstWall != null) { TaskDialog.Show("First Wall", $"ID: {firstWall.Id}"); } else { TaskDialog.Show("First Wall", "壁が見つかりませんでした。"); }
- OfCategoryメソッドで壁のカテゴリを指定しWhereElementIsNotElementTypeでインスタンスのみを取得します。
- 最初の壁のIDを表示します。
- もし壁がない場合は、エラーメッセージを表示します。
Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; FilteredElementCollector doorCollector = new FilteredElementCollector(doc) .OfCategory(BuiltInCategory.OST_Doors) .WhereElementIsNotElementType(); Element firstDoor = doorCollector.FirstElement(); if (firstDoor != null) { TaskDialog.Show("First Door", $"ドアID: {firstDoor.Id}"); } else { TaskDialog.Show("First Door", "ドアが見つかりませんでした。"); }
- OfCategoryメソッドでドアのカテゴリを指定しWhereElementIsNotElementTypeでインスタンスのみを取得します。
- 最初のドアのIDを表示します。
- もしドアがない場合は、エラーメッセージを表示します。
FirstElementの注意点
FirstElementを使用する際は以下の点に注意が必要です。
- FirstElementは要素がない場合nullを返す
- FirstElementはフィルタ適用後の最初の要素を取得する
- FirstElementは大量の要素を処理する際には最適ではない
まとめ:FilteredElementCollectorの効率的な活用
FilteredElementCollectorはRevit要素の収集に不可欠なクラスです。
FirstElementを活用すると最初の要素を簡単に取得できます。
適切に使用することでコードの効率を向上させることができます。
また、nullチェックを忘れずに行うことでエラーを防ぐことができます。
ぜひRevit開発において活用してみてください!
RevitAPI独学用教材
最後に教材等を紹介します。
RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。
下記、オススメの参考書です。
プログラムが初心者にオススメのC#教材
プログラムの基礎知識がある人にオススメのC#教材
美しいコードを書きたい人はこちら
Revitアドイン作ります
のんびり学習してる余裕などない!という方にご案内です。
スキル、資格等の詳細はプロフィールをご覧ください。
ご質問などもお気軽にメッセージしていただければと思います。
詳しくは下の記事にまとめています。

最後まで読んでいただき、ありがとうございました^^
以上です。