返回 BIM 与 IFC 博客
几乎每个人都是导出 IFC 就直接发送,几乎没人先检查一遍。不是因为不在乎,而是“验证 IFC”这件事本身确实含糊。根据什么来验证?模式(Schema)?项目需求?还是能否在协调员的软件里打开?这是三个不同的问题,对应三种不同的工具。把它们混为一谈,正是这么多模型在公共数据环境(CDE)被退回的原因。
本文是一份实用路线图:“有效”到底指什么,检查的三种方法,每种方法能发现和发现不了的问题,以及在点击发送前十分钟内要过一遍的检查清单。
60 秒快速答案
如果你只需要在截止日期前检查一下模型,完整流程如下:
- 导出到本地文件夹 切勿直接导出到 CDE[iso19650]。
- 在浏览器验证工具中打开文件 文件在本地解析,不会上传任何内容。
- 查看 Health Score(健康评分),再按严重程度排序 看严重程度,而不是数量:一个严重问题比许多轻微问题更要紧。
- 在建模软件中修复根源,然后重新导出 Revit、ArchiCAD、Tekla,模型在哪个软件里建,就在哪里改。
切勿手动编辑 IFC 文本:这样做经常会破坏 GUID 和引用关系,由此产生的问题比原来的问题难找得多。
- 再次检查,然后附上评分上传 确认 Health Score 达到 80 分及以上,并记录在文件传递单上。
本文其余部分将说明每一步为什么必不可少,以及快速方法不够用时该换用哪种工具。
“有效”到底指什么
有效性分为两层,而且彼此独立。一个文件可能通过其中一层,却通不过另一层。
模式有效性
文件是否符合 IFC 标准(ISO 10303-21 语法、IFC 模式、MVD 规则)?一个文件可以在模式层面有效,却依然无法用于协调。
实用健康度
它在下游能否真正用起来?稳定的 GUID、正确的空间层级、已命名的构件、合理的坐标、齐全的属性集。模型被退回,往往就是因为这些问题,而这恰恰不是模式检查工具衡量的内容。
在这两层之上还有第三层:用 buildingSMART IDS[ids] 按照项目自身的信息需求检查模型。这一层属于信息交换要求(EIR),而不属于文件本身,另有专门的指南,参见 IFC 模型检查工具:模式、质量与 IDS。本文只讨论任何交付之前都必须通过的两层。
方法一:buildingSMART 验证服务
这是 buildingSMART International[bsi-validate] 提供的官方免费在线服务。它依据 IFC 标准[ifc-schema]判断文件的符合性:STEP 语法、模式符合性、规范性规则,以及与 buildingSMART 数据字典(bSDD)的一致性。它会生成权威的通过/未通过报告,是判断模式正确性的基准。
- 适用场景:证明文件符合 IFC 标准,尤其是需要正式声明或在合同中声明模式符合性时。
- 局限:它不提供“是否足以用于协调”的实用评分;而且需要把文件上传到服务端,对于不能发送给第三方的保密项目数据,这条路根本走不通。
方法二:IfcOpenShell(面向开发者)
如果你会写 Python,可以用 IfcOpenShell[ifcopenshell] 在命令行中验证:python -m ifcopenshell.validate model.ifc。它支持脚本化、免费、在本地运行,还能集成到 CI 流水线中,适合实现了 QA 自动化的团队。
# Validate an IFC file locally with IfcOpenShell
python -m ifcopenshell.validate path/to/model.ifc
# Pipe the results into your own pre-delivery checks
python validate_and_score.py model.ifc
- 适用场景:希望在脚本或构建流水线中完成验证的开发者和 BIM 自动化团队。
- 局限:没有 3D 视图,也没有一键生成的报告。只想知道模型有没有问题的协调员,不会为此去安装 Python。
方法三:浏览器内健康检查(30 秒)
把 IFC 文件拖进查看器即可。它通过 WebAssembly 在客户端解析,不上传任何内容;在后台线程中运行 44 条实用验证规则,给出一个 0 到 100 的 Health Score,以及可以对照 3D 模型查看的逐项问题明细。这正是另外两种方法没有覆盖的一层:快速、私密、实用地判断模型是否可以发送。
在线验证模型
打开 buildingSMART 的 duplex 示例模型,看看干净的 Health Score 和报告是什么样子,然后拖入你自己导出的文件,在交付前检查。你的文件始终不会离开你的电脑。
IFC2x3 · 2.4 MB
打开交互式 IFC 查看器
每种工具实际能查出什么
这三种方法并不是同一个问题的几种竞争答案,它们针对的是不同的故障。以下是如实的对比:
| 检查项 | buildingSMART 服务 | IfcOpenShell | 浏览器健康检查 |
|---|
| STEP / 模式符合性 | 是(权威) | 是 | 仅基本完整性 |
| 规范性规则与 bSDD | 是 | 部分 | 否 |
| 重复或格式错误的 GlobalId | 部分 | 部分 | 是 |
| 空间层级与孤立构件 | 否 | 部分 | 是 |
| 坐标远离原点 | 否 | 否 | 是 |
| 缺失属性集和名称 | 否 | 否 | 是 |
| 单一的可交付性评分 | 否 | 否 | 是(Health Score 0–100) |
| 可对照 3D 模型定位问题 | 否 | 否 | 是 |
| 无需上传文件即可运行 | 否 | 是 | 是 |
| 可在 CI 中脚本化 | 通过 API | 是 | 否 |
覆盖情况截至 2026 年 8 月。“部分”表示该故障可以被检测到,但不会作为有明确名称、可据此处理的问题报告出来。
什么时候用哪一种
以下情况用浏览器健康检查:
- 你想马上知道模型是否可以发送
- 文件保密,不能上传到任何地方
- 你需要一个可以写进文件传递单或 BIM 执行计划(BEP)的分数
- 你想对照 3D 模型查看问题,而不只是看日志
- 你是协调员,而不是开发者
以下情况用 buildingSMART / IfcOpenShell:
- 你需要权威的模式符合性认证
- 你要在 CI 流水线中实现 QA 自动化(IfcOpenShell)
- 你会写 Python,希望检查可以脚本化
- 合同要求提供正式的标准符合性声明
- 你明确需要满足 MVD / bSDD 要求
实用的发送前检查清单
无论使用哪种工具,下面这些才是模型真正被退回的原因。每一项都对应一条验证规则,并附有分步修复指南:
- 没有重复或超出取值范围的 GlobalId。
- 每个物理构件都位于某个楼层内,而不是直接挂在 Site 或 Building 之下。
- 根节点有且只有一个 IfcProject,且空间层级完整。
- 没有孤立构件,也没有断裂的聚合关系。
- 坐标合理:模型靠近世界原点,而不是远在几公里之外。
- 包含标准属性集;构件已命名。
- 任何 CDE 上传之前,Health Score ≥ 80。
评分偏低时怎么办
低分很少是对模型本身的定论,它指向的是导出设置。几乎所有故障都可以追溯到以下五个原因之一,而且每一个都要在建模软件中修复,而不是在 IFC 文件里修:
| 报告显示的问题 | 常见原因 | 修复位置 |
|---|
| GlobalId 与上次发布的版本相比发生了变化 | 导出时重新生成 GUID,而不是保留原有 GUID | 建模软件的导出设置 |
| 构件不在任何楼层内 | 导出时标高未标记为“Building Story” | Revit 中的标高设置 |
| 模型远离原点 | 以测量坐标导出,而不是共享坐标或项目坐标 | 导出前的坐标设置 |
| IfcBuildingElementProxy 占比过高 | 族没有映射到 IFC 类 | IFC 导出映射表 |
| 缺失属性集 | Pset 导出被禁用,或参数从未映射 | 导出配置 |
每一种都有专门的操作指南:为什么每次导出 IFC GUID 都会变、为什么你的 Revit IFC 导出总出问题、IFC 坐标不对,以及导出后 IFC 属性丢失。
把检查变成规则
依赖某人记得去运行的检查,算不上质量流程。把阈值写进 BEP,并把证据附在交付成果中:
| 交付阶段 | 最低 Health Score | 需附证据 |
|---|
| 内部概念评审 | 70 | 仅评分 |
| 协调轮次 / CDE 上传 | 80 | 评分 + 问题报告 |
| ISO 19650 里程碑,LOD 300+ | 90 | 评分 + 问题报告 + 已解决问题记录 |
阈值一旦商定,剩下的就是重复执行:本地导出、验证、修复根源、重新导出、附上评分交付。想从整个项目的角度全面了解 IFC 质量意味着什么,请参阅 IFC 质量完全指南。
参考文献
- ISO 19650-2:资产交付阶段 — ISO. 定义了 CDE 工作流程,以及信息容器何时可以共享。这正是检查必须放在上传之前的原因。
- IFC 验证服务 — buildingSMART International. 官方符合性检查工具:检查模式、规范性规则和 bSDD。需要上传文件。
- IFC 4.3 文档 — buildingSMART International. 标准本身:实体定义,以及符合标准的文件必须遵守的规则。
- IfcOpenShell — Open-source toolkit. Python/C++ IFC 库;其 validate 模块可在本地和 CI 中检查模式符合性。
- IFC 模型检查工具:模式、质量与 IDS. 项目需求(IDS)如何叠加在模式检查和质量检查之上。
发送前如何验证 IFC 文件(免费,无需上传)