刘 秀,余文成,夏诗画
(1.桂林理工大学 土木与建筑工程学院,广西 桂林 541004;2.招商局重庆交通科研设计院有限公司,重庆 400067)
随着交通建设领域BIM应用的兴起,参数化建模思想在桥梁工程中被广泛应用[1-7]。国内相关学者对Dynamo在桥梁工程中的应用做了相关研究。何树凯[8]在重庆双碑嘉陵江大桥工程中利用BIM技术对大桥施工设计进行精细化处理,合理安排施工进度,有效避免了人为因素造成的失误,保证了工期进度。董耀文等[9]结合参数化建模的实例,减少了BIM建模的工作量,降低了BIM建模的复杂程度,实现了信息的完整、精确和无缝的传递。邱珂[10]将BIM技术应用到高跨立体有轨专用桥梁的设计中,对高跨立体有轨电车专用桥梁的设计有一定指导作用。吴樊等[11]利用Dynamo参数化的建模思想实现了钢板桩和结构钻孔桩快速、高效放置,并提出基于Dynamo自行编写Python节点扩充到节点库,有效提高了Dynamo建模效率。李庶安等[12]将Revit平台的Dynamo插件应用到桥梁缓和曲线段建模过程中,解决了缓和曲线段建模过程中以直代曲产生的误差,提高了建模的精度,并就Dynamo的可视化编程语言的灵活性、代码的开源性提出Dynamo发展的无限可能性[13-15]。
本文以重庆曾家岩嘉陵江大桥工程为背景,针对工程中主桥桥墩为空间曲面结构,提出利用参数化建模思想完成模型创建的方法,以解决桥梁复杂异形构件设计难、精度低的问题,同时利用参数动态控制设计尺寸,快速完成设计,实现实时修改造型的目的。
重庆曾家岩嘉陵江大桥位于重庆市主城区中心地带,桥型为钢性悬索加劲连续钢桁架梁桥,全长566.09 m,由跨江大桥及南桥头明挖框架2部分组成,跨径布置为(135+270+135)m=540 m。大桥为公轨两用桥,上层为双向6车道城市道路,下层为双线轨道交通,曾家岩大桥立面布置如图1所示。
单位:cm
P1(北)、P2(南)是大桥的2个主桥墩,墩身均为变截面空心薄壁箱型结构。桥墩墩身高41.0 m,顺桥向墩身宽9.0 m,顺桥向墩顶15.0 m高度范围内采用外弧造型修饰,圆弧半径5.141 m;桥墩横桥向外侧为圆弧造型,墩顶宽34.8 m,墩底宽29.0 m,距墩底19.0 m高度处墩身宽27.4 m。桥墩内部采用椭圆形挖空,椭圆长轴半径为16.0 m,短轴半径为7.0 m。
主墩墩身为带圆端的矩形空心截面,圆端半径为4.764 m,墩身顺桥向及横桥向壁厚均为1.0 m,墩底3.0 m高度范围内采用空心截面;沿墩身高设置2道横隔板,横隔板厚度为0.5 m,为方便施工,在横隔板中心留有人孔。桥墩各截面构造如图2所示。
(a)顺桥向
根据设计构想,桥墩墩身各结构面为空间曲面,墩身设计线条简洁、流畅,空间定位精度要求很高,二维表达及施工难度大,一般BIM建模软件很难精确设计墩身各曲面。针对曲面、复杂结构在设计和表达上的工程设计难点,借助Dynamo软件通过参数化的建模思想对曾家岩主桥桥墩进行模型的搭建,通过参数调整结构外型达到最佳状态。完成模型的搭建后,再按照几何控制系统确定的定位原则整合至Revit平台,既降低了Revit建模的复杂度,又提高了模型的精确度和质量。
Dynamo参数化建模的思路如下:
1)根据项目需要对异形结构进行拆分,通过边界条件对边缘进行约束;
2)定位曲面空间关键点的坐标、原点等;
3)对构件的尺寸赋予参数,通过节点将参数化的尺寸写入Dynamo;
4)在Dynamo中利用参数确定点,并生成对应的曲线;
5)通过节点List、Poly Surface.By Loft Guides将生成的曲线创建出多段闭合的曲线,并由闭合的曲线创建曲面;
6)通过节点Solid.By Joined Surfaces将各个曲面形成的一组面的列表创建模型;
7)根据项目需要通过改变参数自动调整模型;
8)输出到专业软件进行后续工作。
在Dynamo构建桥墩模型前,要先在Revit中新建相应的族文件。在本项目中可选择的族有公制常规模型,也可选择公制结构柱,这2种族类型都适合墩柱结构。由于公制常规模型可智能适应截面变化,这可为后期空间曲面进行网格划分做准备,因此在族类型的选择上优先选择公制常规模型。
2.2.1 节点数据处理
将圆端半径、墩底宽、顺桥向墩身宽、距墩底高度处墩身宽、桥墩墩身高、墩顶宽等基础控制数据作为输入端Number,控制墩身尺寸参数并赋予初始尺寸参数值,对尺寸进行参数化赋值。主桥的2个桥墩P1、P2完全相同,且每一个桥墩都是对称结构,设定坐标原点,根据几何关系分别给各点赋予参数化的逻辑关系,并将这些数据关系在Code Block中表示出来,如图3所示。
图3 节点数据处理及参数赋值
2.2.2 建模过程
由前文可知,桥墩墩身是空间异形曲面的实体,而实体的生成由点到线再到面,最后成体。基于成体思想,对组成桥墩的各个曲面分别由点到线最后生成墩身曲面。在创建曲面前,先定义曲面上的关键点,墩底底面有A~F 六个关键点,墩顶顶面有10个关键点,侧曲面上有6个关键点,并将墩底底面设定坐标原点A,向上为Z轴,根据右手螺旋定则,中指指向为Y轴正方向。曲面上各点的定义如图4所示。
1)第一曲面—墩底底面建模
建模前,定义基准特征,如图4所示。墩身底面是由2个半圆和一个长方形组成。通过节点Point.By Coordinates得到墩底底面A~F 六个关键点,其中A、F、E三点和B、C、D三点通过节点Arc.By Three Points创建圆弧,A、B点和D、E点通过节点Line.By Start Point End Point得到2条直线,共4条曲线,如图5(a)所示。对生成的4条曲线利用节点List Create创建包含4条曲线的一组列表,再通过Poly Curve.By Joined Curves将4条曲线生成一个闭合的多线段,最后将闭合的多段线通过节点Surface.By Patch生成曲面,即墩底底面,如图5(b)所示。
(a)墩底底面
(a)曲线创建过程
2)第二曲面—墩顶顶面建模
第二曲面的创建是以第一曲面为基础。第一个曲面的6个关键点通过节点Geometry.Translate沿着Z轴进行平移,平移距离为墩身的高度,得到墩顶对应的6个关键点A′~F′;利用节点Curve.Point At Parameter分别获取线段A′B′和D′E′的中点G和H,再通过节点Geometry.Translate分别向Y轴的负、正方向平移200个单位,得到点G′和点H′。由此共得到8个墩顶关键点A′~H′。与第一曲面不同的是8个关键点所生成的曲线都是弧线,只需要利用节点Arc.By Three Points生成弧线即可。最后依次通过节点List Create、Poly Curve.By Joined Curves和Surface.By Patch生成第二曲面,即墩顶顶面,如图6所示。
图6 第二曲面—墩顶顶面的生成
同理,余下几个面都是以桥墩墩身上下2个面为基础,通过已确定的点、曲线等关系,利用相应的节点创建组列表并生成对应的曲面,进而完成对整个墩身各个曲面的创建,如图7所示。
图7 桥墩墩身立面
2.2.3 建模中的脚本编写
Dynamo可视化编程软件参数化建模也可通过Design Script脚本进行模型创建。Design Script是一个简洁可读的语言,而Code Block是Design Script在Dynamo中的运行窗口,可动态链接到一个可视化编程环境与基于文本的环境。在Code Block可直接编写Design Script代码,通过编写Design Script脚本可实现节点与文本之间的相互转换,进而验证通过节点创建模型结果的可行性。下面是利用脚本具体创建模型的过程,其编写脚本的建模流程如下。
1)参数化赋值
根据桥墩墩身的结构设计特点,由几何关系对墩身尺寸赋予参数,对节点数据进行处理并赋予参数化的值,将其写入Code Block中,如图3所示,其参数化的几何尺寸数据如下:
l1_1;
l1_2=l1_1-640;
l1_3;
h2;
l2_1;
l2_2=l2_1-640;
l2_3=l1_3;
h3;
l3_1;
l3_2=l3_1-640;
l3_3=l1_3;
l3_4=l3_3+400;
h4=h3-500。
2)编写代码创建模型
第一曲面—墩底底面通过编写脚本创建的过程如下,新创建一个Code Block节点用于编写代码创建模型,其流程如图5所示。
p1_1=Point.ByCoordinates(-l1_2/2,-l1_3/2,0);
p1_2=Point.ByCoordinates(l1_2/2,-l1_3/2,0);
p1_3=Point.ByCoordinates(l1_1/2,0,0);
p1_4=Point.ByCoordinates(l1_2/2,l1_3/2,0);
p1_5=Point.ByCoordinates(-l1_2/2,l1_3/2,0);
p1_6=Point.ByCoordinates(-l1_1/2,0,0);
c1_1=Line.ByStartPointEndPoint(p1_1,p1_2);
c1_2=Arc.ByThreePoints(p1_2,p1_3,p1_4);
c1_3=Line.ByStartPointEndPoint(p1_4,p1_5);
c1_4=Arc.ByThreePoints(p1_5,p1_6,p1_1);
list1_1=[c1_1,c1_2,c1_3,c1_4];
polycurve1_1=PolyCurve.ByJoinedCurves(list1_1);
surf1_1=Surface.ByPatch(polycurve1_1)。
脚本中P1_1~P1_6表示墩底底面的6个关键点A~F,C1_1和C1_3表示直线AB和DE,C1_2和C1_4表示弧线AFE和BCD。通过List将2条直线和2条曲线创建一组列表,即list1_1=[c1_1,c1_2,c1_3,c1_4];利用Poly Curve创建多段闭合曲线,即poly curve1_1=Poly Curve.By Joined Curves(list1_1);最后通过surf1_1=Surface.By Patch(poly curve1_1)创建墩底底面,并利用Watch3D进行查看验证,如图8(a)所示。
其余曲面的形成均可用Design Script脚本表示出来,原理同可视化编程节点,最后将所有的Surfaces进行整合,即[surf1_1,surf3_1,surfv_1_1,surfv_1_2,surfv_2_1,surfv_2_2,surfv_3_1,surfv_3_2,surfv_4_1,surfv_4_2],初步得到桥墩模型,如图6、图7所示,并用Watch3D查看,如图8(b)所示。
(a)墩底底面
由于桥墩内部采用椭圆形挖空,在Dynamo中对其进行参数化赋值,通过节点Ellipse.By Origin Vectors创建椭圆,节点Surface.By Patch形成闭合曲线,并通过节点Surface.Thicken对椭圆进行加厚得到椭圆实体。最后将椭圆实体与初步得到的墩身模型通过节点Solid.Difference进行剪切,将两实体切割分开,通过Export To SAT导出所需的实体模型到文件路径中。对于创建完成的桥墩墩身模型,可通过Revit查看模型的三维视图和各个立面图等是否满足设计要求,若不满足要求可通过调整相应参数修改模型,参数调整输入与模型联动,通过设置滑条或其他类型输入窗口进行大范围参数输入,所变即所见,大大提升工作效率。
对于异形构件桥墩,基于Dynamo平台采用参数化的建模思想完成了模型的创建。
1)基于Dynamo参数化建模,设置构件参数,通过连接相应的节点完成模型的创建,并通过修改构件参数修改模型,完成设计要求。建模过程直观、易懂且逻辑性强,适用于编程基础较弱的工程设计人员。
2)基于Dynamo可视化编程节点,对构件尺寸进行数据处理,通过对节点进行脚本的编写完成对模型的创建,体现出Dynamo通过编写程序创建模型的优点。
3)基于Dynamo平台创建结构模型,最终以.dyn 文件格式保存,后期对模型的修改,只需要打开相应的.dyn文件,修改对应参数,或在结构视图中设置参数输入方式进行联动微调,Dynamo可快速更新修改设计,并驱动Revit生成新的模型,无需重复建模或对模型进行较大的改动,即可达到对模型修改的设计效果,对模型在设计方案阶段不断调整更新非常适用。
本文以曾家岩嘉陵江大桥工程为依托,基于桥梁工程中异形构件建模难的问题,提出了参数化的建模思想,实现了异形构件模型的创建,提高了模型的精度和深度,为设计阶段利用BIM技术深化施工图设计奠定基础,主要认识如下:
1)以桥墩墩身设计尺寸为基础,根据几何关联关系分别对各点具体赋予参数信息,并通过Code lock将这些参数作为输入端控制各个曲面的形成,最终根据项目需求通过修改输入端的相关参数调整模型,直到符合工程设计要求即可,不需重复建模,可通过少量的工作量制作出复杂空间曲面模型,极大丰富了造型设计能力,设计控制精度得到较大提升,节省了人力和时间,提升了工作效率。
2)基于Dynamo参数化创建桥墩三维模型可满足初步设计的要求,但对后期施工设计阶段的精细化设计仍存在较大的差距,如桥墩钢筋精细化设计,需要根据专业需求进一步进行归纳和总结,找出其中的参数关联关系,通过不停的探索和实践,最终实现异形构件参数化高精度设计。