用途:在遇到 IFC 架构错误或在 IFC2X3、IFC4、IFC4X3 之间迁移时,提供诊断与修复参考。
主要能力:按错误类型给出决策路径,包括实体不存在、属性缺失、跨版本迁移、文件合并时的架构不匹配。列出关键改名与移除:IfcBuildingElement 在 IFC4X3 改为 IfcBuiltElement;IfcWallStandardCase 等 StandardCase 实体在 IFC4X3 全部移除;IfcDoorStyle/IfcWindowStyle 在 IFC4+ 改用 IfcDoorType/IfcWindowType;IfcContext 仅 IFC4+ 存在。指出 IFC2X3 中 OwnerHistory 必填、多数元素无 PredefinedType,以及 IfcStairFlight.NumberOfRiser 改名、IfcRelSequence.LagTime 改为 TimeLag 等属性变化。
使用方式:先用 model.schema 判断版本,再选择版本感知的实体名;优先用 ifcopenshell.api.run() 创建实体以自动处理架构差异;迁移用 ifcpatch 的 Migrate recipe,例如 ifcpatch.execute({...recipe: "Migrate", arguments: ["IFC4"]}),迁移后用 ifcopenshell.validate 校验。
适用场景:IFC 文件读写、跨版本升级、基础设施实体(IfcRoad、IfcBridge、IfcAlignment 等仅 IFC4X3)使用。
限制:Migrate recipe 为实验性,升级比降级稳定,几何可能需人工复核;不得在不同架构文件间直接转移实体,须先迁移。