返回 BIM 与 IFC 博客
工具与对比 · 2026-10-01 · 11 分钟
如何比较两个 IFC 版本,准确看出改了什么
“上周以来改了什么?”是每个协调员都会问、却几乎没有 IFC 工具能答好的问题。按 GlobalId 在整套文件中比较——而不是一个文件对一个文件——才能把差异比对变成每周审查。
如何比较两个 IFC 版本,准确看出改了什么 — IFC Viewer Online article cover
每个周一,总有某个 BIM 协调员收到一批新的专业模型,并问出唯一重要的问题:改了什么?大多数项目的真实答案是“两个都打开看看”。对一栋小住宅这行得通;对 11 个文件、4 万个构件就行不通了。
正确比较 IFC 版本并不难,但它取决于一个大多数工具都会微妙地做错的决定:什么才算“同一个构件”。
身份识别就是全部问题
在整套文件中按 GlobalId 匹配:一处属性修改、一个换了专业文件的构件、一次新增和一次删除。
一个 IFC 构件有两个标识。express ID(文件里的 #1234)只是行号——每次导出都会重新编号,跨版本毫无意义。GlobalId 是 22 位的 GUID,设计上要在构件的整个生命周期内保持不变。按 GlobalId 以外的任何东西匹配的比较,其实是在比较行号。
稳定的 GUID 是导出设置问题,而不是建模问题——为什么每次导出 IFC GUID 都会变 介绍了各建模软件的修复方法。如果你遇到的是相反的问题,即同一个 GUID 在一个文件里出现两次,请看 IFC 中的重复 GUID。
比较整套文件,而不是单个文件
真实项目都是联合模型:建筑、结构、机电(MEP),有时还按楼栋或楼层进一步拆分。逐个文件比较会错过最有意思的变化——在文件之间移动的构件。结构工程师接手了建筑师建的一面墙;逐文件比对会报告一次删除和一次毫不相干的新增,而两者都是错的。
在整套文件中按 GlobalId 匹配就能解决这个问题。构件在两个版本中都能找到,只是所属文件不同,于是它只被报告一次——作为已修改,原因是“移到了另一个文件”。按文件匹配仍然有用——用于每个文件的汇总——但它只是展示细节,而不是身份规则。
“已修改”应该意味着什么
有用的比较不仅说明构件改了,还要说明怎么改的。下面这些类别值得分开,因为每一类都会交给不同的人:
| 变化 | 示例 | 谁关心 |
|---|
| 新增 / 删除 | 新增一道隔墙;删除一根柱 | 所有人——这是头条 |
| 类变化 | 一个 proxy 变成了 IfcWall | 协调员、造价工程师 |
| 属性 | 名称或标记被修改 | 负责明细表的人 |
| 属性集 | FireRating 从 EI 60 改为 EI 30 | 消防工程师、规格编写人 |
| 分类 | Uniclass 编码变化 | 造价和运维(FM)团队 |
| 材料 | 混凝土强度等级变化 | 结构工程师 |
| 包含关系 | 移到另一个楼层 | 协调员 |
| 文件 | 移到另一个专业模型 | 信息经理 |
只说“已更改”的差异报告,是一份要你逐个去看的清单;说明改了什么的差异报告,是一份你已经完成的审查。
五步完成每周审查
- 加载新的一批模型 整套文件作为一个场景加载。解析在浏览器中完成,保密模型不会离开你的电脑。
- 与上一版本或已保存的基线比较 基线是你保存在本地的快照——上周验收的状态,或与某个付款节点挂钩的状态——这样比较时就不需要打开旧文件。
- 先看汇总,再看 3D 新增一种颜色,修改一种颜色,删除另一种颜色。每个文件的汇总告诉你哪个专业动了,颜色告诉你动在哪里。
- 在两个版本上重新运行 IDS 同一条规范在新旧模型上分别评估,就能看出哪些要求已修复、哪些出现了倒退——而且不需要重新解析任何文件。
- 更新 BCF 需要处理的变化会变成带有来源版本标签的问题,这样下周的比较就不会重复提出它们。
第 4 步是比较从“看个热闹”变成质量控制的地方。如何准备规范见 IDS 详解;第 5 步见 BCF 2.1 与 3.0 的区别。
如何读比较结果而不被误导
- 大量属性变化却没有几何变化,通常意味着导出设置变了,而不是设计变了。先查导出模板,再去找建模人员。
- 同一个类上删除和新增的数量相近,是 GUID 被更换,而不是重新设计。按导出缺陷处理。
- 整层构件的包含关系都变了,通常意味着楼层被重新创建。构件没有动,动的是它们的父级。
- 零变化也是值得确认的结果。把基线和它自身比较一次——结果必须完全为空——这样你才能确定空的差异是真的。
比较也是判断新版本是否值得全面审查的最快方法。如果值得,交付前如何检查 IFC 模型 提供了完整流程。
如何比较两个 IFC 版本,准确看出改了什么