2017-05-19 20 views
2

Revit APIを使用すると、特定のカテゴリ(Windows、Doorsなど)のすべてのファミリタイプにアクセスできますか?インスタンスとは対照的に。 ToElements()またはFilteredElementCollector(doc).OfClass(...)。ToElements()は、そのクラス/タイプのインスタンスを指していますが、特定のタイプがすでにインスタンス化されていない場合でも、Revitにすでにロードされているかどうかをチェックします。revit APIを使用してすべてのファミリタイプにアクセスするにはどうすればよいですか?

おかげで多くのことを(私はpyRevit、Revitの2017を使用しています)

答えて

2

filteredElementCollectorでToElements()を実行する前に、WhereElementIsElementType()、ToElements()を追加する必要があります。

ドアのようなファミリーベースの要素では、FamilySymbol要素が返されます。そこから、アクティブであるかどうかを確認できます。

+0

ありがとうございました!私もこれを試してみましょう! – Arnaud

0

よろしくお願いいたします。明らかに私は間違っていました。インスタンス化されていない要素を含め、すべての要素を指しています。

2

インスタンス化されたすべてのファミリを特定する最も簡単な方法は、すべてのファミリインスタンスを取得することです。

インスタンスから、ファミリシンボルとファミリ自体を特定し、インスタンス化されていることを確認できます。

インスタンスが存在しない場合、ファミリまたはファミリのシンボルエントリはありません。

ああ、再読みすると、インスタンス化されているかどうかにかかわらず、すべての家族のリストが反対であることがわかります。ああ、特定のカテゴリのすべてのファミリーシンボルのリスト。インスタンス化されているかどうかにかかわらず。正確に

https://github.com/jeremytammik/the_building_coder_samples/blob/master/BuildingCoder/BuildingCoder/CmdCollectorPerformance.cs#L294-L332

、そこに実装さGetFamiliesOfCategory方法は、Aのすべての家族を取得します。実際には、既に建物コーダサンプルCmdCollectorPerformanceモジュールにおける多数の濾過要素コレクタスニペットのいずれかによって示される

指定されたカテゴリ。あなたはそれを簡単に変更して、家族のシンボルを取得することができます。

+0

ありがとう、ジェレミー! – Arnaud

+0

質問:あなたの "GetFamiliesOfCategory"関数では、フィルタリングされた要素コレクタ、次にOfClass "Family"を使用します。私のプロジェクトでこれを行い、それをループしてFamilyCategory.Nameを印刷しようとすると、インスタンス化された要素のみが印刷されるようです。たとえば、「Ducts」、「Ducts System」などは印刷されないため、実際にはプロジェクトでインスタンス化されません。私はC#に慣れていないので、あなたのコードを解釈するのに何か迷っているかもしれません。ありがとう! – Arnaud

関連する問題