论文部分内容阅读
摘要:本文以笔者开发的预应力钢束坐标采集程序为例,介绍运用Visual Basic工具在AutoCad平台上采集钢束坐标,并生成Midas Civil钢束数据的二次开发方法,以提高桥梁结构计算建模效率。
关键词:Visual Basic;AutoCAD;Midas Civil;结构计算;二次开发
1 前言
近年来,公路建设发展迅猛,大跨径桥梁越来越多地被采用;城市化进程不断推进,对桥梁美观的要求将结构尺寸一再减小;此外,工程建设质量问题频发,促使工程设计规范日益成熟……这些事实一再表明结构计算越来越重要!
笔者结合多年桥梁设计经验,深入分析发现:桥梁结构尺寸拟定,通常由经验丰富的工程师完成,后续设计一般不作改变,因此结构计算的难点并不在此,往往在于钢束调整过程。钢束调整过程一般是:先绘出钢束形状,然后采集数据,并输入结构计算软件(如Midas Civil)计算,研究计算结果,重复上述过程直到结构受力满足要求。这一过程中,若钢束数量较多,采用手工方式采集与输入耗时耗力,效率低下且容易出错,更无法满足快速计算的需要。
本文提出利用VB在AutoCAD平台上进行二次开发,读取AutoCAD图形信息,按计算程序(如Midas Civil)要求写入文件,再在计算程序中读入文件,即完成从AutoCAD中采集,到计算程序中(Midas Civil)输入的过程。按此设想开发的预应力钢束坐标采集程序,在AutoCAD中用多段线绘制好钢束,按程序提示在AutoCAD中选取钢束,然后存为“.mct”文件,在Midas Civil中执行“读入MCT”,即实现了钢束采集及输入的过程。
2模块构成
预应力钢束坐标采集程序执行基本流程如下(图1)。以下对程序主要模块作一简要介绍。
2.1 连接AutoCAD模块
程序启动后首先连接到AutoCAD,将其设计为一个模块:检察AutoCAD是否启动,若已经启动则直接连接;若未启动则启动之;如果启动失败,向用户作错误提示;连接成功后,设置AutoCAD窗口状态。代码如下:
Public Sub linkcad()
Set cad=GetObject(,"AutoCad.Application")
If Err.Number Then
Err.Clear
Set cad=CreateObject("AutoCad.Application")
If Err.Number Then
MsgBox "启动AutoCAD失败,请检察AutoCAD是否正确安装!"
Exit Sub
End If
End If
cad.Visible=True
cad.WindowState=acMax
End Sub
2.2钢束选取模块
执行钢束采集,实际是调用钢束选取模块,该模块创建名为“tdn”的选择集;然后调用选择集的屏幕选择功能;使用多段线作为选取过滤条件,以便只有多段线能够被选中;以“空格”或“回车”结束选取,核心代码如下:
Public Sub selecting()
Dim ft(0)As Integer,fd(0)As Variant
cad.ActiveDocument.SelectionSets("tdn").Delete
Set sset=cad.ActiveDocument.SelectionSets.Add("tdn")
sset.Clear
ft(0)=0
fd(0)="lwpolyline"
sset.SelectOnScreen ft,fd
End Sub
2.3 生成MCT文件模块
当钢束选取结束后,所选钢束(AutoCAD中的多段线)保存在 “tdn”选择集中,执行程序的“存为MCT”命令可将钢束数据按Midas Civil所需格式写入“.mct”文件。
先就AutoCAD对多段线的存储作个补充:(图2)为一根钢束(即AutoCAD中的多段线),标识R1、R2者为两段圆弧。AutoCAD以坐标(x,y)的顺序将1~6点依次存放在该多段线的Coordinates变量中;通过多段线的成员函数GetBulge(i),可以获取每个顶点处的凸度,关于凸度,是以圆弧圆心角来定义的,凸度b与圆心角θ的关系为b=tg(θ/4);
Midas Civil中存储钢束数据采用交点法,如(图2)存储的是1、JD1、3、4、JD2、6点的(x,y,R)信息;因此,需对多段线作一些计算,包括JD1、JD2的坐标及该点处半径R1、R2;交点的坐标根据平面解析几何的知识不难求得,半径R1、R2,根据前述凸度与圆心角的关系也可求;程序中该计算封装到calculeadparam()函数中,不作深入。
生成MCT文件的模块savedata_mct()是本程序的核心,大致思路是:对“tdn”选择集各多段线循环,取出一条多段线,取得所有顶点坐标及凸度,以此为参数调用calculeadparam()函数求解多段线的交点,再调用writedata_mct()函数写入到MCT文件,完成了一根钢束的数据采集。下面是两个过程的核心代码:
Public Sub savedata_mct()
For Each lwpl In sset
vc=lwpl.Coordinates
pc=(UBound(vc)-LBound(vc)+1)/2 For i=0 To pc
b(i)=lwpl.GetBulge(i)
chd(2*i)=vc(2*i)
chd(2*i+1)=vc(2*i+1)
Next i
calculeadparam chd,b,lp
writedata_mct ind,lp,1
ind=ind+1
Next lwpl
End Sub
Public Sub writedata_mct(ByVal ind As Integer,ByRef lp()As Double,ByVal fi As Integer)
lc=(UBound(lparam)-LBound(lparam)+1)/3
Print #fi,"*TDN-PROFILE"
Print #fi,"NAME="&tdnn&","&tdnp& ","&tdne&",0,0,ROUND,2D"
Print #fi,",USER,0,0,YES,"&tdnc
Print #fi,"STRAIGHT,0,0,0,X,0,0"
Print #fi,"0,YES,Y,0"
Print #fi,"Y="&lp(0);",0,NO,0,0,NONE,,,,"
Print #fi,"Y="&lp(3*(lc-1));",0,NO,0,0,NONE,,,,"
For i=0 To lc-1
Print #fi,"Z="&lp(3*i)&","&lp(3*i+1)&",NO,0,"&lp(3*i+2)&",NONE,,,,"
Next i
End Sub
3 成果输出
如(图3)是(40+2×60+40)m预应力混凝土连续刚构桥钢束坐标采集过程,钢束共70束,上图是钢束导入了Midas Civil中的情形,下图是AutoCAD中钢束布置图。若手工采集数据并输入到Midas Civil,至少耗时2小时以上,并且容易出错;应用笔者开发的钢束坐标采集程序,耗时不到5分钟,不仅轻松完成任务,也保证了采集的准确性,极大地提高了结构辅助建模的效率。
4 结束语
运用计算机技术辅助桥梁结构设计已经历了多年的发展,各种大型的桥梁结构辅助设计软件不断推陈出新,极大的减化了桥梁设计员的工作,减轻了设计人员的负担;但桥梁结构设计中仍有许多重复而又繁琐的工作。本文以一个预应力结构计算辅助建模工具的开发为例,展现了在桥梁结构辅助设计软件(如AutoCAD和Midas Civil)基础上进行二次开发所焕发的生机,但由于作者水平有限,错误和疏漏再所难免,恳请读者予以批评指正。
参考文献:
[1] 张晋西,Visual Basic与AutoCAD二次开发,清华大学出版社,2002.
[2] 刘美兰,midas Civil在桥梁结构分析中的应用1,人民交通出版社,2012.
[3] 邱冬顺,桥梁工程软件Midas Civil常见问题解答,人民交通出版社,2009
关键词:Visual Basic;AutoCAD;Midas Civil;结构计算;二次开发
1 前言
近年来,公路建设发展迅猛,大跨径桥梁越来越多地被采用;城市化进程不断推进,对桥梁美观的要求将结构尺寸一再减小;此外,工程建设质量问题频发,促使工程设计规范日益成熟……这些事实一再表明结构计算越来越重要!
笔者结合多年桥梁设计经验,深入分析发现:桥梁结构尺寸拟定,通常由经验丰富的工程师完成,后续设计一般不作改变,因此结构计算的难点并不在此,往往在于钢束调整过程。钢束调整过程一般是:先绘出钢束形状,然后采集数据,并输入结构计算软件(如Midas Civil)计算,研究计算结果,重复上述过程直到结构受力满足要求。这一过程中,若钢束数量较多,采用手工方式采集与输入耗时耗力,效率低下且容易出错,更无法满足快速计算的需要。
本文提出利用VB在AutoCAD平台上进行二次开发,读取AutoCAD图形信息,按计算程序(如Midas Civil)要求写入文件,再在计算程序中读入文件,即完成从AutoCAD中采集,到计算程序中(Midas Civil)输入的过程。按此设想开发的预应力钢束坐标采集程序,在AutoCAD中用多段线绘制好钢束,按程序提示在AutoCAD中选取钢束,然后存为“.mct”文件,在Midas Civil中执行“读入MCT”,即实现了钢束采集及输入的过程。
2模块构成
预应力钢束坐标采集程序执行基本流程如下(图1)。以下对程序主要模块作一简要介绍。
2.1 连接AutoCAD模块
程序启动后首先连接到AutoCAD,将其设计为一个模块:检察AutoCAD是否启动,若已经启动则直接连接;若未启动则启动之;如果启动失败,向用户作错误提示;连接成功后,设置AutoCAD窗口状态。代码如下:
Public Sub linkcad()
Set cad=GetObject(,"AutoCad.Application")
If Err.Number Then
Err.Clear
Set cad=CreateObject("AutoCad.Application")
If Err.Number Then
MsgBox "启动AutoCAD失败,请检察AutoCAD是否正确安装!"
Exit Sub
End If
End If
cad.Visible=True
cad.WindowState=acMax
End Sub
2.2钢束选取模块
执行钢束采集,实际是调用钢束选取模块,该模块创建名为“tdn”的选择集;然后调用选择集的屏幕选择功能;使用多段线作为选取过滤条件,以便只有多段线能够被选中;以“空格”或“回车”结束选取,核心代码如下:
Public Sub selecting()
Dim ft(0)As Integer,fd(0)As Variant
cad.ActiveDocument.SelectionSets("tdn").Delete
Set sset=cad.ActiveDocument.SelectionSets.Add("tdn")
sset.Clear
ft(0)=0
fd(0)="lwpolyline"
sset.SelectOnScreen ft,fd
End Sub
2.3 生成MCT文件模块
当钢束选取结束后,所选钢束(AutoCAD中的多段线)保存在 “tdn”选择集中,执行程序的“存为MCT”命令可将钢束数据按Midas Civil所需格式写入“.mct”文件。
先就AutoCAD对多段线的存储作个补充:(图2)为一根钢束(即AutoCAD中的多段线),标识R1、R2者为两段圆弧。AutoCAD以坐标(x,y)的顺序将1~6点依次存放在该多段线的Coordinates变量中;通过多段线的成员函数GetBulge(i),可以获取每个顶点处的凸度,关于凸度,是以圆弧圆心角来定义的,凸度b与圆心角θ的关系为b=tg(θ/4);
Midas Civil中存储钢束数据采用交点法,如(图2)存储的是1、JD1、3、4、JD2、6点的(x,y,R)信息;因此,需对多段线作一些计算,包括JD1、JD2的坐标及该点处半径R1、R2;交点的坐标根据平面解析几何的知识不难求得,半径R1、R2,根据前述凸度与圆心角的关系也可求;程序中该计算封装到calculeadparam()函数中,不作深入。
生成MCT文件的模块savedata_mct()是本程序的核心,大致思路是:对“tdn”选择集各多段线循环,取出一条多段线,取得所有顶点坐标及凸度,以此为参数调用calculeadparam()函数求解多段线的交点,再调用writedata_mct()函数写入到MCT文件,完成了一根钢束的数据采集。下面是两个过程的核心代码:
Public Sub savedata_mct()
For Each lwpl In sset
vc=lwpl.Coordinates
pc=(UBound(vc)-LBound(vc)+1)/2 For i=0 To pc
b(i)=lwpl.GetBulge(i)
chd(2*i)=vc(2*i)
chd(2*i+1)=vc(2*i+1)
Next i
calculeadparam chd,b,lp
writedata_mct ind,lp,1
ind=ind+1
Next lwpl
End Sub
Public Sub writedata_mct(ByVal ind As Integer,ByRef lp()As Double,ByVal fi As Integer)
lc=(UBound(lparam)-LBound(lparam)+1)/3
Print #fi,"*TDN-PROFILE"
Print #fi,"NAME="&tdnn&","&tdnp& ","&tdne&",0,0,ROUND,2D"
Print #fi,",USER,0,0,YES,"&tdnc
Print #fi,"STRAIGHT,0,0,0,X,0,0"
Print #fi,"0,YES,Y,0"
Print #fi,"Y="&lp(0);",0,NO,0,0,NONE,,,,"
Print #fi,"Y="&lp(3*(lc-1));",0,NO,0,0,NONE,,,,"
For i=0 To lc-1
Print #fi,"Z="&lp(3*i)&","&lp(3*i+1)&",NO,0,"&lp(3*i+2)&",NONE,,,,"
Next i
End Sub
3 成果输出
如(图3)是(40+2×60+40)m预应力混凝土连续刚构桥钢束坐标采集过程,钢束共70束,上图是钢束导入了Midas Civil中的情形,下图是AutoCAD中钢束布置图。若手工采集数据并输入到Midas Civil,至少耗时2小时以上,并且容易出错;应用笔者开发的钢束坐标采集程序,耗时不到5分钟,不仅轻松完成任务,也保证了采集的准确性,极大地提高了结构辅助建模的效率。
4 结束语
运用计算机技术辅助桥梁结构设计已经历了多年的发展,各种大型的桥梁结构辅助设计软件不断推陈出新,极大的减化了桥梁设计员的工作,减轻了设计人员的负担;但桥梁结构设计中仍有许多重复而又繁琐的工作。本文以一个预应力结构计算辅助建模工具的开发为例,展现了在桥梁结构辅助设计软件(如AutoCAD和Midas Civil)基础上进行二次开发所焕发的生机,但由于作者水平有限,错误和疏漏再所难免,恳请读者予以批评指正。
参考文献:
[1] 张晋西,Visual Basic与AutoCAD二次开发,清华大学出版社,2002.
[2] 刘美兰,midas Civil在桥梁结构分析中的应用1,人民交通出版社,2012.
[3] 邱冬顺,桥梁工程软件Midas Civil常见问题解答,人民交通出版社,2009