中铁二十二局集团轨道工程有限公司
摘要:为实现高效的水利工程数字孪生系统的几何模型建造,首先基于实际水利工程,以线状工程作为规则建模的适用范围,在此基础上对横断面进行了划分,提出各部分工程中心线采集方案;以dynamo作为实现语言,详细阐述了挡土墙、护坡格梁建模代码的设计思路;最后简要阐述了其与WebGIS系统的结合方案。实践表明,dynamo可以在较小的代码量下建造比CGA更精细的模型,且通过输入不同的参数复用代码模块,完成水利线状工程LOD3级别几何模型建造。
关键字:水利工程;数字孪生;几何模型;规则建模;Dynamo
Firstly, in order to realize the efficient geometric model construction of the digital twin system of water conservancy projects, based on actual water conservancy projects, this paper takes linear engineering as the applicable scope of rule modeling. On this basis, this paper divides the cross section and puts forward the centerline collection plan of each part of the project. Next, this paper uses dynamo as the implementation language to elaborate the design ideas of modeling codes for retaining walls and latticed beams for slope protection. Finally, this paper briefly expounds its combination scheme with Web GIS system. Practice shows that dynamo can build a more refined model than CGA with a smaller amount of code, and by inputting different parameters to reuse code modules, the construction of geometric model of LOD3 level of water conservancy linear engineering is completed.
Keywords: water conservancy project ; digital twin; geometric model;modeling by rule; Dynamo
0引言:
数字孪生技术的发展为工程的信息化管理提供了丰富的应用,因此数字孪生技术可为水利工程基础设施全生命周期的信息化管理提供新思路。目前利用GIS+BIM对现实世界进行“数据孪生”成为众多信息化管理平台的核心指导思想[1],结合实际工程条件研究与之配套的实现技术也成为研究热点。
朱庆于2018年制定了数字模型交付标准,对规划、工可、运营期的模型细节要求(LOD)做了详细的规定,郑伟皓、周星宇在其论文中详细阐述了以工程设计文件为数据的几何模型建模思路,区别于传统的手工建模,着重讨论了规则建模方法的详细思路和适用范围,提出了以CGA代码实现线状工程规则建模的方案,实践表明,在几何模型等级不超过2时CGA可极好的完成几何模型创造。但随着LOD等级的提高,信息穿深要求也随之提高,对于几何模型的精细化、单体化要求也随之增高,CGA语言创造的几何模型是与地物的矢量模型一一对应的,因此对于精细化要求较高的任务,CGA建模所需的地物矢量也随之增加,这将极大增加工程量,使得规则建模失去优势,朱庆在标准中建议LOD3以上模型采用revit等BIM技术进行手工建造,郑伟皓使用soildworks进行建造,并指出用于实现的软件只要满足地理标注语言的输出能力,即可作为GIS+BIM体系的实现方法。DYNAMO作为一种新型开源的规则建模语言,在几何模型建造上比CGA更具优势主要表现在:1)从设计之初就明确只考虑局部直角坐标系,明确了工作范围;2)对比CGA主要的拉升、切割等函数,dynamo的截面放样方式生成实体具有更好的效果;3)另外dynamo具有模型线的编辑功能,这就减少了文献10号中矢量模型的生成工作,且模型线对象含有成熟的桩号系统以便进行控制,与此同时预置族可以依据桩号进行放置,这将大大提高精细模型的复用率。
基于以上分析,本文着手与实际的线状的水利工程,着重讨论了护坡、挡土墙等典型地物dynamo生成代码设计思路,并对生成的模型进行了地理配准和LandXML格式输出。实践表明,dynamo能够弥补CGA的短板,完成LOD3以上精细线状工程地物的建造。
工程描述及dynamo对象简介
1.1 工程描述
工程为规划期的防洪堤建立三维模型,其总平面布置图如图1所示,堤坝总长384m,覆盖于凸起状河岸上,堤坝垂直高度为22m,宽为23m。整体堤坝分为堤顶道路、污水管道、护坡、马道、挡土墙。原污水管道悬空与护坡上方,改建后污水管道位于堤顶道路正下方,方向与堤顶道路大概一致。设计图防洪堤截面图中,挡土墙的四个里程节点截面形状不一致。
.png)
图1工程平纵横特征
1.2dynamo对象简介
Dynamo中基本对象包括数据、点(point)、线(line、curve、polycurve)、平面(plane)、表面(surface)、实体(soild),各种对象间关系由图2简要描述。.png)
图2 Dynamo基本对象知识图谱
由图2可知,建模代码即为将实际工程的设计图纸蕴含的具有一定规则的信息抽象为图谱中合适的对象,继而通过对象间的生成关系形成一条或多条由到实体的链路即可完成代码设计,各对象与工程实际的对接表述如下:
① 数据
数据对象是坐标数据、放样族、体量族的统称,它们都来自于dynamo的外部文件,通过读取节点转化为基本几何对象。坐标数据一般用于与设计文件的中心线对接,放样族用于体现设计文件中横截面,体量族用于放置一些预置的精细模型(如预置的桥墩、涵洞),通过点锚定到工程相对位置后进行放置。
② 点
点属于基本的几何对象,作为体量族锚定,模型线、规则实体生成的中间对象。
③ 线
针对线状工程,一般以线对象作为模型线来描述其走向,具体可细分为曲线、直线、多段线、样条曲线对应不同的模型线需求。举例来说护坡、挡土墙这类随地形曲率时刻变化的中心线应该利用多段线描述,用于放样的横截面也应该用多段线描述;堤坝、桥拱等具有一定规律的曲线则可利用曲线描述;直接生成(区别于体量族放置)的护栏等简单规则几何实体则可利用直线描述。
④ 平面
平面是局部坐标系的形式化表现,一般用于放置放样族,通过桩号在模型线上生成不同的平面,即可将不同的横截面放置到不同的位置,实现不规则实体的建造;同时平面还可以操纵其局部坐标系旋转,达到改变放样截面角度的目的。
⑤ 表面
表面可通过线、点对象进行生成,一般同规则的直线一起形成简单实体(如桩基、护栏)。
⑥ 实体
实体是几何模型的目标对象,可通过上述的放样、放置、表面拉升等形式进行生成,最终输出至revit。
2.Dynamo代码设计思路
2.1 挡土墙
依据第一节描述,首先需要生成护坡挡土墙走向的中心线,根据工程描述,选取马道中心线作为挡土墙模型线,其位于挡土墙的上方。对于中心线的生成可采取两种思路:
1) 通过dynamo 的select model element 节点拾取revit的模型线对象完成中心线建模,通常而言,设计图纸用一个多段线来表示中心线,当CAD多段线对象导入revit时将被转化为多条曲线,这意味着模型需要分段多次成型,造成工作量的增加。虽然Revit中的样条曲线对象对原多段线进行逼近,但样条曲线的法向量是难以控制的,将导致放样截面不能批处理。
2) Dynamo中的polycurve对象即弥补revit缺少多段线的短板,它可以基于坐标点利用polycurve.bypoint节点进行生成,同时生成的多段线还可在dynamo中环境中拆分为单条曲线(curve),方便依据桩号生成放样平面。
据以上分析,采用第二种方式生成规则建模所需的模型线,节点设计如图3所示。
.png)
图3 读取设计文件数据
首先利用excel.read节点读取采集的坐标点数据(excel的每一列包含采样点的东距、北距、高程),读取的数据(data)转置三个向量组成的张量进行存储(东距、北距、高程的索引为0、1、2)。利用List.GetItem和RestOfItem节点创造由各点坐标组成列表对象(最短连缀),继而可利用点生成(point.ByCoordinates)生成模型线上的采样点,最后通过采样点生成所需模型线,此模块后文统称为模型线生成模块。
按照10号文献的对规则建模方法的分析,模型线包括对象的平纵信息,再加入横断面信息即可完成对工程的几何描述,因此在获得了挡土墙的中心线后,将不同挡土墙横截面放
.png)
图4 放样族安放模块
置在对应桩号的局部平面下(plane)即可完成工程的平纵横几何描述。但在实际工程中,护坡、挡土墙这类受地形约束的线状工程往往存在着曲率变化较大的情况,在CAD中采用等距采样,把多段曲线变为若干平滑曲线会取得较好的效果,但这也给放置平面增加了工作,先把多段线拆分为多条曲线(polycurve.curves节点),再在各条曲线的起始桩号生成一个平面(planeAtParameter节点)即可简化这一过程,完成放样轮廓平面生成;同时将横截面的轮廓通过族工具导入,再通过几何图形迁移(geometry.transform),迁移到各个放样平面所对应的局部坐标系中,即可完成工程平纵横信息的整合,具体代码由图3所示,几何旋转节点(Rotate)以便对轮廓族的朝向进行微调,同时用于放样的轮廓线为多段线在多个平面上进行批处理,因此几何迁移节点连缀应选择叉积。经过此处理,横截面以放样轮廓族的方式被安置在工程的上的相对位置,后文为论述方便统称为放样族安放模块。
在拥有了放样轮廓则可以将其通过放样函数生成实体,在这一步工作中需要注意的是数据的组织,以5条线组成的挡土墙放样轮廓为例,其被安放至54个放样平面。由于叉积连缀,族安放模块的输出的数据存储于五个链表(list),每一个链表按放样平面顺序存储对应的5条轮廓线中其中一条(共计54个)。因此首先通过转置将其变为输出54个链表,每一链表存储一个五条线组成的放样轮廓,再经过多段线拼接后(ByJoinCurves)便能形成54个整体的横截面轮廓(数据放样截面轮廓线),在利用截面放样即可完成几何模型生成(如图5下部链路)。在实际工程中,横截面轮廓常常是多条多段线组成的轮廓,如箱型梁桥上部结构就由外部轮廓与内部轮廓组成,这时则需要把数据按照数据放样平面轮廓线类别轮廓线的形式进行组织,实现放样轮廓在正确的平面上正确的成组(如图5上部链路),它依靠自定义节点(group curves)实现,实现的思路为按放样平面顺序读取数据,对读取的线条数据依据之间距离进行冒泡处理,通过设计忽略值(本文标定为1mm)筛选不相连的线段,最终遍历一个平面上所有线段,达到相连线段正确成组的目的。就本文面向的挡土墙而言,两种方式都将得到相同的结果,为保证模块在各种工程情况下的通用性,建议使用上部链路,后文称为实体成型模块。
.png)
图5 实体成型模块
由横断面结构可知,在挡土墙上方为马道,它的中心线与挡土墙重合,因此可以共用一条模型线表示其中心线,因此可复用模型线生成模块的输出,重复放样族安放模块和实体成型模块即可完成建模如图7(a),之所以分模块来描述这种面向过程的代码是因为dynamo为用户提供了自定义模块功能,可将实现某一特定功能的节点集整合为一个模块来提高代码的复用率,上文论述的三个模块的输出输入接口如表1所示。
表1
.png)
2.2护坡
护坡工程分为护坡主体和格梁工程,对于护坡的主体在拥有了护坡中心线的基础上采取与挡土墙相同的思路和代码模块进行建模,其难点在于格梁工程,其工程主体走向与护坡中心线无直接关系,因此若依附边坡主体进行放样则需要人工放置横截面,若中心线的曲率变化较大,放置的工作量随之增加。因此,不采用放样的方式生成格梁,注意到格梁与中心线的间接关系,格梁总是沿着主体工程边界倾斜放置,因此只要根据中心线及主体工程的边界即可拥有放置依据;格梁为规则的立方体,因此使用表面拉升即可完成实体的创造。
基于以上分析,首先调用模型线生成模块、放样族安放模块、实体成型模块对护坡主体进行生成;在护坡中心线的基础上对格梁进行建模即为此代码的剩余工作,首先通过中心线平移的方式获取护坡边界线,但实际工程中,中心线的高程、曲率存在变化,因此其模型线并
.png)
图6 护坡边界线生成
图7 护坡建模代码
不位于一个平面上,多段线平移节点失效。采用采样点平移的方式解决此问题,在模型线上取点并获取各点的法向量,以边坡放样轮廓族的宽度与法向量计算各点xy轴上的平移向量对采样点按向量进行平移(point.Subtract),同样根据护坡的倾斜角度和宽度完成采样点z轴偏移,经过偏移处理的两组点则可生成工程的边界线(如图6所示)。
在上下边界错位生成格梁的起讫点,通过链接起讫点获得直线表示格梁,再平移此直线形成格梁表面,以拉升的形式形成实体。护坡的规则代码整合后如图7所示,代码的输入接口如表2所示,可以通过表二内参数的调整生成不同角度的护坡工程。
表2 护坡代码接口
.png)
至此再利用挡土墙的思路对排污管及道路进行建模即可完成此工程的创建,结果如图8(a)所示。
.png)
图8几何模型成果
3.地理校正与WEB GIS
Revit里面用的是局部坐标系,在GIS中需转换为2000国家大地坐标系(CGSC2000)坐标系,才能将模型加载到地图匹配的位置,而Revit模型无法直接导入到GIS,利用NavisWorks软件能够将模型输出为KMZ格式,继而导入ArcGISPro,转换为场景图层。具体的流程如下:
Step1:将Revit里的模型导入Navisworks
打开建好的Revit工程文件,找到附加模块中的外部工具,选择Navisworks 2019,将模型导入到Navisworks中,如下图8(b)所示。
Step2:参考点坐标值提取
将Civil 3D中生成的地形TIN点集导入到GIS,并且选取在模型范围内的三个距离相近的点,包括项目原点和非共线平面的两个点,三个点能够形成一个空间三角形,提取三个点的坐标值,如下图9(a)所示。
.png)
图9 地理校准
以原点为参考,进行坐标解算,原点(414728.2869,3493153.3653,304.139999999999)对应Navisworks局部坐标系的原点坐标(0,0,0),算出另外两个参考点在Navisworks中对应的局部坐标系的坐标值。
Step3 NavisWorks中图层切分
为了使模型最后能够在WebGIS中进行分图层展示,需要先模型进行切分再进行导出,利用集合工具,将各图层分别保存。
Step4 输出Google Earth KMZ文档
将各图层输出为Google Earth KMZ文档,输入提取的三个点的坐标值。
Step5 将KMZ文件导入GIS Pro项目。
利用KMZ转图层工具,在GIS Pro生成模型中各图层,结果如图10所示。
.png)
图10 GIS Pro 中模型效果图
Step6 发布网络服务,实现在线查看项目。
利用“创建3D对象场景图层包”工具将各图层另存为slpk文件,上传至GIS Online账户,新建web场景,加入各图层,最终实现在线查看。
4.结论
1)结合实际的水利工程,基于Dynamo开发了水利工程几何模型规则建模代码。
2)对dynamo建模成果进行地理校准,以KMZ格式与GIS系统进行对接,使得其能够取代CGA成为BIM+GIS系统规则建模的新手段。
参考文献
[1] 朱庆.三维GIS及其在智慧城市中的应用[J].地球信息科学学报,2014,16(02):151-157.
[2] 陶飞, 刘蔚然, 刘检华, 等.数字孪生及其应用探索[J].计算机集成制造系统, 2018, 24 (1) :1-18.
[3]郑伟皓,周星宇,吴虹坪,李红梅,朱新童,文林江.基于三维GIS技术的公路交通数字孪生系统[J].计算机集成制造系统,2020,26(01):28-39.
[4] 杰德尔别克•马迪尼叶提,牛志伟,李培聪,张宇,蒯鹏程,李家田.基于BIM技术与B/S架构的大坝安全可视化监测系统[J].排灌机械工程学报,2020,38(06):583-588.
[5] 徐建成.基于Dynamo的参数化建模技术在桥梁项目中的应用[J].黑龙江交通科技,2020,43(05):166.DOI:10.16402/j.cnki.issn1008-3383.2020.05.095
[6] 林金华,林武,吴福居.可视化编程在BIM参数化建模中的应用技术[J].工程建设与设计,2018,(22):276-278.DOI:10.13616/j.cnki.gcjsysj.2018.11.332
[7] 杰德尔别克•马迪尼叶提,牛志伟,蒯鹏程,郭瑞.基于Revit及Navisworks软件的泵站BIM模型及其应用[J].水电能源科学,2018,36(06):92-95.
[8] 张飞涟,郭三伟,杨中杰.基于BIM的建设工程项目全寿命期集成管理研究[J].铁道科学与工程学报,2015,12(03):702-708.DOI:10.19713/j.cnki.43-1423/
u.2015.03.038