Methodology of 3D Geometric Modeling and Model Conversion of IFC-based BIM
-
摘要: 三维数字技术在建筑工程领域的应用,有效改变了传统的以点、线、面等二维图元组成的工程图纸的信息表达缺陷,是BIM(Building Information Modeling)的重要技术支律。三维几何模型有多种表达形式,总体上可以分为实体模型、表面模型和线框模型,三者具有不同的应用领域与适用范围。为了满足BIM在建筑工程不同阶段的应用需求,本文基于BIM技术,提出了一种基于AutoCAD图形引擎的BIM三维实体建模以及将其转换为表面模型的方法,并通过实例验证了其可行性。
-
关键词:
- IFC标准 /
- 建筑信息模型(BIM) /
- 三维建模 /
- 模型转换 /
- 建筑工程
Abstract: Contrast to the traditional paper-based information representation methodology which uses 2D graphic primitive elements such as point, line, face etc., the application of 3D digital technologies in A/E/C(Architec-ture/Engineering/Construction) domain significantly improves the efficiency of construction information communications and has become a key technical support of BIM (Building Information Modeling). The various types of 3D geometric representations can be classified into solid model, surface model and framework model, each of which can be applicable in specified application areas and scope. To meet the requirements of BIM applications in different phases of A/E/C, a methodology of 3D solid modeling and converting it into surface model of IFC-based BIM is proposed in this paper, which adopts AutoCAD graphic engine. Its feasibility is verified by some tests. -
1. 引言
按照建模方法的不同,三维模型可以分为线框模型、表面模型和实体模型。线框建模是利用基本线素来定义设计对象的棱线而构成的立体框架,模型是由一系列的直线、圆弧、点及自由曲线组成,描述的是产品的轮廓外型。表面建模是通过对实体的各个表面进行描述而构造模型。建模时先将复杂的外表面分解成若干个组成面,然后定义其基本面素。基本面素可以是平面或二次曲面,通过面素连接成组成面,各组成面拼接成模型。表面模型能够比较完整地定义三维立体的表面,生成逼真的彩色图像,可以直观地进行产品的外型设计,也可用作有限元法分析中的网格的划分。实体建模是在计算机内部以实体描述客观事物。通常通过长方体、圆柱体、球体、圆锥体、楔体和圆环体等基本体素来创建三维对象,然后对这些基本体素进行布尔运算形成更为复杂的几何实体。另外,实体模型也可以通过将平面对象沿路径拉伸或绕轴线旋转而得到。实体模型包含完整的几何拓扑信息,可以从其中提取实体的物理特性,如体积、表面积、惯性矩、重心等,导出实体数据进行有限元法分析,或者将实体模型退化为表面和线框对象[2]。
在计算机中创建和显示三维模型,必须有三维图形系统支持,常用的图形系统有OpenGL、Direct3D、Java3D等。OpenGL由美国高级图形和高性能计算机系统公司(SGI)开发,适用于三维图形应用程序设计接口,目前已成为开放式的国际三维图形程序标准[3]。Direct3D由微软推出,广泛应用于Windows平台及游戏开发。OpenGL和Direct3D均属于底层图形支撑系统,仅支持对点、线、面基本图元的渲染,对于复杂图形的渲染需要通过各种算法转化为对点、线、面的渲染。另外,由Sun公司开发的Java3D,具有平台无关性,适合于网络和单机图形应用程序的开发。Java3D采用面向对象的方式对基本的图形操作进行了封装,底层仍通过调用OpenGL或Direct3D进行图形渲染。
2. 三维几何建模及相关研究
三维几何模型是BIM建模的基础,是贯穿于建筑生命期的核心数据,这些数据在建筑生命期的不同阶段被创建和利用,包含了丰富的工程信息,例如通过建筑三维几何数据可以得出建筑构件的体积、空间位置、拓扑关系等工程信息。然而,建筑工程不同阶段的不同应用对三维几何数据的处理需求是不一样的。
表 1对不同类型的三维模型的特点及适用范围进行了总结。在建筑设计阶段, 基于BIM的设计软件创建的是三维实体模型。实体模型记录了完整的几何拓扑信息, 便于修改和编辑。然而, 实体模型的处理是一个相当复杂的过程, 涉及到许计算机图形学算法, 通常需要借助专业的图形引擎实现。在结构分析阶段, 通常采用线框模型便于各种结构计算分析。在施工阶段和运营阶段, 其主要应用是通过对三维模型的展现, 实现施工和运营过程的虚拟仿真, 对模型的运行效率和刷新时间要求很高, 因此表面模型更加适合。另外, 对于特定的应用, 表面模型具有更加便于处理的特点, 例如火灾模拟分析(FDS)、能耗分析、光照分析等。
表 1 三维几何模型的特点和适用范围模型类型 特点 适用范围 几何拓扑信息 修改和编辑 显示效果 图形显示难度 实体模型 完整 容易 好 大 建筑、MEP HVAC等设计 线框模型 不完整 困难 不好 小 结构分析 表面模型 较完整 困难 好 小 虚拟现实、火灾模拟、能耗分析、光照分析等 由上述分析可以看出, 设计阶段产生的三维实体模型处于BIM生命期的上游, 作为核心的产品模型数据将随着工程进展被下游应用所使用。由于对模型数据处理要求的不同, 需要将实体模型演变为其他形式的三维几何模型, 例如支持虚拟施工的仿真软件一般只能处理表面模型。一些学者对实体模型生成用于结构计算的线框模型算法进行了研究。本文则研究如何将实体模型转变为表面模型的方法。
目前三维模型的转换和显示有多种方法, 每种方法各具特点, 这些方法主要包括如下。
(1) 将实体模型转换为VRML格式, 通过VRML控件进行模型显示。VRML是一种通用的图形交换标准, 主要用于基于互联网的几何图形显示。对VRML模型的显示通过互联网浏览器的插件实现。Vineet R.Kamat[4]、Xiangyu Wang[5]等在其研究中便采用了这种方法。这种方法有两个缺点。首先, VRML的模型显示通过浏览器插件实现, 应用程序能够提供的对几何模型的人机交互界面取决于浏览器插件的功能。通常VRML插件功能有限且不支持再开发, 致使功能无法定制。其次, 由于VRML不支持布尔运算, 而无法进行相应的模型处理, 如在构件中开洞(墙中有窗的情况)等[1]。
(2) 开发实体模型转化器。通过开发实体模型转换器, 将实体模型转换为表面模型, 然后通过OpenGL、Direct3D等图形引擎显示模型。这种方法开发工作量大, 而且转换后的数据没有统一存储格式, 难以被其它应用程序使用, 数据的可重用性差。
(3) 开发轻量级三维图形引擎。一些研究者通过开发轻量级图形引擎, 面向专业应用进行三维实体模型处理。通常由于功能十分有限, 仅能处理数量有限的简单实体模型, 对于包含需要布尔运算的复杂模型处理则无能为力, 而且不具有通用性。
综上所述, 本文提出了一种基于AutoCAD图形引擎的BIM三维实体建模以及转换为三维表面模型的方法, 克服了上述方法中用户界面交互性不佳、模型转换后数据可重用性差、不具通用性等缺点。
3. BIM的几何数据描述
3.1 几何模型的类型
基于IFC的BIM可以存储多种类型的几何模型数据, 表 2列出了支持的几何模型类型。其中, Curve2D、GeometricSet、GeometricCurveSet用于描述由点、线、面基本图元组成的模型。SurfaceModel用于描述表面模型。SolidModel用于描述实体模型, 又可细分为SweptSolid、Brep、CSG、Clipping、Ad-vancedSweptSolid等多种类型。
表 2 IFC预定义的几何表达类型类型 说明 Curve2D 2维曲线 GeometricSet 点、曲线、表面(2维或3维)集合 GeometricCurveSet 点、曲线(2维或3维)集合 SurfactModel 表面模型 SolidModel 实体模型 SweptSolid 通过拉伸或旋转形成的扫略实体 Brep 边界描述实体 CSG 通过布尔运算生成的几何构造实体 ClPPing 通过布尔运算生成的几何构造实体
(特指通过差运算得到的实体)AdvanedSwepSolid 沿基线扫略生成的扫略实体 3.2 几何模型与建筑构件的集成
建筑产品包括建筑构件、配电构件、家具等, 均由IfcProduct实体派生。IfcProduct是一个抽象基类型, 定义了与几何表达相关的属性, 如图 1所示。
IfcProduct实体的ObjectPlacement属性定义坐标信息, 坐标信息既可以采用世界坐标、相对坐标, 也可采用相对于轴线网格的方式描述。通过坐标变换矩阵进行坐标变换可以得到建筑产品在世界坐标系的最终位置。
IfcProduct实体的Representation属性用于定义建筑产品的几何模型, 包括建筑产品的几何描述和料定义的几何描述。IfcProductRepresentation实体的Representations属性为列表类型, 可以为同一个建筑产品存储多个几何模型数据, 例如描述同一个建筑产品的实体模型、线框模型和表面模型。每一个几何模型对应一个IfcRepresentation实体的实例, 模型的类型为表 2中所列类型, 存储在Repre-sentationType属性中。
4. BIM几何实体模型的重建
AutoCAD是广泛使用的CAD软件, 具有强大的二次开发接口, 可以将AutoCAD作为三维几何图形引擎使用。随着.Net技术的不断成熟, Auto-CAD的二次开发不仅可以使用传统的ObjectARX函数库, 也可以使用基于.Net的AutoCAD托管函数库。本文基于AutoCAD 2007平台, 采用C#语言和.Net托管函数库, 实现重建实体模型和将其转换为表面模型, 使用ObjectARX中的Acbr函数库处理实体模型的三角形网格划分。
为了清楚阐述其实现过程, 本节以一个IfcProd-uct派生类实例的几何实体模型重建作为研究对象, 由于方法对于任何IfcProduct派生类实例是通用的, 因此通过遍历全部实例便可以实现对整个BIM模型的几何数据处理。重建几何实体模型的流程如图 2所示。
首先, 读取几何实体模型数据, 数据可以来自IFC文件也可以来自BIM数据库。BIM的实体几何数据以IFC几何资源实体表达, 实体分为表示运算符的实体和表示几何图元的实体, 构成由运算符和几何图元组成的二叉树结构, 最终表示的实体模型便是通过遍历该二叉树并进行坐标变换得到的结果。因此需要通过分析几何实体将其解析成几何操作和几何图元。由于二叉树具有多层嵌套关系, 对于一个上层的几何操作可能需要首先调用底层的几何操作, 将其返回的结果作为输入参数进行运算。因此, 判断当前几何操作是否为可直接执行的操作, 如果为“否”则继续执行分解几何操作和几何图元步骤, 如果为“是”则重建几何图元并执行几何操作。AutoCAD托管函数库提供了与BIM几何图元对应的几何类, 如表 3所示, 通过实例化对应的AutoCAD几何类, 实现几何图元的重建。实体的几何操作通过调用相应的成员函数实现, 表 3列出了与IFC实体对应的AutoCAD成员函数。以上两个步骤便生成了局部的几何模型。
表 3 BIM的几何图元与AutoCAD几何类IFC几何图元 AutoCAD几何类 IfcCartesianPoint Point3d IfcLine Xline IfcCircle Circle IfcPlane Plane IfcPolyline DBObjectCollection IfcArbitaryClosedProfileDef Region IfcExtrudedAreaSolid Solid3d 表 4 BIM几何操作与AutoCAD类的成员函数BM几何操作 AutCAD类的成员函数 IfcExtrudedAreaSolid Solid3d::ExtrudedAlongPath(); IfcBooleanClippingPesult Solid3d::BooleanOperation(); 然后需要根据BIM实体的坐标信息描述, 对生成的局部实体模型进行坐标变换。首先需要生成坐标变换矩阵, 通常坐标变换由多次变换组成, 可以通过矩阵相乘获得最终的变换矩阵, 便可以对实体进行坐标变换。
最后判断是否得到了最终的几何模型, 如果“是”则按照上述方法执行整体坐标变换, 如果“否”则将局部的几何模型返回, 激活挂起的操作, 继续流程图中的步骤。
上述几何流程可以对任意的IFC几何实体模型进行重建, 在图形引擎中生成相应的对象。然而, 若要基于创建的实体模型生成BIM表面模型, 则在建立最终的几何模型后需要记录当前生成的几何模型所属IfcProduct实例的GlobalId值, 以便将生成的表面模型集成到BIM模型中。在AutoCAD中可通过AutoCAD组(Group)记录GlobalId值, 即建立与GlobalId值对应的AutoCAD组, 并将已建立的实体模型添加到该AutoCAD组中, 从而实现对Glob-alId的追踪。
5. BIM表面模型的生成
5.1 BIM表面模型生成流程
BIM表面模型建模是通过读取BIM模型中已有的实体模型数据, 在三维图形引擎中进行处理, 最终将生成的表面模型数据集成到BIM模型中的过程, 如图 3所示。
建筑产品的几何模型通常在设计阶段创建, 与实体属性、工程信息等集成为BIM模型。几何模型的描述应用了IFC模型的资源实体, 这些实体不能独立用于信息交换。将实体模型通过三维图形引擎进行处理的过程, 需要追踪GlobalId值。当返回处理结果时, 可以通过GlobalId值定位到对应的建筑产品实体实例, 然后将新创建的表面模型集成到BIM模型中。表面模型的创建分为三个主要步骤:首先, 进行上一节介绍的几何实体重建; 然后, 对建立的实体模型进行三角形网格划分; 最后, 将三角形网格数据转换为表面模型数据并重新集成到BIM模型中。
5.2 实体模型的三角形网格划分
对实体模型的三角形网格划分通过调用Auto -CAD Acbr函数库实现, 流程如图 4所示。
对上节中建立的AutoCAD组进行遍历, 逐一处理组中的几何实体模型。首先, 打开组中的几何实体, 使其处于可读取状态。然后, 调用Acbr函数对实体进行三角形网格划分, 形成由三角形顶点数据组成的顶点集合Pts。这一过程通过调用Get3dSolidMeshVertices函数实现, 该函数以表示实体模型的objId为输入参数, 将计算生成的三角形网格数据以点数组的形式返回给参数pts。然后, 根据Pts数据在AutoCAD中创建3DFace三角形面对象。最后, 为了记录GlobalId, 将这些三角形面对象添加到与GlobalId对应的AutoCAD组中。
5.3 表面模型数据的集成
将三角形网格数据转化为表面模型的流程如图 5所示。对AutoCAD组进行遍历, 逐一处理组中的3DFace面数据。首先打开当前组中的3DFace表面对象, 对顶点数据进行访问。然后, 生成基于BIM的表面模型描述。最后, 获取当前组的GlobalId, 通过GlobalId在BIM模型中定位对应的IfcProduct实例, 从而将表面模型集成到BIM模型中。
为实现基于BIM的表面模型描述, 首先需要对BIM的表面模型结构进行研究。BIM表面模型的描述通过多个实体实现, 如图 6所示。IfcFaceBasedS-urfaceModel用于描述表面模型。表面模型的数据按照层次关系组成, 分别是面集合(IfcConnectedFac-eSet)-面(IfcFace)-面的边(IfcFaceBound)-多边形(IfcPolyLoop)-点(IfcCartesianPoint)。这些所需的数据已经在上个步骤中准备好, 需要按照上述层子结构转化为BIM表面模型的格式。最后将IfcFace-BasedSurfaceModel实例赋值给IfcShapeRepresenta-tion实例并集成到BIM模型中, 为了标识所创建的几何模型类型为表面模型, 将其RepresentationIden-tifier属性设置为“FaceBody”, RepresentationType属性设置为“SurfaceModel”。
6. 方法验证
为了验证提出的BIM表面模型创建方法的可行性, 本文选取基于BIM的建筑设计软件Revit进行建筑实体模型的建模。在Revit中建立了包含多种建筑构件的实体模型, 使用本文提出的方法, 成功将Revit模型进行BIM三维实体模型重建, 转换为BIM三维表面模型, 并将新创建的表面模型集成到原BIM模型中。图 7为Revit中建立的几何实体模型, 图 8为创建的表面模型。测试表明本文提出的BIM表面模型创建方法是有效可行的。
7. 结论
本文提出了基于BIM的三维实体模型重建和由实体模型转换生成BIM表面模型的方法, 可以满足BIM几何数据针对建筑工程不同阶段的应用要求, 提高了BIM模型数据的可重用性和适应性。
-
表 1 三维几何模型的特点和适用范围
模型类型 特点 适用范围 几何拓扑信息 修改和编辑 显示效果 图形显示难度 实体模型 完整 容易 好 大 建筑、MEP HVAC等设计 线框模型 不完整 困难 不好 小 结构分析 表面模型 较完整 困难 好 小 虚拟现实、火灾模拟、能耗分析、光照分析等 表 2 IFC预定义的几何表达类型
类型 说明 Curve2D 2维曲线 GeometricSet 点、曲线、表面(2维或3维)集合 GeometricCurveSet 点、曲线(2维或3维)集合 SurfactModel 表面模型 SolidModel 实体模型 SweptSolid 通过拉伸或旋转形成的扫略实体 Brep 边界描述实体 CSG 通过布尔运算生成的几何构造实体 ClPPing 通过布尔运算生成的几何构造实体
(特指通过差运算得到的实体)AdvanedSwepSolid 沿基线扫略生成的扫略实体 表 3 BIM的几何图元与AutoCAD几何类
IFC几何图元 AutoCAD几何类 IfcCartesianPoint Point3d IfcLine Xline IfcCircle Circle IfcPlane Plane IfcPolyline DBObjectCollection IfcArbitaryClosedProfileDef Region IfcExtrudedAreaSolid Solid3d 表 4 BIM几何操作与AutoCAD类的成员函数
BM几何操作 AutCAD类的成员函数 IfcExtrudedAreaSolid Solid3d::ExtrudedAlongPath(); IfcBooleanClippingPesult Solid3d::BooleanOperation(); -
[1] Faraj I, Alshawi M, Aouad G, et al. An industry foundation classes Web-based collaborative construction computer environment : WISPER [J]. Automation in Construction, 2000, 10(1) :79-99. https://www.sciencedirect.com/science/article/pii/S0926580599000382
[2] 徐光明, 麦范金.CAD曲面网格建模方法[J].机械设计与制造, 2007(10) :81-82. DOI: 10.3969/j.issn.1001-3997.2007.10.035 [3] 强大再, 陆长德, 余隋怀, 等.基于OpenGL的三维仿真实现机械科学与技术[J].机械科学与技术, 1999, 18(5):846-848. http://www.cqvip.com/Main/Detail.aspx?id=3828648 [4] Kamat V R, Lipman R R. Evaluation of standard product models for supporting automated erection of structural steelwork [J]. Automation in Construction, 2007, 16(6) :232-241. https://www.sciencedirect.com/science/article/pii/S0926580506000215
[5] Wang Xiangyu, Dunston P S. Real Time Polygonal Data Integration of CAD/Augmented Reality in Architectural Design Visualization [C]//Pro-ceedings of the 2005 International Conference. Cancun, Mexico, 2005.