2. IFC标准基础
IFC(Industry Foundation Classes)是建筑信息模型(BIM)领域最核心的开放数据交换标准,由国际组织 buildingSMART(原 IAI)负责维护。理解 IFC 标准是打通 BIM 设计端与造价软件数据通道的前提。本节从发展历程、核心架构、数据模型层次三个维度展开。
2.1 IFC标准发展历程
IFC 标准自 1997 年首次发布以来,经历了多个重要版本迭代,逐步从建筑几何交换扩展至全生命周期数据共享。
| 版本 | 发布年份 | 核心特性 |
|---|---|---|
| IFC 1.0 | 1997 | 首个版本,覆盖建筑几何与基本构件 |
| IFC 2.0 | 1999 | 增加建筑服务、结构分析领域 |
| IFC 2x | 2003 | 引入平台架构(IFC2x Platform),支持扩展 |
| IFC 2x3 | 2006 | 最广泛使用的版本,覆盖建筑、结构、MEP |
| IFC 4 | 2013 | 新增属性集、引用、IFCXML 改进 |
| IFC 4x3 | 2022 | 扩展基础设施(桥梁、道路、铁路) |
造价对接要点:目前国内造价软件对接以 IFC 2x3 和 IFC 4 为主。IFC 4 在属性集定义上更规范,更适合提取工程量与成本信息。
2.2 IFC核心架构
IFC 采用面向对象的数据建模方法,核心架构由四个层次构成,自底向上依次为:资源层(Resource Layer)、核心层(Core Layer)、共享层(Shared Layer)、领域层(Domain Layer)。上层实体可以引用下层实体,但下层不能引用上层,保证数据模型的单向依赖与稳定性。
2.3 IFC数据模型层次
IFC 数据模型采用 EXPRESS 语言定义,并通过 IFCXML(XSD 格式)和 IFC-SPF(STEP 物理文件格式)两种序列化方式交换数据。数据模型层次从宏观到微观可分为:
- Schema(模式):整个 IFC 标准的数据定义集合,如 IFC4 的完整模式。
- Entity(实体):核心数据单元,如 IfcWall、IfcSlab、IfcCostItem。
- Attribute(属性):实体的直接属性,如 IfcWall 的 Name、Description。
- Property Set(属性集):动态扩展的属性集合,如 Pset_WallCommon。
- Relationship(关系):实体之间的关联,如 IfcRelAggregates(聚合)、IfcRelDefinesByProperties(属性关联)。
造价关键实体:IfcCostItem(成本项)、IfcCostValue(成本值)、IfcCurrency(货币)、IfcConstructionResource(施工资源)、IfcProduct(产品,用于关联构件)。
2.4 IFC数据序列化格式
IFC 标准支持两种主流序列化格式,造价软件对接时需根据场景选择:
| 格式 | 文件扩展名 | 特点 | 造价对接适用性 |
|---|---|---|---|
| IFC-SPF | .ifc | STEP 物理文件,纯文本,体积小,解析快 | 推荐用于批量导出与解析 |
| IFCXML | .ifcxml | XML 格式,可读性好,支持 XSLT 转换 | 适合与 XML 造价系统集成 |
| IFC-ZIP | .ifczip | 压缩包,包含 .ifc 和 .ifcxml | 用于网络传输与归档 |
注意:IFC-SPF 文件中的实体引用采用 # 编号(如 #123=IfcWall(...)),造价软件解析时需建立实体 ID 映射表,避免数据丢失。
2.5 IFC与造价对接的关键实体
在 IFC 标准中,与造价成本直接相关的实体主要集中在 IfcCostItem、IfcCostValue、IfcConstructionResource 及其关系链中。以下为典型实体结构示例:
#100=IfcProject('3sB$...', 'Project', '某办公楼', $, $, $);
#200=IfcWall('2aF4...', 'Wall', '外墙-01', $, $, #300, #400);
#500=IfcCostItem('4cG5...', 'CostItem', '外墙砌筑', $, $);
#600=IfcCostValue('5dH6...', 'CostValue', $, 350.00, 'CNY', $);
#700=IfcRelDefinesByProperties('6eI7...', $, $, (#200), #800);
#800=IfcPropertySet('7fJ8...', 'Pset_CostData', $, (#900));
#900=IfcPropertySingleValue('8gK9...', 'UnitPrice', $, IfcReal(120.50), $);
实践建议:在 BIM 建模阶段,为构件添加 IfcRelDefinesByProperties 关联至 IfcCostItem,并利用 IfcCostValue 记录单价与总价,可实现设计模型到造价数据的自动映射。