0

对于 revit 2014 上的导出加载项,我需要获取打开的项目中的所有建筑元素。

要获取元素,我目前正在使用 logicalfilter :

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

然后我使用类别 ID 上的一些过滤器解析它们,使用 Element.Category.Id.IntegerValue 将其与我的数组中的每个元素进行比较。

我可以获取所有元素,但缺少一些参数:

  • 我有多少这种类型的元素?(如 N 门)。
  • 我应该使用哪个单位(m2、m3、m、kg 等)
  • 该元素中有哪些材料?(我知道我可以使用 GetMaterialIds() 方法获取元素的 materialIds,但它似乎只返回一些材料,而不是全部)

另外,当我获取元素时,有些元素没有名称,或者像“300x75”这样的无意义名称,而不是元素名称(例如木门)。

4

1 回答 1

0

Supamiu,其中一些取决于你真正想要做什么。您使用的 LogicalOrFilter 通常会引入每个元素 - 无论是“类型”元素还是“实例”元素(以及其他实际上两者都不是的元素,如家庭、材料等)。

  • 要调查您有多少门,您需要计算特定类别的实例元素。根据我的经验,通常对于“family”类型的元素,您可能无法获得有效的元素类别,您必须从 FamilyInstance->FamilySymbol->Family 导航,然后检查“FamilyCategory”属性。此外,您可能会在过滤器中遇到某些类别为 NULL 的元素(通常是奇怪的内部元素)。

  • 单位类型存储在每个参数的定义中(即长度、面积、文本等),DisplayUnitType 也是如此,它是一个具有所有可用显示选项的枚举。

  • 我相信 Element.GetMaterialIds() 至少可以很好地反映 INSTANCE 元素中存在的所有材料。

祝你好运,马特

于 2014-12-17T14:06:30.357 回答