用途:帮助学习者理解 IFC 数据模型基础,并在使用 IfcOpenShell 时正确导航实体关系,避免创建缺少层级关系的扁平元素结构。
主要能力:梳理 IfcRoot 及其继承体系(IfcObjectDefinition、IfcObject、IfcProduct、IfcElement 等);对比 IFC2X3、IFC4、IFC4X3 的关键差异,如 IfcProject 父类、OwnerHistory 是否必需、IfcBuildingElement 与 IfcBuiltElement 命名、StandardCase 子类型、基础设施实体等;说明 IfcRoot 的 GlobalId、OwnerHistory、Name、Description 四个属性。
使用方式:以 ifcopenshell.api.run 构建空间层级,例如 root.create_entity 创建 IfcProject、IfcSite、IfcBuilding、IfcBuildingStorey,再用 aggregate.assign_object 自上而下聚合;用 spatial.assign_container 建立元素与楼层的包含关系;用 type.assign_type 关联类型与实例;用 pset.add_pset、material.assign_material、void.add_opening 等创建关系。类型检查应使用 is_a() 遍历完整继承链,而非比较字符串。查询可用 ifcopenshell.util.element 的 get_container、get_type、get_material、get_psets。几何表示需先通过 context.add_context 创建上下文,再分配表示。
适用场景:IFC 建模脚本编写、模型数据校验、跨版本兼容处理、空间结构与属性关系查询。
限制:资料未提供该技能的安装方式、收费信息与具体运行环境要求;示例代码需配合 IfcOpenShell 使用,不同 schema 版本支持的实体与属性存在差异,需按版本判断。