在建筑结构尤其是桥梁结构日益大型化、规模化、复杂化的今天
[1],BIM(Building Information Modeling)技术的正向应用使得信息传递变得更为顺畅、完整
[2-5],而且携带信息的BIM模型可以继续应用于施工和运维阶段,使得BIM不仅可作为设计阶段的工具,更可作为整个建造周期的工具
[6].然而现在的BIM建模软件不具备专业有限元分析功能,且BIM模型同有限元软件之间的信息转换并不通畅,这使得在BIM正向应用过程中,结构设计人员必须分别建立两个模型,导致时间成本高、重复性强、建模效率低
[7],而且还可能出现两个模型物理信息不一致的问题.
BIM模型集成了建筑结构构件的三维尺寸、空间位置、材料特性等几何物理信息
[8-9],能够较为完整地表达出设计结果,而有限元软件可以为我们提供构件的应力、应变、位移等力学分析结果,通过对BIM模型的二次开发提取结构分析所需的结构建模信息,并传递至有限元软件,可以使BIM模型更好地实现正向应用
[10-11].
常用的桥梁工程BIM及有限元建模软件分别是Revit和Midas/Civil
[12-14].文献[
15]利用Dynamo将桥梁中心线以及截面信息以.dxf格式传输给Midas/Civil实现模型转换;文献[
16-
17]使用C#语言借助Revit API获取Revit桥梁模型预设的截面参数与材料特性,实现Revit向Midas/Civil的信息转换,但由于没有计算截面特性,故只能适用于Midas/Civil标准截面,且需要提前在Revit模型中预设截面参数;文献[
18]对比了Revit和Midas/Civil的交互方式,提出使用Dynamo和MCT实现两个软件之间的信息交互,并实现Midas/Civil向Revit节点信息的转换;文献[
7]提出基于皮尔森系数的区域生长算法,对Revit模型构件进行分解,将三维的Revit构件转换为Midas/Civil杆系模型;文献[
1]在文献[
16]的基础上添加了施工阶段信息的传递;文献[
19]提出使用三角单元法实现Revit构件截面特性的计算与转换.关于有限元分析结果反馈至Revit模型并且进行可视化展示的研究很少.
本文结合已有方案,在既有Revit桥梁模型的基础上,提出基于Dynamo实现:1)Revit模型构件分解、截面特性计算、材料参数提取、拉索及梁塔弹性连接处理,并将之转换为Midas/Civil建模MCT格式数据;2)Midas/Civil有限元分析结果反馈至Revit模型,实现有限元数据可视化.
1 模型转换程序开发
1.1 开发工具
Revit除了可以使用GUI对构件创建修改外,其开放的API接口为外部程序的访问提供了极大的方便.基于Revit API.dll和Revit APIUI.dll程序集,可以深入访问Revit底层数据库,获取模型的几何和非几何信息.Revit API是.NET类型的,只要支持.NET Framework的语言都可以访问,故C#、Visual Basic、Visual C++以及安装了.NET绑定库的Python都可以调用.采用这些方法访问或修改构件信息,其本质都是对Revit API操作.
本文以Revit 2022为BIM建模平台,利用Revit扩展应用Dynamo2.10访问Revit API的方式进行二次开发,并选择IronPython2为编程语言,提出了一种Revit-Midas/Civil模型交互方法(见
图1).
1.2 开发流程
Midas/Civil有限元模型的建立要素大致可以分为:1)建立节点、单元;2)赋予边界条件;3)定义截面特性;4)选择材料力学参数.这些信息都可以用程序从Revit中获取.利用Dynamo二次开发对数据进行提取与转存,实现Revit与Midas/Civil之间的模型转换.MCT是两者之间数据载体,因此从Revit中提取出来的信息必须遵循MCT文件规范,程序开发流程如
图2所示.转换具体步骤如下:
1)模型创建并处理.BIM模型尤其是钢箱梁桥模型中多了很多有限元模型创建时不需要的构件,比如过人孔、横隔板加劲等.这些构件在有限元模型建立中并不必要,且对后续的构件分解会产生较大影响,需提前将这些构件从主体结构中分离出来.
2)材质获取与构件分解.通过窗口选择并过滤出需要的构件实例,并将之传输至Dynamo空间中.遍历构件以下信息:①获取构件的材料信息;②通过计算Pearson系数方式寻找构件变截面点,截取变截面点处截面轮廓.具体流程如
图3所示.
3)通过三角分块法计算截面特性.桥梁结构中,不管是上部结构、下部结构还是桩基础,构件截面都可以用多个封闭轮廓来表达.实心截面由一个封闭轮廓构成,空心截面需要有多个封闭轮廓,定义轮廓中最外层的为外轮廓,其余统称为内轮廓.如
图4(a)中的箱梁截面,截面由一个外轮廓、一个内轮廓构成.
在三角单元划分完成之后,在已知三角单元三个角点坐标的情况下[见
图4(b)],可以计算出该三角单元的面积
Ai 、单元对
X轴面积矩
Sxi 以及单元对
X轴惯性矩
Ixi .
4)整合构件信息.获取各个构件的节点坐标、截面特性、材料信息之后,由于相邻构件建模时紧贴在一起,故需清除重复信息.将各构件信息整合在一起,然后以MCT格式输出文件并存放至预先选择路径.
5)有限元模型建立.Midas/Civil软件通过读取MCT文件建立有限元模型,对于Revit模型中支座、荷载、施工阶段等缺失的信息,可以在生成的有限元模型上手动添加.
6)有限元分析及反馈.有限元计算分析完成后,将需要的计算结果导出至Excel文件中,通过
Dynamo读取该文件作为Revit原始模型的变化信息,并对变化信息按数值大小赋予渐变颜色,实现在BIM模型中显示有限元分析结果的展示功能.
2 模型转换方法验证
为验证本文方法的可行性,以博士大桥主桥为例进行验证.主桥桥型为独塔双索面斜拉桥,跨径布置为2×100 m,主塔采用人字形,主梁采用分离式钢箱梁,斜拉索采用马鞍形索面,大桥结构采用漂浮体系,塔墩固结,塔梁分离.建立的全桥以及箱梁Revit模型见
图5和
图6.
2.1 构件材料信息提取
Revit中族实例的材质属性存储于结构材质这一参数中,该参数是可读可更改的,Revit开放了该参数的API接口,故可以通过Dynamo访问修改族实例的材质参数.
博士大桥Revit模型钢结构部分为Q345材质,混凝土部分为C50,由程序读取材料参数如
表1所示.Dynamo获取材质程序执行过程界面如
图7所示.
2.2 构件截面信息获取
截取Revit模型中钢箱梁(见
图8)为例,用本文程序计算其截面特性,得到本文结果,另采用CAD绘制截面导入Midas/Civil,采用其SPC截面特性计算器进行计算,两者计算结果对比如
表2所示,结果表明计算精度满足要求.
截面特性计算核心代码如下:
def get_section_property(contour_point_lst, jud ge): # 传入轮廓点
area=0
p1=contour_point_lst[0]
for point_ind in range(1,len(contour_point_ lst)-1):
p2=contour_point_lst[point_ind]
p3=contour_point_lst[point_ind + 1]
area+=((p2.Y-p1.Y) * (p3.Z - p1.Z)-(p2.Z-p1.Z) * (p3.Y-p1.Y)) / 2
if (area>0 and judge ==0)or (area < 0 and judge == 1):
# 当为内轮廓且为顺时针时
contour_point_lst = list(reversed(contour_point_lst))
p1 = contour_point_lst[0]
area, sy, iy, sz, iz = 0, 0, 0, 0, 0
for point_ind in range(1, len(contour_point_lst) - 1):
p2 = contour_point_lst[point_ind]
p3 = contour_point_lst[point_ind + 1]
area += ((p2.Y-p1.Y) * (p3.Z-p1.Z)-(p2.Z - p1.Z) * (p3.Y - p1.Y)) / 2
sy += area * (p1.Z + p2.Z + p3.Z) / 3
iy += area * ((p1.Z + p2.Z) ** 2 + (p2.Z + p3.Z) ** 2 + (p1.Z + p3.Z) ** 2) / 12
sz += area * (p1.Y + p2.Y + p3.Y) / 3
iz += area * ((p1.Y + p2.Y) ** 2 + (p2.Y + p3.Y) ** 2 + (p1.Y + p3.Y) ** 2) / 12
return [area, sy, iy, sz, iz]
2.3 构件分解
基于面积的Pearson系数对梁塔这类框架族实例构件进行分解,得到构件变截面点坐标序列,并依照梁轴线对坐标序列进行加密处理,使最终线形贴合Revit模型.以某节段主梁为例,分解加密后节点坐标如
表3所示,表中每行代表一个主梁节点,从左到右数字依次为该节点的
X、
Y、
Z坐标,True标记表示该节点为变截面点,False标记表示该节点为等截面点.拉索是自适应构件,可通过提取自适应点坐标进行分解.博士大桥主桥的分解整合最终线形如
图9所示.
2.4 数据整合及有限元计算
由于博士桥为斜拉桥,索塔、索梁间弹性连接较多,手动添加会带来较大的工作量,故程序在索梁、索塔连接位置添加节点并建立弹性连接.核心程序代码如下:
# 找出主梁中与各根拉索最接近点索引
intersect_beam_cable_ind = []
for i in range(len(cable_coordinate_lst)):
x_coordinate = cable_coordinate_lst[i][0][0]
for j in range(len(beam_point_lst)):
tmp_x = beam_point_lst[j][0]
diff_x = tmp_x - x_coordinate
if diff_x >= 0:
intersect_beam_cable_ind.append(j - 1)
break
# 在主梁节点列表内添加新节点
new_beam_point_lst = []
cross_ind = 0
for beam_point_ind in range(len(beam_point_lst)):
point = beam_point_lst[beam_point_ind]
new_beam_point_lst.append(point)
if beam_point_ind in intersect_beam_cable_ind:
next_point = beam_point_lst[beam_point_ind + 1]
tmp_x = cable_coordinate_lst[cross_ind][0][0]
tmp_y = point[1]
diff_x = next_point[0] - point[0]
diff_z = next_point[2] - point[2]
tmp_z = point[2] + (diff_z / diff_x) * (tmp_x - point[0])
new_point = [tmp_x, tmp_y, tmp_z, "cross_cable", False]
new_beam_point_lst.append(new_point)
cross_ind += 1
# 创建弹性连接
intersect_cable_inode_lst = []
inode_lst = []
inode = 0
for point in point_lst:
file.write(f"{inode}, {point[0]}, {point[1]}, {point[2]}\n")
inode_lst.append(inode)
point.insert(-1, inode)
if point[-2] == "cross_cable":
intersect_cable_inode_lst.append(inode)
inode += 1
i = 0
for cable_lst in cable_coordinate_lst:
file.write(f"{link_ino}, {cable_lst[0][-1]}, intersect_cable_inode_lst[i]}, RIGID, 0, NO, 0.5, 0.5,\n")
link_ino += 1
i += 1
经整合桥梁线形、截面特性、拉索及梁塔弹性连接等数据之后,博士大桥Midas/Civil有限元模型如
图10所示.
手动添加支座、拉索张拉力等计算参数后,取一次成桥状态进行有限元计算(计算结果见
图11),并将有限元分析结果以Excel表格输出.
为了验证本文模型转换的正确性,与采用Midas/Civil软件直接建模分析的结果对比,如
表4所示.限于篇幅,表中仅列出两种方法计算的主梁挠度、应力最值,主塔应力和典型索力值,结果表明相对误差基本在5%以内,满足计算精度要求.
2.5 有限元结果反馈与展示
通过Dynamo读取Excel表格的计算结果,经格式转换并输入Revit模型作为作用效应信息,并将作用效应信息按其数值大小赋予渐变颜色.以一次成桥施工阶段主梁
Z方向位移沿
X轴变化情况为例,如
图12所示,颜色越红表示
Z方向正向位移越大,由图可知主梁在远离桥塔位置处
Z向位移大.
3 结 论
1)本文提出一种Revit与Midas/Civil间的模型数据交互方法,即通过Dynamo-IronPython访问Revit API的方式,编写了模型转换程序,获取Revit模型中构件的节点、材料、截面等信息,并将其转换为Midas/Civil软件语言格式MCT文件,实现了两种模型之间的转换.
2)有限元计算结果导出至Excel文件,通过
Dynamo读取该文件作为Revit原始模型的变化信息,并对变化信息按数值大小赋予渐变颜色,实现了在BIM模型中显示有限元分析结果的展示功能.通过在博士大桥上的应用,验证了模型转换方法与程序的可行性.
3)由Revit模型直接转换为有限元模型,避免了分别建模可能产生模型物理信息不一致的弊端,并且提高了建模效率,也弥补了BIM技术在桥梁结构分析方面的不足.
国家自然科学基金资助项目(52408226)
国家自然科学基金资助项目(U23A20659)
National Natural ScienceFoundation of China(52408226)
National Natural ScienceFoundation of China(U23A20659)
浙江省“尖兵”“领雁”研发攻关计划资助项目(2022CO1143)
The “Pioneer”and “Leading Goose” R&D Program of Zhejiang(2022CO1143)