基于IFC4x1的桥梁信息模型转换研究
2019-05-22
(同济大学桥梁工程系,上海 200092)
1 引言
行业基准分类(Industry Foundation Classes,IFC)由BuildingSMART(原国际协作联盟,IAI)发布并维护,它是为建筑业量身定做的产品模型标准数据模型[1]。从1994年发展至今,IFC标准在建筑工程等领域已经得到了广泛的应用,但还未在道路、桥梁、隧道等线状工程中得到普及,这是因为在IFC4以及更早版本的框架中缺少表达土木基础设施语义的实体[2]。为了进一步支持基础设施工程领域的信息共享,buildingSMART成立了专门委员会Infrastructure Room,并发起了IFC Alignment、IFC Bridge等多个子项目[3],Alignment(线形)作为基础设施项目所需的公有资源[4](图1),被列为首个需要集成到IFC标准中的项目。IFC Alignment 1.0在2015年7月被接受为buildingSMART的认证标准,随后又耗时两年与IFC4 schema集成,经过多次修订以及公开评审,IFC4x1 Final于2017年6月正式发布[5],标准中引入了与Alignment相关的概念、实体和属性,使得IFC数据模型能够完备地描述道路的平、竖曲线,同时增强了基于道路平、竖曲线定位空间构件的能力。
建筑物的全生命周期中会经历规划、设计、施工、运维等多个阶段,基于IFC的BIM模型作为工程信息的载体将在这一过程中不断丰富,并支持各个阶段和领域间的信息共享。在桥梁的设计过程中往往需要反复调整设计参数并验算结构安全,工程人员无法避免地需要根据变更过后的图纸或模型在计算软件中重新建模,因此本文提出了把IFC中性文件作为模型信息交换的载体来简化前处理从而减少重复工作的方法。
图1 Alignment在IFC Infrastructure项目中的中心地位[4]
一些学者已经对IFC模型与有限元模型的交换进行了相关研究:秦领等研究了基于IFC的建筑模型与结构有限元模型的数据共享与交换,并提出了通用结构有限元模型平台以支持多种有限元软件格式[6],张晓洋等提出了IFC-API建筑结构转换模式,从而解决建筑设计向结构设计的信息断层问题[7];但二者讨论的范围限于建筑结构,因此笔者选取了桥梁设计中常用的计算软件Midas Civil作为桥梁IFC模型转换的目标平台,详细分析了基于线形的IFC实体与有限元模型的映射关系,并基于开源工具箱xBIM开发了IFC模型转换程序。
2 IFC Alignment体系
不同于房屋建筑这类“点状工程”,道路、桥梁等“线状工程”拥有路线起点、桩号、平竖曲线等工程要素,表达这些语义的实体在IFC Alignment体系中定义并最终纳入到IFC4x1的框架中,本节对其中一部分内容进行了介绍。
新增的IfcAlignmentCurve等几何资源实体封装了平、竖曲线的信息描述方式,如图2所示,各实体之间的关系通过UML类图表示。其中,空心菱形箭头表示聚合关系(Aggregation),实心菱形箭头表示组合关系(Composition),三角形空心箭头表示泛化(Generalization),敞开箭头表示关联(Association)[8]。下面以竖曲线为例说明UML类图所表示的实体关系与属性的含义:
IfcAlignmentCurve的属性Vertical引用了实体IfcAlignment2DVertical(竖曲线),其属性Segments是元素类型为IfcAlignment2DVerticalSegment(竖曲线段)的非空数组,表示竖曲线由1或多段竖曲线段组成。
竖曲线段的属性StartDistanceAlong表示该段竖曲线起点距离路线起点的距离(以平曲线长度计);属性HorizontalLength表示该段竖曲线所对应的平曲线段长;属性StartHeight和StartGradient分别表示该段竖曲线起点的标高(在所属IfcAlignment的局部坐标系下)和斜率(坡度)。
IfcAlignment2DVerticalSegment又可进一步特化为三种具体的竖曲线段类型:直线段、圆弧段和抛物线段,三者拥有从共同父类继承的上述公共属性,并具有描述自身不同几何特性的特有属性。描述平曲线的实体具有上述类似的性质,区别在于平曲线段需要额外引用平面曲线段实体(IfcCurveSegment2D)才能表达平面线形,该实体类型具有平面直线段、平面圆弧段、平面缓和线段三个特化类型。
上述IFC数据模型完备地描述了平、竖曲线的相关信息,使得道路、桥梁、隧道等结构的构件可以将它们作为定位元素,从而在局部坐标系下描述自身的几何信息。
图2 IfcAlignmentCurve及相关实体的概念模型
3 基于IFC的桥梁信息模型表达
本节将详细探讨如何利用IFC数据模型表达基于平、竖曲线定位的桥梁上部结构主梁,并主要从定位、几何形状和材料特性三个方面进行阐述。
3.1 定位
IFC4x1以前主要借助实体IfcLocalPlacement描述构件的位置,它通常作为抽象实体IfcProduct(建筑产品)的属性ObjectPlacement被引用,而它自身引用它所参考的笛卡尔坐标系并描述一个新的局部坐标系,在局部坐标系下定位的实体通过多次坐标矩阵变换可以得到最终的坐标位置[9]。但该种方式不适用于基于曲线定位的几何实体,因此IFC4x1中引入了实体IfcDistanceExpression,表1列出了该实体的属性定义,它用沿线距离、横向偏移、竖向偏移等几个参数描述了参照曲线来定位的一个笛卡尔点的位置。
表1 IfcDistanceExpression实体属性定义
3.2 几何形状
IFC4x1中引入了实体IfcSectionedSolid(多截面实体)来表示沿曲线有截面变化的扫掠实体,表2列出了它的特化IfcSectionedSolidHorizontal的属性定义,属性Directrix表示所参考的曲线,它可以直接引用实体IfcAlignmentCurve,也可以引用基于IfcAlignmentCurve偏移得到的实体IfcOffsetCurveByDistances;属性CrossSections引用实体IfcProfileDef来表示截面形状,属性CrossSectionPositions则引用3.1所介绍的实体IfcDistanceExpression来表示每个截面相对参考曲线的位置,这两个属性对应的数组元素个数相等且至少为2。
如图3[10]所示的多主梁钢板梁桥,单根钢主梁用继承自抽象实体IfcProduct的IfcBeam描述,其几何表示引用了实体IfcSectionedSolidHorizontal。
表2 IfcSectionedSolidHorizontal实体属性定义
图3 钢板梁桥IFC模型示例[10]
实体IfcProfileDef可特化为多种具体的截面形式,包括(非)对称I形截面、T形截面等参数化截面(均由实体IfcParameterizedProfileDef特化),适合描述规则的截面形式;同时也可以表示任意形状截面,即通过一组或几组多段线描述截面的外轮廓和内轮廓。除截面的几何形状外,实体IfcProfileDef还可以通过反属性HasProperties与预定义属性集Pset_ProfileMechanical关联,该属性集包含了截面面积、抗弯惯矩等截面特性的定义。需要注意的是,预定义属性集是IFCschema中定义的一种信息扩展的机制,并不代表每一个软件厂商在实现IFC时一定会使用它,因此即使IFC文件中有关于截面的描述,但也不一定有关于截面特性的描述,在信息提取时需要根据情况进行处理。
图4展示了IFC物理文件中一段用实体IfcBeam及其属性描述I形截面主梁的数据样例,以“#”为前缀的数字代表实体的实例号,每个实例在单个文件中只能被定义一次,但可以被多次被其他实例的属性所引用。
图4 EXPRESS语言描述的IFC文件数据段示例
3.3 材料特性
位于资源层的实体IfcMaterial描述一种材料的基本属性,包括名称和分类,更具体的材料特性诸如容重、弹性模量等通过关联Pset_MaterialCommon、Pset_MaterialMechanical等预定义属性集来表达。在用IFC文件描述的一项实际工程中,IfcMaterial的实例必定通过关系实体IfcRelAssociatesMaterial与某一具体的产品实例(如IfcBeam)关联,否则不具有任何意义。
4 IFC模型到MCT模型的映射
将IFC模型作为数据交换与共享的平台有效减轻了不同软件之间私自交换数据的实现代价,但仍需要考虑到IFC模型与数据交换目标平台之间的数据映射,接口设计不当或未考虑全面都有可能造成信息的丢失[11]。本文选取了常用的桥梁计算软件MIDAS Civil作为目标平台,讨论了以*.ifc文件作为输入进行解析和处理,最终输出为*.mct文件(MIDAS支持的脚本文件,可直接导入生成有限元模型)的过程。
4.1 IFC数据读取
IFC实例文件以STEP格式存储,访问其数据最常用的是早联编(early binding)和晚联编(late binding)两种实现方法[12]。IFC Wiki整理了支持IFC文件读写的一些开源项目[13],笔者经调研后选择了对IFC4x1 schema支持较好的xBIM Toolkit,该工具箱核心库XbimEssentials采用C#语言实现了IFC数据模型,并提供了完整的API(程序编程接口)供开发人员使用[14],图5中的C#代码展示了如何调用xBIM所提供的接口读取IFC文件中的信息。读者也可以选择用任何一种编程语言自行实现IFC文件读写功能,好处是方便对schema进行扩展,但开发工作量较大且运行效率不易保证。
图5 调用XbimEssentials API获取IFC数据代码示例
4.2 MCT数据模型
通过分析MIDAS使用手册附录中的MCT命令说明,抽象出图6所示的类关系图来模拟建立计算模型所需要的数据结构。所有的资源类均继承自抽象基类MCTRoot,因此拥有共同属性Id,具体到不同的资源表现为节点号、单元号、材料号和截面号。表示节点数据的类MCTNode较为简单,除Id外只拥有X、Y、Z三个坐标值作为属性;表示材料特性的类MCTMaterial和表示截面特性的类MCTSection根据材料类型、截面类型的不同,具有不同的属性参数,并可以进一步派生出更多子类;尤其对于MCTSection,图6只展示了包含共同属性截面名称、截面类型等的抽象基类,开发的过程中可以根据实际情况派生出所需要的类并定义其特有的属性,如第5节中的转换程序用到了表示I形截面的类MCTHSection;表示单元的类MCTElement根据单元类型的不同将引用2至多个节点实例,并关联对应的截面号和材料号。
4.3 数据映射
获取IFC模型数据后,需要对相关实体的信息进行一定程度的处理才能映射到MCT数据模型上。处理工作包括:
1)从模型中过滤出需要进行数据交换的实体(IfcBeam);
2)从上一步过滤得到的实体出发,通过其属性和关系收集所有映射时需要用到的实体(IfcMate rial、IfcAlignmentCurve等);
3)解析实体包含的信息并映射到各自对应的MCT类。
图7展示了IFC数据模型中相关实体与MCT数据模型相关类之间的映射关系。
图6 MCT数据模型UML类图
图7 IFC数据模型和MCT数据模型映射关系
对于同一个几何体,IFC数据模型的描述方式与MIDAS计算模型中的描述方式并不完全相同,因此需要进行一些额外的处理计算。以图8所示的I形截面梁为例,在IFC模型中该扫掠实体的中心线位于截面包围盒的中心,而计算模型中梁单元的单元参考线位于截面形心,为非对称截面时二者并不重合,因此需要事先计算出截面的形心位置,并在生成单元节点坐标时考虑该偏移量。
从图8的例子可以看到,基于IFC的BIM模型有时可能并未包含计算模型所需要的全部信息(如截面特性),需要对缺失的信息进行补全,因此数据映射时应根据需求充分考虑两种数据模型之间的共性和差异,尽量减少数据交换过程中信息的丢失。
图8 非对称I形截面
5 方法验证
为了验证本文提出的IFC模型与MIDAS模型映射的方法,笔者开发了模型转换程序原型,主程序采用C#语言编写,IFC文件解析部分调用开源库XbimEssentials。以IFC 4.1 Bridge Information Exchange-2017 [Draft]提供的模型[15]为测试文件作为转换程序的输入,成功将桥梁上部结构的钢主梁和混凝土桥面板转换为MIDAS计算模型,如图9所示,经对比验证,材料、截面等信息保持完整。尽管当前主流的BIM建模软件还不支持IFC4x1格式的导出,但可以利用支持IFC4x1读写的工具如本文采用的xBIM输出IFC数据以供进一步测试。
图9 模型转换实例
对于类似的结构,在传统的方法中需要依靠工程人员从图纸或模型中识别出建立计算模型需要的信息,然后手动在MIDAS软件中通过“自底向下”的方式依次输入建立节点、单元等所需要的数据,这一过程将耗费较长时间,并且当设计变更导致主梁的线形发生变化时,往往需要重新建模,由此带来了大量的重复工作;而采用本文提出的方法将由程序自动完成信息的提取和映射工作,尽管开发模型转换程序会耗费掉一些时间,但程序可被重复调用以解决同一类问题,因此对比传统方法,本文提出的基于IFC文件进行模型转换的方法具有明显的优势。
6 结语
随着标准的不断扩展和完善,IFC数据模型将逐渐成为适用于整个土木建筑工程领域的通用数据存储与交换模型,但要打破建设工程项目的信息孤岛还需要各领域研究者进行更加深入的研究。本文提出的数据映射方法可在一定程度上减少桥梁设计人员重复建模的工作,但仍留有以下问题需要在今后的研究中解决:
1)IFC模型可以简化为不同的计算模型,如计算整体受力时可以采用梁单元,而进行局部板件受力验算时则需要简化为板单元或实体单元模型,数据映射模型应根据实际需求的不同进一步完善。
2)不同阶段的IFC模型细度不同,其中一些可能未对构件之间的连接关系进行描述,或者描述信息不完整,模型映射时如何处理这些连接还需要进一步研究。
3)本文的研究是在IFC4x1 final的基础上进行的,根据后续IFC版本的更新,桥梁信息模型的描述方法和数据映射方法都需要进行补充和调整。