用途:在多个 AEC/BIM 工具之间映射 IFC 实体,涵盖 IfcOpenShell(Python)、web-ifc(WebAssembly)、Blender/Bonsai、FreeCAD、Speckle 与 Three.js,帮助判断某工具能否完整承载所需的 IFC 语义与几何信息。
主要能力:提供 IFC4/IFC4X3 实体层级(IfcRoot 及 IfcObjectDefinition、IfcRelationship、IfcPropertyDefinition 分支);各目标工具内部表示对照表(entity_instance、IfcLineObject、bpy.types.Object、THREE.Object3D、DataObject、直接 IFC 访问等);跨工具映射规则与数据丢失矩阵,标出实体类、GlobalId、属性、数量、关系、参数化几何、材质层、空间结构在各目标中的保留程度;IFC4 与 IFC4X3 实体对照(如 IfcAlignment、IfcRoad、IfcRailway、IfcBridge、IfcFacilityPart 等新增实体);以及决策树,按 schema 版本、所需数据、是否需往返编辑、目标运行时选择方案。
使用方式:先检查 schema(IfcOpenShell 用 model.schema,web-ifc 用 ifcApi.GetModelSchema(modelID));属性同时查实例与其类型对象(用 ifcopenshell.util.element.get_psets);几何/数量使用前先做单位换算(ifcopenshell.util.unit.calculate_unit_scale(model));Three.js 需另建并行语义数据结构,因为属性与关系不在场景图中;保留原始 IFC 作为几何唯一真源,细分网格仅用于显示。示例命令如 ifcopenshell.open("model.ifc")、ifcApi.OpenModel(uint8Array)、ifcApi.GetFlatMesh(modelID, id) 等保持原样。
适用场景:跨工具数据交换、浏览器端 IFC 可视化、BIM 属性查询、需要往返编辑的流程,以及判断 IFC4X3 基础设施实体支持情况。
限制:文章未提供安装命令、收费价格与具体平台支持细节,暂未提供;IFC4X3 实体可能被仅支持 IFC4 的工具静默丢弃;细分转换不可逆,会破坏参数化信息;关系为多对多对象化实体,扁平化必然丢失信息;不同工具字符串编码需先归一化(ISO-8859-1 及 \X2\ 转义)。