获得所有建筑元素的数量和统一 - Revit Api

时间:2014-12-16 13:22:34

标签: c# revit-api

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

要获取元素,我目前正在使用逻辑过滤器:

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

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

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

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

另外,当我获取元素时,某些元素确实没有名称,或者像#34; 300x75"这样的无名名称,而不是元素名称(例如Wood Door)。

1 个答案:

答案 0 :(得分:0)

Supamiu, 其中一些取决于你真正想要做的事情。 您正在使用的LogicalOrFilter通常会引入每个元素 - 无论是" Type"元素或"实例"元素(以及其他非真实的元素,如家庭,材料等)。

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

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

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

祝你好运, 马特