从模型中获取包含元素的系统

Get system with elements from a model

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

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

此 returns 模型中所有系统的列表。如何访问系统中的元素?

所以这是通过查看 standards - in particular the Group Assignment data model: https://standards.buildingsmart.org/IFC/RELEASE/IFC4_1/FINAL/HTML/link/group-assignment.htm

来理解 IFC 数据模型的问题

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

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

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

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