AEC Ifc 结构学习
AEC(建筑、工程和施工行业)_百度百科 (baidu.com)
Industry Foundation Classes (IFC) - buildingSMART Technical
IFC 文件是一种开放的、非专有的文件格式,国际标准 ISO 16739,可用于在设计、施工、运行和维护阶段,在所有图形和不同软件开发的各种应用程序之间交换和共享数据房屋,而无需它们支持本机(专有)文件。
1 IFC 简介
Industry Foundation Classes (IFC) - buildingSMART Technical
BuildingSmart 官方网站已经给出了英文版的定义和说明;这里简单翻译一下:
IFC 架构以一种标准换的数据模型去组织数据
这些数据包含:人员、实体、属性、特征、关系、过程、抽象概念等
简单来说:就是以计算机编程面向对象的方法去定义了一套数据结构
IFC 可以定义建筑物、制成品、机械/电气系统的物理组成部分;同时也能定义:抽象的结构分析模型、能源分析模型、成本分解、工作计划等等。通过这套架构规范还可以描述如何使用设施和安装、如何构建、以及如何操作。
当然,IFC 不是一次就定义好的,它的定义是一个不断完善发展的过程,因此,存在多个版本。
主流的有:IFC2x3 和 IFC4
这里可以看到所有的版本定义:IFC Schema Specifications - buildingSMART Technical
1.1 IFC 可以用来做什么
简单来说有两点
- 数据交换
- 文件数据归档
1.2 谁来使用
前面说了 IFC 是使用计算机面向对象的方式定义的一套数据结构;
因此不难看出,IFC 的使用者肯定和软件开发相关,事实也是这样的。使用 IFC 的就是那些各种各样的软件公司开发的各种软件。每个软件都有自己的数据格式,但是一旦涉及到数据交换或者传递,他们都会选择一种通用的标准格式,这个格式就是 IFC。
Software Implementations - buildingSMART Technical 这里列出了使用 IFC 的各种软件。
1.3 IFC 文件格式
IFC Formats - buildingSMART Technical
IFC 文件只是广义上的一种统称,实际上,按照不同的数据格式可以划分成不同的文件格式。
简单来说:IFC 只是定义了一套数据结构,至于如何去描述这套数据结构可以使用不同的数据格式,比如说:xml,json,等。至于如何去选择,通常有以下几个方面的考虑:
- 软件的支持度
- 可扩展性
- 可读性
- 数据量是否很大
1.3.1 Official 官方的
Format | Extension | MIME Type | Text | Indexed | Size | Summary |
---|---|---|---|---|---|---|
STEP Physical File (SPF) | .ifc | application/x-step | Yes | No | 100% | STEP 物理格式(SPF 或 IFC-SPF)是 IFC 在实践中使用最广泛的格式,它是列出的可以作为文本读取的格式中最紧凑的格式。 IFC-SPF 基于用于 EXPRESS 数据模型的明文表示的 ISO 标准 ISO 10303-21 |
Extensible Markup Language (XML) | .ifcXML | application/xml | Yes | No | 113% | 可扩展标记语言 (XML) 提供了增强的可读性并从广泛的软件工具中受益。 ifcXML 基于用于以 XML 格式 ISO 10303-28 表示 STEP 数据的 ISO 标准 ISO 10303-28 |
ZIP | .ifcZIP | application/zip | No | No | 17% | IFC 数据可能嵌入在 ZIP 文件中。嵌入的数据可以编码为 SPF 或 XML,其中生成的大小通常是可比较的。 |
Terse RDF Triple Language (Turtle) | .ttl based on ifcOWL | text/turtle | Yes | No | 1372% | More info on: ifcOWL |
Resource Description Framework (RDF/XML) | .rdf based on ifcOWL | application/rdf+xml | Yes | No | 816% | More info on: ifcOWL |
1.3.2 临时/候选的
Format | Extension | MIME Type | Text | Indexed | Size | Summary |
---|---|---|---|---|---|---|
JSON | .json | application/json | Yes | No | 148% | JSON 通过广泛的软件工具提供增强的可读性和优势。 |
Hierarchical Data Format (HDF) | .hdf | application/x-hdf | No | Yes | n/a | HDF5 可以将 IFC 数据存储在分层数据库中,从而提供对工程数据的高性能访问。 HDF 基于用于 STEP 数据表示的 ISO 标准 ISO 10303-26 |
1.3.3 实验/不受支持的
Format | Extension | MIME Type | Text | Indexed | Size | Summary |
---|---|---|---|---|---|---|
SQLite | .sqlite | application/x-sqlite3 | No | Yes | n/a | SQLite 可以将 IFC 数据存储在关系数据库中,该数据库提供对大型模型中数据的索引访问,并受益于广泛的软件工具。 |
1.4 如何打开 IFC 文件
从上面可以看出,IFC 文件有多种格式。可以分为:文本类和非文本类;
如果你只是想看看数据,那么针对文本类的,你可以使用任何文本编辑器查看即可;
非文本类的就需要借助专业的软件来查看,比如说:专业的设计软件,或者数据库软件等;
2 IFC 数据结构说明
因为 IFC 定义了很庞大的一套数据架构,这里仅仅挑选与建筑设计相关的核心主要的数据结构定义进行说明
其他的如果有兴趣可以在官方文档查看 IFC Schema Specifications - buildingSMART Technical
同时为了便于说明,本文以 IFC2x3 版本进行说明。
Start Page of IFC2x3 Final Documentation (buildingsmart.org)
IFC 数据定义基于 3 个基本概念:他们的父类都是 IFCRoot(一个抽象类)
IfcObjectDefinition 定义实体本身(对象)
IfcRelationship 定义实体之间的关系
IfcPropertyDefinition 定义与实体相关的属性。
IfcRoot 是底层的抽象类,不能直接实例化,
他包含了一些基本信息:
名称 | 类型 | 说明 |
---|---|---|
GlobalId | IfcGloballyUniqueId | 软件系统内部的全局唯一 Id |
OwnerHistory | IfcOwnerHistory | 分配有关该对象的当前所有权的信息,包括拥有参与者,应用程序,本地标识和捕获的有关对象最近更改的信息,注意:仅存储最后一次修改。 |
Name | OPTIONAL IfcLabel; | 名称 |
Description | OPTIONAL IfcText; | 描述说明 |
2.1 IfcObjectDefinition
这是 IFC 实体对象的基类,UML 类图如上;
主要定义了两类信息:实体和实体类型
- IfcObject
- IfcTypeObject
2.1.1 IfcObject
包含了7个子类
- IfcActor 定义了所有参与施工过程中的角色。它可以轻松识别参与者,并包含姓名、地址、组织和角色等信息
- IfcControl 是控制或限制一般产品、过程或资源使用的所有概念的抽象概括。因此,它代表了设计约束。例如,在这个类中,我们可以包含影响项目规划的元素
- IfcGroup 是任意群的推广。组是对象的逻辑集合,它没有自己的位置,也不能包含自己的形状表示。因此,一个群是一个拓扑聚合。例如,我们可以将一组结构框架的元素关联到一个组中,这些元素根据特定方向翘曲。
- IfcProcess 代表随时间发生的活动,事件和程序。在IfcProcess 被定义为一个单一的活动或事件
- IfcResource 包含表示成本、计划和其他过程中使用资产的影响所需的信息。例如,出于成本估算的目的,目前未在 IFC 中建模的建筑设备(如车辆或土方机械)可被视为 IfcResource.
- IfcProduct 包括可以涉及一种几何/空间上下文的任何实体。当每个实体分配了几何表示时,它在空间中都有一个特定的位置。这种表示可以相对于其他实体来表达,但它肯定会相对于项目坐标系进行引用。除了真实的实体,IfcProduct 还包括非物理元素,例如网格、注释、结构动作。
- IfcProject 定义了一个项目
与建模直接相关的其实只有:IfcProduct、IfcGroup、IfcProject;其中最主要的两个概念是前两个,我们这里主要说明;
2.1.1.1 IfcProduct
这里我们只介绍红框里的核心数据定义
- IfcElement 基本对象(具有物理形体的)
- IfcBuildingElement 建筑对象实体定义
- IfcWall
- IfcWallStandardCase(基本墙)
- IfcDoor
- ……
- IfcBeam
- IfcWall
- IfcBuildingElement 建筑对象实体定义
- IfcGrid 轴网信息(定位使用)
- IfcPort 端口信息
- IfcSpatialStructureElement(空间对象)
- 建筑空间
- 楼层空间
- 场地
- 一般空间
2.1.1.2 IfcGroup
IfcGroup 定义了一组对象逻辑上的集合;他没有自己的位置、几何形体信息;
从上面的信息可以看出:一些系统可以形成一个组,一些分析模型可以形成一个组,一些空间 Space 可以形成一个区域 Zone 等等
2.1.2 IfcTypeObject
IfcTypeObject 主要用于描述 IfcObject 的类型信息,基本继承结构和 IfcObject 非常类似