【问题标题】:Get system with elements from a model从模型中获取包含元素的系统
【发布时间】:2021-10-30 17:36:58
【问题描述】:

如何获取 HVAC 系统中的元素?我可以使用以下代码访问模型中的系统列表:

var systems = model.Instances.OfType<IfcSystem>();

这将返回模型中所有系统的列表。如何访问系统中的元素?

【问题讨论】:

  • 您并没有真正给我们太多的帮助。您已经知道 IfcSystem 类型或者它的接口,我希望 systems 是一个数组或 IEnumerable 类型。
  • 我的意思是如何访问被分组为系统一部分的元素,如 IfcFlowSegment 或 IfcFlowTerminal 等元素。

标签: c# ifc bim xbim


【解决方案1】:

所以这是通过查看standards 来理解 IFC 数据模型的问题 - 特别是组分配数据模型:https://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/link/group-assignment.htm

在 IFC 中,IfcSystemIfcGroup 的子类。要获取组的成员,您需要访问通过IsGroupedBy 提供的IfcRelAssignsToGroup 关系,从中可以获取包含实际元素的RelatedObjects 集合。

所以在 xbim 中你最终会得到类似的东西:

var hvacSystem = model.Instances.OfType<IfcSystem>().First(s => s.GlobalId="<Your Hvac Identifier>");

var hvacElements = hvacSystem.IsGroupedBy?.RelatedObjects.OfType<IIfcProduct>();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2014-02-13
    • 2011-03-08
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多