Research on Resolving Method of IFC-based BIM Model Programing Language
-
摘要: IFC标准定义了建筑信息模型交换的数据格式,为面向建筑全生命周期的信息交换和共享提供了标准的数据定义和数据模型,是目前对建筑信息描述最全面、最详细的标准,是解决建筑行业BIM软件之间数据交换性和互操作性问题的重要标准。但是IFC基于EXPRESS语言来定义建筑信息交换与共享,EXPRESS语言本身不是编程语言且不可被计算机编译执行,因此使用计算机编程语言解析和处理基于IFC标准的BIM模型,是BIM软件开发的基础和关键技术。本研究利用开源的Java插件,解析基于IFC的BIM模型,生成相对应的IFC实体类,在此基础上,利用Java语言来具体编程实现不同的应用功能,为下一步的基于IFC标准的土木建筑工程BIM软件开发奠定了基础。Abstract: The IFC standard defines the data format for the exchange of BIM modelsand provides a standard data definition and data model for the information exchange and sharing of the whole building life-cycle.It is the most comprehensive and detailed standard for building information description and the key concern to solvethe data exchange and interoperability issues between BIM software.However, the IFC standard is based on EXPRESS language to define the building information exchange and sharing, and the EXPRESS language itself is not a programming language that fails to be compiled by the computer compiling.Therefore, it is the foundation and key technology of BIM software development to use the computer programming language to parse and process the IFC-based BIM model.This research uses the open source Java plug-in to analyse the IFC-based BIM model and generate the corresponding IFC entity class.Based on the resolving of IFC models, different software functions can be programmed by using Java language, based on which the next step of IFC-based BIM software development can be realised.
-
IFC(Industry Foundation Classes)标准是buildingSMART International[1]制定和维护的建筑信息模型BIM数据交换标准,从IFC4开始,IFC标准已经被ISO国际标准组织接受为ISO 16739。IFC是一个开放、标准化、支持扩展的通用数据模型标准,已被建设行业接受为国际标准,其目的是使BIM软件在建筑业中的应用具有更好的数据交换性和互操作性。IFC是开放的建筑信息模型数据表达和交换标准,为面向建筑全生命周期的信息交换和共享提供了标准的数据定义和数据模型。IFC基于EXPRESS语言来定义土木建筑工程领域信息交换与共享的数据表达。EXPRESS语言是描述产品信息模型的标准语言,EXPRESS不是编程语言并且不可以被计算机编译执行,但是可以被JAVA、C++、C#等面向对象的编程语言识别和处理。因此,使用计算机编程语言识别和处理土木建筑工程领域基于IFC标准的数据表达和数据交换,以及IFC标准的计算机编程语言实现方法,是基于IFC标准的土木建筑工程BIM软件开发的基础和关键技术。
1. IFC标准概述
开放性的国际标准IFC描述了建筑产品各方面的信息,定义了建筑信息交换的数据格式和建筑物及其附属物的信息交换格式,是目前对建筑信息描述最全面、最详细的标准。从IFC的2X3版本开始,加入了GIS数据信息以及GUID,目前的最新版本是IFC4。IFC使用EXPRESS语言来描述建筑对象、实例关系、对象属性以及几何、度量等资源。IFC采用STEP Part21文件描述BIM信息,即保存BIM信息的物理文件格式为STEP Part21格式。
当前被广泛支持的IFC2X3版本包含600多个实体定义,300多个类型定义,IFC标准的信息描述由四个层次组成,代表不同的级别,从底层到顶层包括:资源层、核心层、共享层和领域层,如图 1所示。位于最底层的资源层用来描述基本属性的实体,包括几何信息资源、成本资源、拓扑资源、几何模型资源、结构荷载资源、几何约束资源等,通常作为上层实体的基础信息定义。核心层定义了模型的核心框架,包括核心资源、控制扩展、产品扩展、过程扩展等。共享层包含最常用的实体以及跨专业交换的信息,包括共享的建筑构件组成部分、共享的管理组成部分、共享的设施组成部分等。领域层包括各领域具体的概念定义,包括建筑领域、结构构件领域、结构分析领域、电气领域等。
基于IFC标准的完整BIM模型由类型定义、函数、规则和属性集组成。IFC模型的重要组成部分是类型定义,由实体类型、选择类型、枚举类型和定义类型四种类型组成。其中实体类型是IFC模型的核心,是信息交换和共享的载体,而其他类型是以属性值的方式作为实体类型属性的引用。在IFC层次体系中,核心层、共享层和领域层中的所有实体类型有一个共同的抽象基类IfcRoot。IfcRoot是处于顶层的抽象类,它有三个主要的继承类:IfcObjectDefinition、IfcPropertyDefinition以及IfcRelationship。这三个抽象类及其继承类构成了IFC模型的核心,处于核心层。而其他实体则主要由这三个抽象类继续派生,构成了不同领域和专业的实体类型,处于共享层和领域层。IfcObjectDefinition的派生类IfcObject有七个主要的继承类,包括IfcActor、IfcGroup、IfcProduct、IfcControl、IfcProcess、IfcResource和IfcProject。它们构成了Ifc模型的核心信息交换实体。IfcPropertyDefinition及其继承类定义了Ifc模型常用的属性信息,并且提供了信息扩展方法。IfcRelationship及其继承类为Ifc模型提供了实体与实体之间、实体与属性之间等各种复杂关系的定义。
2. IFC模型的计算机编程语言解析方法
IFC模型是基于EXPRESS语言描述的开放性的建筑信息数据格式。EXPRESS语言是一种面向对象的、规范化的数据描述语言,重点在数据的描述和定义,EXPRESS语言不是计算机编程语言,不能被计算机编译和执行。因此基于EXPRESS语言的IFC模型需要首先被解析,以生成相对应的IFC实体对象,建立实体对象之间的层次结构关系,并且通过C#、C++或者Java等计算机语言来具体编程实现不同的应用功能。目前基于IFC标准的BIM软件开发有很多,包括IFC模型浏览器[2]、基于IFC标准的BIM模型格式检查与验证[3]以及基于IFC标准的几何模型的解析[4]等。
有三种主要的解析方法可以将基于EXPRESS语言定义的IFC模型与具体的计算机编程语言进行绑定,以形成可供计算机调用的程序。这三种方法为早绑定、晚绑定和混合绑定。早绑定指在计算机编程语言中为IFC模型中的每一个实体创建具体的数据结构,并且能够通过编程访问具体的数据。晚绑定指通过EXPRESS数据字典来访问具体的数据,优点是实现简单,缺点为缺乏类型检查以及编程接口API不够友好。混合绑定指结合了两者的特点,但在具体软件开发中使用较少。
由于IFC是开放性的BIM标准,经过多年的发展,出现了许多商品化和开源的IFC开发工具和插件。例如典型的商业化工具平台EPM Technology,包含的系列IFC开发工具有:EDMdeveloperSeat Basic,EDMdeveloperSeat Professional,EDMmodelMigrato,EDMmodelConverter等。Eurostep的IFC Active Toolbox,以及STEP Tools的ST-Developer等。开源的IFC工具箱包括BIMserver和IFC Tools Project等。这些IFC工具及插件提供了较为完整的EXPRESS数据读写及访问功能,能够有效地处理IFC模型数据。通过使用这些工具和插件,使快速开发基于IFC标准的BIM软件成为可能,研究人员可以较少关注底层解析IFC模型的具体方法,而将大量的精力用在针对解决建筑行业具体问题的软件功能开发。
本文以其中IFC Tools Project为例,探讨基于IFC标准的BIM模型解析方法。IFC Tools Project[5]提供了一个面向对象的早绑定Java插件,用来解析基于IFC2x3和IFC4的BIM模型。这个插件可以方便的读取、写入、更改和添加IFC文件,将IFC实体映射为Java类,并且对应的Java类包含了IFC实体的所有属性,以及支持IFC实体的反转属性。
这个插件主要由三部分组成:
(1) 每个IFC实体都有相对应的Java类。每个Java类都提供能够读取和设置对应IFC实体属性的方法,利用这些类的方法可以非常方便的读取和设置包括反转属性在内的所有属性。IFC框架体系中所有实体的继承结构都体现到了相对应的Java类的继承结构。IFC框架体系中所有定义类型和实体类型都映射为相应的接口。
(2) IFC文件解析器,可以解析IFC STEP文件和IFC Zip文件。
(3) 核心IFC模型IfcModel,用来读取IFC文件,操作IFC模型中所包含的IFC实体,增加与删除IFC实体。
通过调用IfcModel类的文件读取方法,IFC模型将会被加载到内存并且所有IFC实体将会被初始化,如图 2所示。
以IFC标准为基础的BIM模型,其空间结构的组织形式包括项目、场地、建筑、楼层、空间等。其中IfcProject是整个模型的根实体,也是IFC模型解析的起点。图 3展示了在Java程序中创建IfcProject类的实例,以及获得所有IFC实体对象的集合。每一个IFC实体的属性,都可以通过相对应的Java类包含的get-和set-方法读取和设置,如图图 4所示,IfcWall实体的representation属性可以通过对应的IfcWall类的getRepresentation()方法获得。
3. IFC模型解析实例分析
本文选取的IFC测试模型为BuildingSMART提供的IFC文件,版本为IFC2x3,如图 5所示。图 6为对应的BIM模型。Java开发环境为Java 8、Eclipse Luna、SWT/JFace、RCP等。IFC测试文件包括IfcWindow、IfcOpenElement和IfcWall三个实体,每个实体都有自己的属性信息,包括宽度、高度、面积等。测试的目的为解析IFC文件,获取三个实体的物理属性信息,即IfcPhysicalSimpleQuantity实体所包含的数值信息。
如图 7所示,在IFC文件的属性信息描述和关联机制中,属性集是通过IfcDefinedByProperties关系实体将IfcObject与IfcPropertSetDefinition描述的属性集信息相关联。IfcPropertSetDefinition有三个派生类实体,其中IfcElementQuantity定义了建筑构件的物理属性信息,其通过Quantities属性,包含一个或多个IfcPhysicalQuantity实体。IfcPhysicalQuantity有两个派生类,其中IfcPhysicalSimpleQuantity实体包含了单个的物理属性值,它有六个派生类实体,每个实体表达一种物理属性。例如IfcQuantityLength代表构件的长度值,IfcQuantityArea代表构件的面积等。
如图 8所示,通过循环和迭代器,读取测试文件中的所有IfcRelDefinesByProperties实体,判断IFC标准的版本,以及进一步读取相关联的构件实体与属性集信息。
图 9展示了通过循环和迭代器解析IFC模型IfcElementQuantity实体的方法。
图 10展示了通过判断和调用类相对应的方法,解析IfcPhysicalSimpleQuantity实体,以及读取建筑构件不同物理属性信息。
通过编程对IFC模型的结构体系进行深入解析,读取IFC实体的数据,并且将数据保存在Java容器中,最后用Java JFace中的TableViewer将所有建筑构件的物理属性信息显示出来,如图 11所示。
4. 结论
IFC标准是基于EXPRESS语言描述的一种建筑信息模型数据表达格式。EXPRESS语言不是计算机编程语言,不能被计算机编译和执行。本文利用开源的Java插件,首先解析基于EXPRESS语言的IFC模型,生成相对应的IFC实体类,建立实体类之间的层次结构关系,在此基础上,利用Java语言来具体编程实现不同的应用功能。研究人员可以较少关注解析底层IFC标准的具体方法,而将大量的精力用在针对解决建筑行业具体问题的软件功能开发,为下一步的基于IFC标准的土木建筑工程BIM软件开发奠定了基础。
-
[1] IndustryFoundation Classes IFC Official Release[R]. buildingSMART, http://www.buildingsmart-tech.org, 2015.
[2] Owolabi, A., Anumba, C.J., EI-Hamalawi, A., Harper, C., Development of an Industry Foundation Classes Assembly Viewer[J]. Journal of Computing in Civil Engineering. 2006, 20(2): 121-131. DOI: 10.1061/(ASCE)0887-3801(2006)20:2(121)
[3] Zhang, C., Beetz, J., Weise, M., Model view checking: automated validation for IFCbuilding models[C]. eWork and eBusiness in Architecture, Engineering and Construction ECPPM. 2014:123-128.
[4] 张建平, 张洋, 张新.基于IFC的BIM三维几何建模及模型转换[J].土木建筑工程信息技术, 2009, 1(1): 40-50. http://www.cnki.com.cn/Article/CJFDTOTAL-TMJZ200901008.htm [5] IFC Tools Project, http://www.ifctoolsproject.com/, 2016.