Research and Implementation of IFC based Structural BIM Model Creation and Data Management Techniques
-
摘要: 结构计算模型与BIM模型的融合是实现BIM在结构工程中全面应用的关键环节,本文研究钢筋混凝土结构计算模型的数据格式,根据计算模型中的构件数据和配筋数据分别生成包含混凝土构件和钢筋的IFC模型,并基于分布式数据库存储完成IFC模型合并以及数据管理的相关技术。基于本文研究成果和开发的相关软件,可以由结构计算模型生成准确的结构BIM模型,该模型可应用于碰撞检测、工程量统计、施工图生成等场景。通过项目应用验证了本文方法的有效性。Abstract: The integration of structural calculation models with BIM models is a key step in achieving the full application of BIM technology in structural engineering. This study investigates the data format of reinforced concrete structural calculation models and generates IFC models containing concrete components and rebar based on the component and reinforcement data in the calculation model. Through distributed database storage, the merging and data management of IFC models are realized. The related software developed in this study enables the accurate generation of structural BIM models from structural calculation models, which can be applied in scenarios such as collision detection, quantity estimation, and construction drawing generation. The effectiveness of the proposed method has been verified through practical project applications.
-
Keywords:
- IFC /
- BIM /
- Structure /
- Reinforcing Bar /
- Concrete /
- Model Merging /
- Data Management
-
引言
BIM技术在建筑工程领域已得到广泛应用。BIM技术的重要特征是改变了信息传递的方式,从传统的不同专业参与者点对点信息传递转为以模型为中心的信息传递[1]。在各专业参与信息传递和交换时,结构专业却一直处于脱节状态[2],使得BIM技术的多专业协同能力和收益均降低很多。据分析,其根本原因是缺乏可行的协同模式和稳定的、可互操作的应用程序环境使得结构专业愿意参与基于BIM的工作流[3],而结构计算模型与BIM模型的融合是实现BIM在结构工程中全面应用的关键环节。
从BIM模型提取或转换结构计算模型已有众多研究,陈志为等[4]利用API从Revit模型提取结构信息输出为ANSYS APDL脚本文件实现有限元模型的建立。张晓洋等[5]提出IFC-API转换模式,结合IFC和API的优点建立BIM模型与结构分析模型的统一框架。孟晓晔[6]基于IFC及MVD研究深化设计BIM模型到精细化有限元分析模型的数据转换。此外,商业结构分析软件,如ETABS、YJK也推出了与Revit的接口应用程序。
以上方法均要求结构工程师先建立结构BIM模型,才能执行到计算模型的转换。鉴于结构工程师习惯且必须使用结构计算软件,本文提出,以准确建立的结构计算模型为出发点,研究根据结构计算模型直接生成IFC(包括结构构件和钢筋)来参与BIM流程(而不是依据施工图翻模建立BIM模型),以及基于IFC模型的数据管理技术。
1. IFC内容组织
目前,IFC标准已成为不同学科和不同软件之间BIM数据交互的事实标准[7]。最新发布的IFC4.3.2(ISO 16739-1:2024)版本包含876个实体(Entities)、436个类型(Types)、645个属性集(Property sets)、2 513个属性定义(Properties),描述建筑产品信息的能力得到进一步增强。
结构计算模型中常见的柱、墙、梁、板、斜撑在IFC中均有对应的实体(如IfcColumn),各类构件的三维几何也是以扫掠体为主,可以用IfcExtrudedAreaSolid表达,弧形构件则用IfcRevolvedAreaSolid表达,实体关联的属性集或自定义属性集可以记录任意复杂的附加信息,因此IFC具备足够的能力描述结构BIM模型。
本文着重研究根据YJK导出的ydb文件生成IFC的方法,ydb本质上是sqlite数据库,该数据库记录了结构模型的几乎所有信息,包括构件(节点坐标、截面、材料、旋转、偏置)、标准层和自然层以及荷载等。尤其是在YJK中完成计算后,可以按构件类别导出含有构件配筋信息的ydb文件。下文将讲述IFC生成和优化的关键点。
1.1 组织结构
IFC中包含的所有建筑对象在空间上一般按照“项目- > 场地- > 建筑- > 楼层- > 构件”的层级关系进行组织,如图 1所示。
场地(IfcSite)、建筑(IfcBuilding)、楼层(IfcBuildingStorey)及构件(IfcBuildingElement)均从IfcProduct继承了ObjectPlacement属性,该属性实际上是一个坐标系对象,定义了参考坐标系(PlacementRefTo)以及在参考坐标系中的定位(RelativePlacement),如图 2所示。
参考图 2,本文以场地为基准,采用“构件- > 楼层- > 建筑- > 场地”逐级依赖的相对坐标系统。
IFC内容组织以及模型合并、修改的高效和准确性均受益于相对坐标系的采用。
1.2 标准层
建筑工程领域结构计算软件一般都有层的概念,YJK也不例外。在YJK中,标准层有预先设定的层高H,布置在标准层中的竖向构件(柱、墙)均以H为高度,水平构件(梁、板)均以H为顶部标高,而自然层引用标准层,如图 3所示。自然层有实际的标高和层高,如果自然层的层高与所引用标准层的层高不同,在楼层组装时,标准层的构件要调整到以自然层的层高为基准。
在生成IFC时,如1.1所述,构件的定位参考坐标系均采用自然层的定位坐标系,即相对坐标系,具体有两种方法。
方法一,遍历自然层,获取自然层所引用标准层中定义的构件数据,结合自然层的标高和层高生成构件的IFC表达。该方法实现简单,但会造成大量冗余信息,特别是标准层对应多个自然层的情况,IFC文件的体积会成倍增长,因为标准层中定义的构件对象(几何表达ShapeRepresentation)被创建了多份。
方法二,具体分解为三个步骤:第一步,遍历标准层,获取标准层中定义的构件数据,结合标准层的层高并以零标高生成构件的IFC表达;第二步,搜索引用该标准层的自然层,如果不止一个自然层引用该标准层,则创建与该标准层中所有构件对象(源对象)几何表达对应的IfcMappedItem,复制所有的源对象为新对象并将新对象的几何表达定义为对前述IfcMappedItem的引用;第三步,如果自然层与标准层的层高不一致,则调整所有竖向构件的拉伸体的IfcMappedItem在高度方向进行缩放(缩放因子为自然层高与标准层高的比值),水平构件的顶部标高由于已采用相对坐标系,无需调整。由于采用了IfcMappedItem,IFC中仅保留了源对象的一份几何表达,复制对象均为对该几何表达的引用,生成的IFC体积较小,但实现过程较为复杂。
本文采用方法二生成优化的IFC。
2. 结构IFC
2.1 截面定义
结构构件在IFC的三维几何基本可用扫掠体(IfcSweptAreaSolid)来描述,即截面沿着一个方向拉伸一定长度(IfcExtrudeAreaSolid)或绕着一个轴旋转一定角度(IfcRevolvedAreaSolid),截面定义是扫掠体的基础,如图 4所示。
YJK定义了包括矩形、矩形变截面、圆形、工字形、L形、T形、工形劲以及自定义截面等数十种截面类型,在ydb中以数字标记。
为了描述各类截面,本文尽量利用IFC标准中与截面类型对应的各类参数化截面类型,如梁、柱、墙的矩形截面采用IfcRectangleProfileDef来表达,T形截面采用IfcTProfileDef表达,如无法用参数化截面表达,如楼板、自定义截面等,则采用用IfcArbitraryClosedProfileDef,它是任意线条连接所形成的包围线,还可以采用从它所继承的IfcArbitraryClosedProfileDefWithVoids来定义内部含有孔洞的截面,此类截面定义可以方便地用来描述带孔的楼板。
对于混凝土结构常用的矩形变截面,本文为兼容IFC2x3和IFC4分别做了实现。IFC4定义了IfcExtrudeAreaSolidTapered,允许拉伸体起点和终点的截面不同,简化了变截面拉伸体的描述。IFC2x3则无法做到这么方便,本文针对矩形变截面拉伸体定义采取了变通方法,定义侧面为梯形截面,拉伸方向不再是起点到终点,而是侧面的法线方向。
此外,组合构件均包含两种材料和两个截面,如劲型混凝土和钢管混凝土构件。本文采用复杂单元组合体类型IfcElementAssembly来描述这两类构件,该类型对象与多个简单对象之间的关系是集合关联(IfcRelAggregates)。劲型混凝土一般是外部的矩形混凝土构件和内部的工字形、十字形等钢构件组合而成。钢管混凝土一般是外部的圆管钢构件和内部的圆截面混凝土构件组合而成,其组成对象的截面定义均可以采用前述方法定义,不再赘述。
2.2 开洞与裁切
墙和楼板开洞是结构计算模型中经常遇到的场景。本文采用IfcRelVoidsElement关系为开洞对象关联一个洞口对象来处理,洞口对象有自己的三维几何表达。如果洞口与开洞对象均为拉伸体且拉伸方向和长度均为一致,亦可采用1.3所述IfcArbitraryClosedProfileDefWithVoids在截面定义时就包含洞口的实现。尤其是在如1.2所述在标准层到自然层映射过程中,在复制源开洞对象和洞口对象之后,须重建新开洞对象与洞口对象之间的IfcRelVoidsElement关系。
由于引入层的概念,在结构计算软件中结构构件一般在楼层平面上通过连接节点的线来建模,在生成IFC时,要根据构件的中心线(网格线经过必要的偏移和旋转)和截面还原出三维几何,这就容易出现构件相交处缺角的问题。实际上,一般的BIM建模软件在创建结构构件时也会遇到这个问题。如图 5中梁1的矩形区域与梁2的矩形区域相交,需要对几何进行处理以还原真实的构件相交。
本文针对不同场景下构件相交的几何处理基本上遵循以下流程:先延长基本构件,再确定裁切构件的边界,最后用裁切边界对基本构件进行裁切。
以最简单的两个梁相交为例,如图 5所示,梁1与梁2相交,考虑梁1为基本构件,梁2为裁切构件。在全局坐标系XYZ下,根据ydb给出的梁定义数据,得到梁1和梁2的矩形边界,延长梁1并得到延长部分的平面边界记为UnionPathG,从梁2的矩形区域计算得到裁切边界和法线方向作为剖切平面,记为CutPlaneG。
由UnionPathG和CutPlaneG可以得到与梁1做布尔加和布尔减运算的实体定义,要注意相关实体要以梁1的对象坐标系作为参考,这就涉及到全局坐标系到局部坐标系的转换,实现方法有旋转矩阵、欧拉角和四元数等[8],本文采用旋转矩阵法。
记梁1的局部坐标系三个坐标轴在全局坐标系下的向量分别为LocalX,LocalY,LocalY,原点在全局坐标系下的坐标向量为O,旋转矩阵为R。
$ \mathrm{R}=\left[\begin{array}{l} \text { LocalX } \\ \text { LocalY } \\ \text { LocalZ } \end{array}\right] $
记UnionPathG轮廓上一个点在全局坐标系下的坐标向量为P,则该点在局部坐标系下的坐标向量为
$ \text { LocalP }=\mathrm{R} \times(\mathrm{P}-\mathrm{O}) $
至此将UnionPathG和CutPlaneG转换为梁1的对象坐标系下,记为UnionPathL和CutPlaneL,依照1.3所述方法,从UnionPathL构造截面定义,并沿对象坐标系Y轴拉伸梁1的高度得到拉伸体记为UnionSolid。从CutPlaneL创建半空间实体(IfcHalfSpaceSolid)记为CutSolid。将UnionSolid和CutSolid作为布尔加和布尔减实体与梁1的几何实体做布尔运算生成的新实体替换梁1的几何实体即完成所有计算。
2.3 钢筋
相比平面整体表示方法[9]在结构平面图上标注钢筋信息,在BIM或CAD软件中钢筋的建模一直是个挑战。本文研究YJK计算结果的构件配筋信息直接生成IFC的方法。
YJK在建模和计算之后,利用施工图模块可以为梁、柱、墙、板等结构构件生成施工图,施工图中已包含构件的配筋数据和图形表达,并自动按构件类型生成构件配筋数据库(ydb)。
以柱为例,dtlRcCol.ydb记录了自然层、标准层、单段柱、单跨柱、连续柱、归并柱的信息表和归并柱配筋信息表,它们的关系如图 6所示。
单跨柱一般为楼层间的柱,由多个单段柱(实际的结构计算单元)组成;连续柱一般为跨多个楼层的相同截面单跨柱组成,连续柱根据配筋不同而分为不同的归并柱。实际配筋信息记录在归并柱表中,而钢筋的宿主柱则记录在单段柱表中。经过分析,数据表的关联关系如图 7所示,由关联关系执行数据库查询即可获取到所有柱的配筋数据以及钢筋所在的宿主柱。
有了柱配筋数据和模型ydb记录的柱几何数据,参考文献[9, 10]即可为柱内钢筋生成相应的IFC表达。
已有作者研究钢筋的IFC表达[11-13],考虑到构件内钢筋(如箍筋、纵筋)有大量的重复,本文利用IfcReinforcingBarType来定义钢筋的类型,该类型预定义通用的属性或属性集、几何表示、材料或组成单元。重复的钢筋对象关联该类型时,就引用该类型预定义的所有属性和设置。
同时,利用自定义属性集在钢筋对象上记录钢筋类型、位置、直径及长度等重要信息,为精细化的数据管理和应用创造条件。
3. 基于IFC的数据管理
由结构计算模型生成的IFC尤其是钢筋IFC对象规模较大,现有解决方案在模型的合并、检索及可视化等方面的性能表现均不理想。
3.1 模型存储
IFC模型的统一存储是数据管理应用的基础,有研究以对象数据库存储IFC模型[14],但是要使用专业的对象数据库。
本文结合开源关系型数据库和NoSQL数据库设计了分布式数据库存储IFC,并研究了提升查询性能的方法。
首先,开发IFC解析程序,提取所有的IFC实体,包括实体类型、ID、属性以及几何等,存储时将实体ID作为分布式列存储的key;其次,分析IFC实体之间的关联关系,如洞口与墙、洞口与板、门与墙以及窗与墙等,建立单独的表来维护实体之间的关联关系;最后,为实体表和关联表建立索引,本文改进八叉树的空间索引,通过IFC对象的关联关系进行节点合并(存在关联关系则进行合并,直到达到单个节点的最大几何量阈值),从而降低和平衡树结构,使得空间索引的IFC几何数据更加均匀和连续,提高了数据查询性能。
3.2 数据检索
在建筑全生命周期中,最基本的数据检索是根据空间、楼层以及构件类型等条件对BIM模型的对象进行抽取和使用。相比于在三维设计软件中进行筛选,基于IFC模型进行结构化(SQL)查询往往更加灵活和简便。
本文对IFC数据(名称、类型、属性、构件关系及几何等)进行结构化处理、建立多维度索引和综合查询排序,设计了IFC数据查询与MVD[6, 15]模板数据交换系统,支持多用户对不同IFC模型的属性、MVD或简化子模型及数据交换模板的并发查询。
与传统的查询不同,本文的研究可以支持在项目的多个模型中进行综合全局语义对象的结构化查询,如图 8所示。
3.3 可视化
IFC实体的几何数据一般较大,在大模型的可视化场景中,如果全部加载最精细的几何,往往会导致卡顿,无法运转等性能问题。本文采用层次细节模型(HLOD)来进行模型的动态加载[16, 17]。
在数据库中,为每个IFC实体建立多种层次细节的几何模型,并在查询时根据LOD返回相应的结果。如图 9所示,在LOD较低时,构件的细节部分不包含在查询结果中,亦不会被渲染;在LOD较高时,构件的细节部分被包含在查询结果中,也会被渲染。
同时,通过HLOD空间索引技术,为模型几何空间也创建改进的八叉树空间索引,利用该索引,前端能够快速查询到视角空间附近的几何对象,从而可以动态地调取服务器上存储的相应细节层次的几何数据进行渲染。
在前端,通过跟踪当前视角,为视角附近的构件对象加载细粒度几何,而对远处或者看不到的视角盲区则加载粗粒度几何,最大程度地提高模型加载和渲染性能。
加载全楼钢筋模型进行渲染时,利用动态查询和加载技术,仅视角正中的钢筋得到精细渲染,较远的钢筋则粗略显示,如图 10所示。
4. 案例验证
利用本文的IFC生成方法,通过YJK模型生成结构(含钢筋)的IFC模型如图 11(a)和(b)所示,墙与墙、梁与梁在相交时的裁切如图 11(c)所示,单独取一个柱的钢筋如图 11(d)所示,区分纵筋(b边和h边)、箍筋(加密区和非加密区)。
本文通过两个模型集(模型集A包含某高层建筑的全量钢筋模型,模型集B包含某机场航站楼的钢结构模型)来进行加载效率对比实验,分别采用基础索引(不考虑空间结构只对IFC的基本属性字段进行索引),八叉树索引,以及本文的改进八叉树算法进行对比实验, 如表 1所示。从实验结果看,本文的方法显著提高了模型加载的速度。
表 1 不同索引的IFC加载效率对比方法 基础索引 八叉树 本文方法 模型集A 120.8 s 12.3 s 5.8 s 模型集B 600.5s 25.4 s 10.2 s 5. 结语
本文研究了根据结构计算模型数据生成IFC的相关技术,以YJK为例,根据计算模型生成了结构(含钢筋)的IFC。该研究为结构计算模型和BIM模型的融合和多专业协同提供了新方法。同时,着重研究了大型IFC模型的存储、检索和可视化的性能提升方法,可为IFC的数据管理提供基础。
结合实际项目验证了本文所提出的模型生成与数据管理方法的有效性。
-
表 1 不同索引的IFC加载效率对比
方法 基础索引 八叉树 本文方法 模型集A 120.8 s 12.3 s 5.8 s 模型集B 600.5s 25.4 s 10.2 s -
[1] Chen P H, Cui L, Wan C Y, et al. Implementation of IFC-based web server for collaborative building design between architects and Structure engineers [J]. Automation in Construction, 2005, 14(1): 115-128. DOI: 10.1016/j.autcon.2004.08.013
[2] 吴文勇, 焦柯, 童慧波, 等. BIM建筑结构设计过程的研究与实现[J]. 建筑结构, 2013, 43(S1): 825-828 [3] 张兆波, 孟晓明. 基于IFC的建筑结构设计信息交互框架研究与实现[J]. 建筑结构, 2024, 54(5): 149-154. [4] 陈志为, 吴焜, 黄颖, 等. 基于BIM的复杂结构有限元精细模型生成[J]. 土木工程与管理学报, 2018, 35(5): 60-64. [5] 张晓洋, 胡振中. 面向结构有限元分析的模型转换方法研究[J]. 工程力学, 2017, 34(6): 120-127. [6] 孟晓晔. 钢筋混凝土结构精细化BIM及MVD的应用研究[D]. 北京: 中国建筑科学研究院, 2019. [7] 赖华辉, 侯铁, 钟祖良, 等. BIM数据标准IFC发展分析[J]. 土木工程与管理学报, 2020, 37(1): 126-133. [8] 弗莱彻·邓恩, 伊恩·帕贝利. 3D数学基础: 图形和游戏开发(第2版)[M]. 北京: 清华大学出版社, 2020: 199-220. [9] 中国建筑标准设计研究院. 16G-101-1混凝土结构施工图平面整体表示方法制图规则禾构造详图[S]. 北京: 中国计划出版社, 2018. [10] 中国建筑标准设计研究院. 18G-901-1混凝土结构施工钢筋排布规则与构造详图[S]. 北京: 中国计划出版社, 2018. [11] 申玮. 钢筋设计的CAD技术研究[C]//第九届全国BIM学术会议. 西安: 中国建筑工业出版社, 2023: 168-173. [12] 郁嘉诚, 邓雪原. 基于IFC标准的连续梁钢筋模型自动生成[J]. 建筑技术, 2020, 51(5): 618-623. [13] 李世凯, 邓雪原, 程殊伟. 结构平面图中梁与钢筋模型重建方法研究[J]. 建筑结构, 2023, 53(S2): 400-406. [14] 曾强, 张其林, 张金辉. 基于对象型层次型数据库的IFC数据存储研究[J]. 土木建筑工程信息技术, 2021, 13(1): 17-23. [15] 明星. 基于MVD的建筑与结构模型转换研究[D]. 上海: 上海交通大学, 2014. [16] 安籽鹏. 基于BIM+GIS的一体化三维场景建模技术研究[D]. 洛阳: 战略支援部队信息工程大学, 2020. [17] 吕慧玲, 李佩瑶, 汤圣君等. BIM模型到多细节层次GIS模型转换方法[J]. 地理信息世界, 2016, 23(4): 64-70.