用途:正确读取 .ifc STEP 物理文件(SPF)。IFC 文件是带编号实体实例的扁平列表,语义却是图:实例通过 #id 互相指向,关系本身也是实体。正确读取需做两件事:解析任何引用前先索引全部实例,并计算文件中从未存储的 INVERSE 属性。
主要能力:两遍解析(第一遍索引 id、关键字与原始属性 token,不解析任何引用;第二遍替换 #id 并计算 INVERSE);按 HEADER 中的 FILE_SCHEMA 分派实体定义;处理位置属性模型中的 $(未设置的 OPTIONAL)与 *(被重声明为 DERIVED 的继承属性),二者都占一个位置;构建 INVERSE 索引;从构件遍历到属性集、类型、空间容器与关联。
必要用法:引用可能前向出现,单遍解析会在每个前向引用上失败,第一遍必须覆盖整个 DATA 段后再进入第二遍。第二遍查不到 #id 应显式报错,不得静默置空。FILE_SCHEMA 取值 IFC2X3、IFC4、IFC4X3/IFC4X3_ADD2 分别对应 IFC2x3 TC1、IFC4 ADD2 TC1、IFC4.3 ADD2;未知 schema 应失败而非猜测。属性按 EXPRESS 声明顺序位置映射,先计继承属性。
适用场景:IFC2x3、IFC4、IFC4.3 文件的读取与解析,属性集、类型、空间容器、材质与分类关联的遍历。
限制:INVERSE 属性(IsDefinedBy、ContainedInStructure 等)从不序列化,需自行计算;IFC2x3 中 IsDefinedBy 混合类型与属性,且无 IsTypedBy;IFC4+ 类型链接在 IsTypedBy;#id 仅文件内有效,跨文件身份应使用 GlobalId。具体收费、平台与效果暂未提供。