そんな時にはElementMulticategoryFilterクラスを使えばOKです!
というわけで、ここではElementMulticategoryFilterクラスの基本的な使い方を紹介します。
なおFilteredElementCollectorクラス、OfCategoryメソッドの使い方は下記の記事をご覧いただければ幸いです。
ElementMulticategoryFilterについて
ElementMulticategoryFilterクラスは、指定した複数のカテゴリをフィルタリングするためのクラスです。
ElementMulticategoryFilterクラスの使い方
使い方としては下記のように、複数クラスでList<BuiltInCategory>を生成して、それを引数にElementMultiicategoryFilterクラスのインスタンスを作成します。
ここではWallカテゴリとFloorカテゴリを取得するコードを書いています。
List<BuiltInCategory> builtInCategories = new List<BuiltInCategory>(){ BuiltInCategory.OST_Walls, BuiltInCategory.OST_Floors }; ElementMulticategoryFilter elementMulticategoryFilter = new ElementMulticategoryFilter(builtInCategories);
これだけでカテゴリフィルタの出来上がりです。
BuiltInCategoryと日本語カテゴリ名の対応はこちらでご確認ください!
https://kizarukun.com/revitapi-builtincategory
ElementMulticategoryFilterクラスを使ったコード一式
先述のコードを使用してFilteredElementCollectorでの要素選択するには下記のようなコードとなります。
先ほどと同じく壁(Wallカテゴリ)と床(Floorカテゴリ)を取得します。
public void Sample1() { Autodesk.Revit.UI.UIDocument uidoc = this.ActiveUIDocument; Autodesk.Revit.DB.Document doc = uidoc.Document; List<BuiltInCategory> builtInCategories = new List<BuiltInCategory>(){ BuiltInCategory.OST_Walls, BuiltInCategory.OST_Floors }; ElementMulticategoryFilter elementMulticategoryFilter = new ElementMulticategoryFilter(builtInCategories); FilteredElementCollector filteredElementCollector = new FilteredElementCollector(doc); List<Element> Elements = new List<Element>(); Elements = filteredElementCollector.WherePasses(elementMulticlassFilter).ToList(); string message = ""; foreach(Element element in Elements) { message += element.GetType().Name + "_" + element.Name + "\n"; } TaskDialog.Show("Message", message); }
ElementMulticategoryFilterまとめ
以上が、FilteredElementCollectorを使った複数カテゴリの選択方法です。
取得したいカテゴリが単独か複数かで使用するクラスやメソッドが変わるので最初は戸惑うかもしれませんが、覚えてしまえば簡単です^^
RevitAPI独学用教材
最後に教材等を紹介します。
RevitAPIを理解してプログラムを作れるようになるには、C#の知識が必要です。
下記、オススメの参考書です。
プログラムが初心者にオススメのC#教材
プログラムの基礎知識がある人にオススメのC#教材
美しいコードを書きたい人はこちら
Revitアドイン作ります
のんびり学習してる余裕などない!という方にご案内です。
スキル、資格等の詳細はプロフィールをご覧ください。
ご質問などもお気軽にメッセージしていただければと思います。
詳しくは下の記事にまとめています。
最後まで読んでいただき、ありがとうございました^^
以上です。