张其林,舒沈睿,满延磊
(1.同济大学土木工程学院,上海 200092;2.上海同磊土木工程技术有限公司,上海 200433)
21 世纪初,建筑信息模型(BIM)的概念被正式提出,并在短时间内引发建筑产业的信息化革命。建筑信息模型以三维实体模型为主,将建筑的设计、施工、运营等全寿命周期内的信息集为一体,便于建筑工程各方人员协同工作[1]。作为建筑信息模型的主要组成部分,建筑结构的实体模型早在设计阶段就已建立。为避免重复建模,同时作为BIM 协同工作的基础,实体模型中的各类信息需要完整传递至业内各方,供各方人员读取、编辑、使用及完善。由此可见,建筑结构三维实体模型的数据交互非常重要,对建筑结构实体模型各类数据交互的研究迫在眉睫。
实体模型数据交互的关键就是模型信息的无障碍互通共享。然而,由于建筑工程领域各类软件所支持的模型文件格式不同,结构实体模型的数据交互实际上非常困难,常发生信息错误、信息丢失的现象。为了提供统一的数据描述格式,国际智慧建筑联盟(Building SMART International)制订了建筑工程领域的公共数据转换标准——工业基础类(IFC)标准[2]。采用数据描述语言Express 编写IFC 格式数据,囊括建筑工程领域各专业的各种数据类型,可准确描述各类建筑信息。由于IFC 标准引入了封装、继承与多态的面向对象思想,因此采用IFC标准描述的数据具有准确、层次清晰、扩展性与可读性高等优点[3]。在IFC标准共计6个版本中,目前应用较为广泛的是IFC2x3 版本。利用IFC 标准进行数据交互,就是将实体模型的数据改写为符合IFC 标准的*.ifc 格式文件,供其他支持IFC 标准的建筑软件打开、读取与编辑,然后将建筑结构模型数据传递至行业各方[3]。
目前,对使用IFC 标准进行数据交互的研究主要集中于各类信息尤其是几何信息的表达方式上。相关研究指导了IFC 格式文件中拉伸实体[4]、面片拟合实体及曲线杆件[5-6]、力学结构与荷载信息[7]的表示方法。此外,针对不同具体的结构形式,桥梁[8]、高铁接触网[9]、道路[10]等多种实体模型的IFC格式文件转化方法及IFC标准扩展也得到了一定的研究。这些成果主要着眼于几何信息的准确转换,为各类BIM模型转化成IFC格式数据提供了理论指导。然而,现有研究并未深入讨论如何保留基本三维外观以外的其他模型信息,因此依然无法避免信息错误与信息丢失等问题的发生,难以和IFC 格式数据交互的实际需求[11]接轨。
在商业应用领域,各类建筑结构深化软件或BIM 软件中均有提供IFC 格式数据的交互功能,但从效果看,几何信息粗糙、参数化程度低导致的信息错误与信息丢失现象依然存在[12-13]。如图1所示,某钢结构深化设计软件在IFC格式数据交互过程中出现了支托板几何数据显示错误的现象。此外,对于一些通用BIM 实体建模软件如Revit、ArchiCAD、VectorWorks、AdvanceSteel 及proStructure 等,实体模型转换成IFC格式数据后,构件几何尺寸、切割信息、杆件参数有丢失的风险。如图2所示,一旦发生参数丢失,建筑结构构件实体将退化成为无属性的三维实体,丧失建筑结构的特性。这些问题的产生,部分是由于IFC 标准尚不完善[14],大部分则是由于IFC 格式数据交互算法不够严密[15]。在实际工程中,为处理上述问题,设计与建模人员往往需要在第三方软件中手动修改IFC 模型,其工作量不亚于重新建模。由此可见,现有的结构实体模型IFC 格式数据交互技术远未达到完善的程度。
图1 几何数据表达错误Fig.1 Mistakes of geometrical data representation
图2 信息丢失Fig.2 Losses of information
现有IFC格式数据交互技术已可较为准确地描述模型几何造型,但信息丢失现象依然严重。与力学分析模型不同,结构三维实体模型造型复杂,完整描述建筑结构实体模型需要大量的细节参数,这就要求软件开发人员为各类模型参数编写专门的IFC格式数据转换算法,十分繁琐。为简化生成IFC 格式文件的流程,许多软件均采用参数化程度较低的转换方式,如将复杂构件整体表达为B-rep 面片实体,而非若干扫掠实体的布尔运算集合。这样处理的好处是无需编写截面、轴线、空间变换、布尔运算等各类参数的转换算法,带来的缺陷就是参数全部丢失,生成的IFC格式文件为纯粹的三维图形,结构信息无法提取,几乎没有建筑及结构层面的意义,并且难以在现有IFC 格式数据基础上进行修改和使用。因此,这样的IFC 格式数据交互无法满足实际使用需求。
基于上述分析,现有实体模型IFC 格式数据转换过程中信息错误、信息丢失等问题屡屡发生,从根本上是由转换算法的参数化程度较低导致的。为改进此问题,提出了一种针对复杂建筑实体模型的参数化IFC格式数据交互技术。如图3所示,与非参数化方法不同的是,参数化数据交互技术不仅着眼于几何信息的准确表达,还希望通过IFC 格式数据交互的完善,尽可能将实体模型的截面、轴线、空间变换、布尔运算等各类参数完整转换为IFC格式数据。生成的IFC格式文件将纯三维实体升级为建筑信息模型,可无障碍提取结构信息,便于行业各方使用及二次编辑,实现了建筑结构实体模型数据高水平的互联互通。
图3 参数化与非参数化IFC格式数据交互技术Fig.3 Parametricandnon-parametricdataexchange method of IFC formate
2.1.1 几何实体描述方式
实体模型构件几何信息的参数化交互是整个数据交互过程中最主要的部分。IFC标准支持多种实体描述方式。其中,应用最广泛的为扫掠实体IfcSweptAreaSolid(见图4a)及B-rep 边界实体IfcFacetedBrep(见图4b)。
扫掠实体IfcSweptAreaSolid 包括了拉伸实体、旋转实体等类型,是从某一基本截面着手,通过拉伸、旋转等操作生成。扫掠实体完整保留了截面、方位等各类参数,是一种参数化程度较高的实体表达方式,但缺陷在于通用性低,仅适用于规则的几何造型,难以描述异形构件。
B-rep边界实体IfcFacetedBrep由表面网格化的三角面片拟合而成。对于建筑构件而言,B-rep边界实体包含的信息为该实体表面的拟合面片,并不包括构件实体的截面、长度、方位、布尔运算等信息,参数化程度很低。B-rep 边界实体的主要优势在于极强的通用性。只要网格划分合理,拟合面片精度符合要求,就可准确地描述任意不规则实体,如曲线杆、曲面板等没有扫掠特征的异形构件。2种实体表达方式对比如表1所示。
2.1.2 布尔运算
实体建模过程中,往往需要在扫掠实体构件端部、节点等部位进行切割、合并等操作。经过这些操作后,实体不再是完全规则的扫掠实体。若按照非参数化方法直接使用B-rep 边界实体描述,则相当于只转换了切割、合并操作后的结果,并未记录切割信息与建模的过程,导致几何实体内大量建模参数丢失,后续亦难以对模型进行修改,这也是非参数化方法的重要缺陷及信息丢失的主要原因。
图4 IFC实体表达方式Fig.4 IFC solid representation methods
表1 IFC实体表达方式对比Tab.1 Comparison of IFC solid representation methods
为大幅减少B-rep边界实体的数量,提高IFC格式数据交互技术的参数化程度,需要引入IFC布尔运算来表达三维实体的切割、合并等操作。IFC标准支持布尔并(union)、交(intersect)、差(difference)3种运算,可将实体模型构件的切割、合并等几何运算视为若干实体的布尔运算结果。图5为一典型IFC布尔差运算的二叉树表示。布尔运算二叉树的叶子节点为参与运算的实体,称为布尔算子(IfcBooleanOperator),非叶子结点为并、交、差等布尔运算符(IfcBooleanOperand)。对该二叉树进行中序遍历即可得到布尔运算的表达式,最终得到的运算结果(IfcBooleanResult)即为切割、合并完成的实体模型。
图5 IFC布尔运算二叉树Fig.5 Binary tree of IFC Boolean operation
IFC标准中参与布尔运算的布尔算子可以为任意实体或布尔运算结果。一般而言,为保证模型的参数化水平和参数化编辑性,参与布尔运算的实体均应为参数化实体。如图6所示,在建筑领域,大多数细节构造可采用扫掠实体的布尔运算结果表示,这一类实体保留了构件本身及切割信息在内的所有参数,参数化程度最高,被称为CSG 体素构造实体(IfcCsgSolid)。对某些较为复杂的细节构造,如不规则曲面切割,则必须引入带有B-rep 边界实体的布尔运算。这类实体保留了部分扫掠实体特征,在B-rep边界实体范围内为面片拟合,参数化水平略高于纯B-rep边界实体,低于CSG体素构造实体。
布尔运算不仅涉及实体范畴,还应包括面切割。在IFC标准中,使用面进行布尔运算是非法的,必须将面转换为实体。若切割面为平面,则可将切割面转换为一类特殊的实体,即半空间体(IfcHalfSpaceSolid)。如图7所示,半空间体由边界面与深度方向定义,边界面即为切割面,深度方向即为切割方向。显然,半空间体切割是一种参数化较高的方式。若切割面为曲面,则无法用半空间体替代,一般需要转换为B-rep实体进行表达,参数化程度较低。
图6 2种IFC布尔运算实体Fig.6 Two types of IFC Boolean solid
图7 半空间体定义Fig.7 Definition of half-space solid
2.1.3 空间方位参数
在非参数化方法中,由于构件被表达成B-rep边界实体,其端点、朝向等方位参数被转化为拟合面片的方位信息。若需要对构件的空间方位进行编辑,则只能修改拟合面片的坐标,难以精准定位截面形心等特征点。
在参数化方法中,大多数构件采用拉伸实体或CSG体素构造实体描述,保留了空间方位信息,避免了信息丢失及二次修改困难的问题。杆件等拉伸实体的空间位置均采用楼层坐标系、局部坐标系与杆件坐标系等3 层坐标体系表示,定义于属性ObjectPlacement。如图8 所示,局部坐标系定义了构件相对楼层坐标系的局部空间位置,控制构件的插入位置;杆件坐标系定义了杆件截面与轴线相对于局部坐标系的位置,控制构件的偏心与朝向。若要修改构件的空间方位,则只需直接修改3 个坐标系的相应参数。
2.2.1 材料参数与自定义属性参数
材料参数与自定义属性参数描述建筑结构构件的材料、编号、截面名称等参数,通常采用关联属性表示。关联属性是将某一构件与其对应的材料(IfcMaterial)或属性集(IfcPropertySet)进行关联,从而附加材料信息或杆件编号、截面名称、表面处理等其他属性。材料及属性的关联采用IfcRelAssociatesMaterial 与IfcRelDefinesByProperties等IFC关联实体表达。关联实体首先引用构件,再引用材料或属性集。定义材料属性时需要写入材料的名称;定义属性集时,需要同时写入属性项目名称与属性值。
图8 杆件的空间坐标体系Fig.8 Coordinate system of bars
2.2.2 组信息
组信息包括构件组信息与节点组信息。当构件成组时,组内的子构件被关联为一个整体,组成为构件加工厂进行加工及运输的基本单元,在深化设计、施工管理中具有重要的意义。
虽然现有主流BIM 软件都有组的概念,但是ArchiCAD、VectorWorks 等许多大型通用BIM 建模软件并不支持将组信息转换为IFC格式数据。在少数支持组信息转换的软件中,构件组与梁、柱、板、零件平级,同属于构件的范畴。如图9 所示,“组-构件”层次被简化为单一的“组”层次,导致子构件信息大量丢失。这是由于IFC 标准中构件无法相互引用,子构件被整合为组时必须放弃构件的身份,只作为纯粹的三维实体块被组引用,进而丢失了材质、编号、截面名称等属性。
图9 “组”层次与“组-构件”层次Fig.9 ‘Group’level and‘group-elements’level
为保留组内各子构件的属性,参数化数据交互方法采用了聚合关系IfcRelAggregates 描述组信息,聚合关系描述构件之间整体与部分的关系。如图10所示,采用聚合关系描述组时,组不再是一种构件,而是构件之间的一种关系。聚合关系中的“整体”(RelatingObject)用抽象的IfcElementAssembly 表示,提示此处存在组关联。子构件则形成集合,作为聚合关系中的“部分”(RelatedObjects)。通过聚合,“组-构件”的层次不变,子构件的构件属性及其他相关属性也得以保留,避免了信息丢失的发生。
图10 基于IFC标准的参数化组信息示例Fig.10 Example of IFC standard-based parametric group information
结合上文所述的参数化数据交互方法及对IFC标准的现有研究与应用成果,得到如图11所示的实体模型参数化转换为IFC格式数据的基本框架。
图11 实体模型IFC格式数据框架Fig.11 Hierarchy of IFC formate data of solid model
模型数据框架首先需要定义模型的基本空间。IFC标准中的模型空间依次为场地空间、建筑空间与楼层空间。各楼层空间内又通过局部坐标系定义了该楼层的各个构件方位。各楼层空间之间的坐标体系采用依次继承的相对坐标系IfcLocalPlacement。
构件是结构实体模型中的基本单元,包括梁与支撑、柱、板、墙及螺栓、锚栓、抗剪键、焊缝等其他构件,布置于给定的模型空间内。各类构件均由抽象类IfcBuildingElement 派生。表2 为构件转化为IFC格式数据所需的主要数据类型。构件的几何实体由其表示属性IfcProductDefinitionShape 表示,主要包括拉伸实体、布尔运算以及少量的B-rep边界实体。构件的属性通过各类关联信息表示,包括组信息、材料信息及自定义属性。
表2 实体模型IFC格式数据Tab.2 IFC formate data of solid model
为将上述参数化实体数据交互技术实例化,在同济大学钢结构深化设计软件3D3S Solid的基础上实现了结构实体模型数据交互技术。3D3S Solid由C++语言与AutoCAD 开发接口ObjectArx 对AutoCAD 二次开发而成。在3D3S Solid 中获取实体模型数据,使用开源的IfcOpenShell引擎生成IFC格式文件,设计了自动提取模型信息并生成IFC 格式数据的计算机程序。
提取出3D3S Solid 三维实体信息后,其IFC 格式数据由各实体的writeIFC()虚函数生成。三维实体的父类为ObjectArx 中的三维实体类AcDb-3dSolid,而IfcOpenShell 接口为外部接口,无法直接将AcDb3dSolid 转化为IFC 实体,故在ObjectArx 开发环境中设计了派生自IfcOpenShell 接口类的子类IFC_Fty 以 对 接 IfcOpenShell 与 ObjectArx。IFC_Fty 的成员函数可读取ObjectArx 中的各种类实例,也可以执行C++、ObjectArx 及IfcOpenShell的命令。在writeIFC()中执行IFC_Fty 的各成员函数,可生成模型几何信息、切割信息、关联属性的IFC 格式数据,并将IFC 格式数据传递给IfcOpenShell。程序结构如图12所示。
图12 程序结构Fig.12 Program structure
选取某一实际会展中心工程的3D3S Solid 模型,通过IFC导出功能生成该模型的IFC格式文件,并在Revit、ArchiCAD、NMBIM 等软件中打开。Revit 与ArchiCAD 为BIM 建模设计软件。NMBIM为上海交通大学自主研发的BIM协同管理平台[16],具有国产自主、严格遵循IFC标准、对复杂大型模型兼容性更强且优化效果更好等优点,非常适用于会展中心等庞大模型。经过校核,模型中各类信息均被转化为相应的IFC 实体,并且被各类软件准确表达。会展中心实体模型IFC格式数据交互效果如图13所示。
图13 会展中心实体模型IFC格式数据交互效果Fig.13 IFC formate data-exchange results for solid model of exhibition center
图14 为采用Express 语言描述的会展中心某构件组参数化IFC 格式数据示例。如图14 所示,#17601 描述了构件组信息,组#17601 及子构件梁#6360、板#6679―#8011、螺栓#8102 等均被聚合关系#20269所引用。梁#6360的几何信息是由梁本身的拉伸实体#6080 与#6286 等切割实体经过布尔差运算而成,梁的空间信息继承自局部坐标系#38 与杆件坐标系#6079,梁的各类其他属性#6283―#6285 组成属性集#6418,被属性关联#6419 引用。板#6679―#8011与螺栓#8102等子构件的IFC格式数据与梁#6360相似。上述数据构成了一个完整的构件组信息表达。
图14 某构件组IFC格式数据示例Fig.14 Example of IFC formate data for an element group
模型的参数化程度是本研究关注的重点。选取前文提及的3款支持IFC格式文件导出功能的BIM建模软件,完成实体模型的建模并导出IFC 格式数据,最后与采用参数化数据交互技术的3D3S Solid软件进行信息保留率的对比,对比结果如表3所示。表3 中,信息保留率指的是模型信息可成功转化为相应IFC信息的数量百分比。模型中各类信息数量可从软件的统计功能中读取或计算得出,IFC 格式文件中各类信息数量可通过IFC格式文件解析软件IfcViewer以IFC参数的类名为关键词统计得出。
表3 各软件IFC格式数据交互测试结果Tab.3 Test results of IFC formate data-exchange for different modeling softwares
由表3 可见,各软件均准确地将所有构件以各种方式转化为IFC 格式数据,但所得IFC 格式数据的参数化程度不同。除极少量异形构件及B-rep面片切割体外,3D3S Solid 中构件的空间方位、截面、切割信息均被参数化转换,而其余软件至多参数化转换了纯拉伸实体,无法参数化转换布尔运算实体,参数化程度低。有的软件则将所有构件转换为Brep面片实体,丢失了全部的方位、截面及切割信息。此外,3D3S Solid采用了参数化的组信息交互技术,而其余软件有些非参数化地转换了组信息,导致子构件属性信息丢失,有些则无法转换组信息。由表3可见,所述参数化数据交互技术保留了97.90%的实体模型参数,高于现有商业应用技术30%~40%,并且基本符合IFC 格式数据交互中避免信息错误、信息丢失的要求。
针对现有建筑结构实体模型IFC格式数据交互技术参数化程度较低、信息错误及信息丢失严重的现状,提出了参数化的IFC 格式数据交互技术。该技术的运用可极大提高IFC格式数据交互的信息完整性与参数化程度,显著降低模型修改和重建所需的工作量。参数化IFC格式数据交互技术重点改进了布尔运算与组信息的表达方式,如:采用IFC布尔运算记录了模型构件的细节建模过程,保留了模型几何实体的切割、合并等信息;采用组信息表示聚合关系,保留了“组-构件”的层次关系及子构件属性参数。布尔运算及组信息聚合关系的引入是避免实体模型IFC格式数据信息错误、信息丢失的重要举措。在3D3S Solid 实体建造软件的基础上使用C++语言及ObjectArx二次开发工具进行编程,实现了所提出的IFC 格式数据转换技术。经测试,通过该功能生成的IFC格式数据文件能够在主流BIM软件中准确表达并能二次编辑,信息完整度好。相较现有主流IFC 格式数据交互技术,参数化交互技术的模型信息保留率提高了30%~40%,可显著促进建筑行业各方的数据互通与协同工作,提高工作效率。
作者贡献声明:
张其林:提出研究思路,指导研究方案,设计论文框架,审阅论文,提供技术及经费支持。
舒沈睿:调研及整理文献,参与研究工作,参与程序编写,起草并修订论文。
满延磊:调研及整理文献,参与研究工作,指导程序编写,审阅并修订论文。