满延磊 张其林 常治国
(1. 同济大学土木工程学院,上海 200092;2. 上海同磊土木工程技术有限公司,上海 200433)
BIM由于其优良的特性,自诞生之日起就受到了极大的关注。特别是随着计算机的发展,近几年 BIM应用更是取得了长足的进步[1-2]。在电力行业,由于变电构架的标准化程度更高,BIM应用也更加深入[3]。
在变电构架中,一个完整的BIM模型包含结构、建筑、给排水、暖通等多个专业的内容。由于专业跨度大,目前在电力行业,通常采用的BIM工作流程是不同专业在不同平台设计,然后在Revit中进行整体装配[4]。
本文与山西电力勘测设计院合作,深入研究了结构模型向Revit平台的数据转换。山西电力勘测设计院采用3D3S软件进行结构设计[5],需要将结构模型中的三维实体信息、塔段属性、塔段包含的杆件等信息导入到Revit中。
经实际调研发现,通过IFC导入Revit是较常用的方式,但是目前在大多数研究中导入到Revit的信息仅限三维实体且导入方式单一[6-8]。
基于此,本文深入研究了 IFC的数据转换,比较了不同的导入方式的优缺点,实现了三维实体信息、塔段属性、塔段包含的杆件等信息向Revit的转换,实现了变电构架的多专业协同。
在IFC中,三维实体的形状由IfcRepresentationItem进行表示,IfcRepre-sentationItem是多种形状的父类[9]。对于三维几何实体,常用的表示方式有两种:一种方式是拉伸等方式形成的实体,用IfcExtrudedAreaSolid来表示;另外一种方式是通过三角面片进行拟合,用IfcFacetedBrep表示。IfcExtrudedAreaSolid与Ifc Faceted Brep均为IfcRepresentationItem的子类。
图1所示为两种表示方式在Revit中的显示效果,图1(a)为拉伸实体表示,图1(b)为三角面片表示,从图中可以看出,在Revit中两种方式显示上基本无差别,曲面显示时由于三角面片对曲面进行了拟合,显示精度略低。
经实际使用比较,此两种有各自的优点和缺点,对比如表1所示。
拉伸实体的优点是数据量小,生成的IFC文件大小一般在10M以下,模型打开速度快,Revit打开时一般在10秒以内,同时模型在Revit中能够进行编辑;拉伸实体的缺点为不同的实体的截面不一致,拉伸方式不一致,编程工作量大,同时对于已经切割过的杆件,无法用拉伸实体表示。
三角面片表示法的优点为任意实体都能表示,表示方式统一,编程工作量小;缺点是数据量大,生成的IFC文件经常在1G以上,模型打开慢,Revit打开时一般在3分钟以上。
秀丽的女士说:“当然可以。我们这里经常住进艾滋病人,当他们还没有丧失最后的活动能力的时候,他们很愿意坐在这张椅子上看看风景。”
表1 拉伸实体与三角面片拟合对比
因此本文采用折中的方法,对于非切割实体采用拉伸实体表示,对于切割实体用三角面片表示。具体流程如图2所示。
图2 三维实体转换流程
在变电构架中,杆件以塔段为单位形成组,以组为单位定义属性。在转成IFC文件时,组的信息需要保留。在 IFC中,组有如下常用的三种表达方式:IfcGroup, IfcElementAssembly, IfcMappedItem,本文对此三种方式进行了研究与比较。
(1)IfcGroup
IfcGroup表示集合。IfcGroup从IfcObject派生,而并非从IfcProuct派生,因此IfcGroup是一个抽象的对象,用来表示逻辑上的集合关系。本文用Revit对转换效果进行了测试,发现Revit在导入IFC时并不能识别IfcGroup的信息,因此导入到 Revit中时组别信息丢失。在Revit中的显示如图3(a)所示,三根杆件同属于一个IfcGroup,但是在Revit中并没有显示出来:
图3 三种类在Revit中的表现
(2)IfcElementAssembly
IfcElementAssembly表示部件,一个部件可能由多个小零件组成,因此IfcElementAssembly也表示集合关系。与 IfcGroup不同的是,IfcElementAssembly从IfcProduct派生,因此IfcElementAssembly是一个实体。用Revit对用IfcElementAssem-bly导出的IFC文件进行测试,测试结果表明Revit支持IfcElementAssembly的导入,同一个组的实体在 Revit中是一个整体,但是Revit对IfcElementAssembly的支持存在缺陷,主要表现在以下两个方面:a)Revit表现不稳定,组别信息并不能每次都能识别出来,多数情况下同一个组的实体在Revit中仍然不是一个整体,同时有概率性的组别信息识别不全,如图 3(b)所示,三根杆件属于同一个IfcElementAssembly,但是在Revit中只显示两个杆件属于同一组,这意味着组别信息出错;b)无法正确识别属性。给IfcElementAssembly赋予的属性在Revit中无法识别,Revit中显示的IfcElement-Assembly的属性为其某个子实体的属性。
图4 塔段的转换流程
(3)IfcMappedItem
IfcMappedItem表示图块,图块中可以包含若干子实体,因此IfcMappedItem也可以表示集合关系。经过实际测试,Revit支持IfcMappedItem的表示法,在Revit中同一组的实体均作为一个整体出现,且能正确的转换属性,Revit中的表现如图3(c)所示。
经过上述的比较分析,本系统最终选择了IfcMappedItem的方式。整个流程如图4所示,一个塔段对应一个 IfcBuildingElementProxy,提取塔段中的所有杆件,塔段中的所有杆件通过IfcMappedItem生成一个 IfcProductDefi-nitionShape,将 IfcProduct Definition Shape赋值给IfcBuilding Element Proxy,这样完成将所有的杆件形状作为一个图块显示,最后根据塔段的类型给IfcBuildingElementProxy附加不同的属性:
需要注意的是,使用IfcMappedItem时,组内的实体是单纯的几何实体,而不具有物理意义,因此组内的几何实体无法附加自定义属性。但是对于变电构架来说,属性均是以组为单位定义的,因此通过IfcMappedItem转换可以接受。
经实际测试,通过IfcMappedItem表示的实体在导入到Revit之后为一个族,族的形状由多个几何实体形成的几何图块来表示,此时在 Revit中无法捕捉,而Revit并没有将坐标系开放给用户,因此导入到 Revit中的结构模型无法与其他专业的模型进行精确的组装。
本文对此进行了特别的处理。当导出到IFC时,将坐标原点也导出到IFC中。IFC中没有表示“点”的实体,本文采用球来表示坐标原点,同时 IFC中的单纯的几何实体没法加入到模型中,必须定义一个有实际意义的单元,然后将几何实体作为形状属性附加到单元上。本文定义了IfcCivilElement表示此具有实际意义的单元,通过 IfcSphere定义几何形状,然后将IfcSphere作为属性附加到IfcCivilElement中,生成的用来定位的坐标球如图5左下角所示。
图5 用于组装定位的球体(左下角)
在进行模型组装时,在Revit中打开中心捕捉可以捕捉到球心,通过坐标原点反算出需要移动的距离,从而将模型进行精确组装。
本研究与山西电力勘测设计院合作进行。图6是3D3S中设计的750kV格构式变电构架,图中左边对话框中是塔段信息。
图6 结构模型在3D3S中的显示
图7是通过IFC导入到Revit中后与其他专业的模型组合,在Revit中塔段为一个整体,且以组为单位转换了属性。
图7 结构、建筑、给排水、暖通总图
图8 塔段在Revit中的属性显示
IFC的目的是提供一种通用的文件格式供各行各业共享数据。但是经过实际调研发现市面上软件对IFC标准支持力度仍有待提高[10;11],主要表现在以下两方面:
(1)软件支持的IFC实体不全面。比如前文中提到的IfcGroup以及IfcElementAssembly,Revit支持这两种实体的导出,但是不支持导入。
(2) IFC标准包含的内容非常广泛,常常在细节部分存在多义性,不同的软件对IFC标准的理解不同也可能导致数据共享失败。比如在IFC官方文档中,IfcShapeRepresentation的属性 Represen-tationIdentifier以及RepresentationType标识为可选属性(OPTIONAL),但是在实际测试中发现,此两个属性不赋值会导致Revit无法读取实体形状。另外在 IFC官方文档中,IfcParameterizedProfileDef中的 Position属性可以不设置,不设置表示不对截面进行平移或者旋转操作,但是在导入 Revit时 Position不设置的话会导入失败。DDS-CAD是一款支持打开IFC文件的小软件,此款软件无上述问题。
由于以上两个原因,单纯的通过 IFC来交换数据很可能达不到实际的要求。在本系统中,通过IfcMappedItem的导入方式可以满足工程的实际需求。若有其他需求,比如要求塔段是一个整体,同时塔段内部的杆件也需要附加属性,由于Revit的导入支持的力度不够,目前单纯通过IFC文件交换数据还很难实现。这时就需要在Revit中开发插件,对其IFC导入功能进行扩充。
本文针对当前主流的变电构架BIM工作流程,对变电构架结构模型通过IFC文件向Revit转换做了深入的研究,主要研究内容如下:
(1)分析对比了在IFC中用拉伸实体以及三角面片表示三维实体的优缺点,最终确定了在变电构架中采用二者结合的方式;
(2)尝试了IFC中三种组的表达方式,最终确认Revit不支持 IfcGroup以及 IfcElementAssembly的导入,但是Revit支持IfcMappedItem的表达方式,虽然IfcMappedItem能够存储的信息比前二者少,但是基本能够满足本项目的需求;
(3)针对导入的IfcMappedItem无法在Revit捕捉而导致无法与其他专业的模型进行精确装配的问题,本文设计了增加坐标原点进行辅助定位的方式,实现了多专业模型的精确装配;
(4)指出了目前通过IFC进行数据交换时存在的缺陷,通过IFC进行无损的数据交换仍需要进行第三方辅助开发。