0

Revit 2014 のエクスポート アドインの場合、開いているプロジェクト内のすべての建築要素を取得する必要があります。

要素を取得するために、現在 logicalfilter を使用しています:

new LogicalOrFilter(new ElementIsElementTypeFilter(true),new ElementIsElementTypeFilter(false));

次に、Element.Category.Id.IntegerValue を使用して、配列内のすべての要素と比較して、カテゴリ ID にいくつかのフィルターを使用してそれらを解析します。

すべての要素を取得できますが、いくつかのパラメーターが欠落しています:

  • このタイプの要素はいくつありますか? (Nドアのように)。
  • どの単位を使用すればよいですか (m2、m3、m、kg など)
  • この要素にはどの材料が含まれていますか? (GetMaterialIds() メソッドを使用して要素の materialIds を取得できることは知っていますが、すべてではなく一部のマテリアルのみを返すようです)

また、要素を取得すると、一部の要素には名前がないか、要素名ではなく「300x75」のような意味のない名前が付けられます(たとえば、ウッドドア)。

4

1 に答える 1

0

スパミウ、これのいくつかは、あなたが実際に何をしようとしているのかに依存します. 使用している LogicalOrFilter は、通常、「タイプ」要素であろうと「インスタンス」要素であろうと (およびファミリ、マテリアルなど、実際にはどちらでもないその他の要素) であろうと、すべての要素を取り込みます。

  • ドアの数を調べるには、特定のカテゴリのインスタンス要素を数える必要があります。私の経験では、多くの場合、「ファミリ」タイプの要素の場合、有効な要素カテゴリを取得できない場合があり、FamilyInstance->FamilySymbol->Family から移動して、「FamilyCategory」プロパティを確認する必要があります。また、フィルター内でカテゴリに NULL を持つ要素 (通常は奇妙な内部要素) に遭遇する可能性があります。

  • 単位タイプは、使用可能なすべての表示オプションを持つ列挙型である DisplayUnitType と同様に、各パラメーターの定義 (つまり、長さ、面積、テキストなど) に格納されます。

  • Element.GetMaterialIds() は、少なくとも INSTANCE 要素に存在するすべてのマテリアルを適切に反映していると思います。

がんばれ、マット

于 2014-12-17T14:06:30.357 に答える