地铁限界CAD系统设计及关键技术研究
摘 要 地铁限界直接影响地铁土建工程的规模及造价,是工程设计的重要内容。文章在分析限界手工设计内容方法的基础上,提出了以AutoCAD为平台进行地铁限界CAD系统二次开发的设计思想和总体框架,并对其关键技术进行了分析。
关键词 地铁;限界;
0引 言
地铁限界不仅制约着地铁车辆的外形尺寸,还直接影响到地铁工程土建部分的投资规模,对地铁造价有重要影响。确定一个既能保证车辆运行安全,又不增大隧道空间的经济、合理的断面是限界设计的任务和目的。
计算机技术迅速发展,使地铁设计工作已经达到了100%计算机出图,实现了“甩掉图板”的目标。然而,充分发挥计算机辅助设计的优势,克服地铁限界设计中的缺点,使地铁限界设计实现真正的计算机辅助设计,提高限界设计的工作效率,保证设计质量,开发实现一套集计算、设计、成图一体化的地铁限界设计CAD系统,具有重要的现实意义。
1地铁限界的概念与规定[1,2]
限界是保障地铁安全运行、限制车辆断面尺寸、限制沿线设备安装尺寸、确定建筑结构有效尺寸的图形。根据不同的功能要求,地铁限界分为车辆限界、设备限界、建筑限界。
车辆限界是指车辆在直线地段正常运行状态下的最大动态包络线。所谓正常运行状态是指一系悬挂和二系悬挂在正常弹性范围内、易损件磨耗不过限等。高架或地面线车辆限界易受风荷载的影响,在计算时需要考虑,而这一点与隧道内是不同的。
设备限界是车辆在运行途中一系悬挂或二系悬挂发生故障状态时的动态包络线,用以限制安装设备不得侵入的一条控制线。
建筑限界是在设备限界基础上,考虑了设备和管线安装尺寸后的最小有效断面。建筑限界中不包括测量误差、施工误差、结构沉降、位移变形等因素。
2系统设计
1)当前限界设计流程。地铁限界设计的一般入口是:根据线路设计的详细资料,按照规范中的标准车型或者车辆供应商提供的车辆限界,进行限界设计。所以设计部门和工务部门一般不用考虑车辆限界的计算,而是一开始就以车辆限界为起点,计算出隧道内(地下线)和高架线(地面线)直线地段的设备限界,再以此设备限界为基础计算其它断面处的设备限界,进而与各相关专业配合进行建筑限界设计,最后整理出图。设计流程如图1所示。
2)系统开发环境。系统形式采用基于AutoCAD的内嵌式二次开发,使用VBA语言。操作系统平台采用MicrosoftWindows2000/XP;基础图形系统平台采用AutoCAD2004/2005;系统数据库平台选用MicrosoftAccessXP/2003;编程工具采用VBA程序设计语言。
3)系统功能结构设计。系统使用“项目”和“图纸”的概念。参照MicrosoftVisualStudio管理工程的方法,我们亦将系统变量及参数分成“项目级”和“图纸级”两个级别。应用本系统进行一次设计,只有一套项目级信息,每个项目对应一个项目文件;而该项目中可以包含多个图纸级文件,对应多条数据库记录和相应的.dwg图形文件。
本系统中,“项目管理”和“车辆限界”子系统标和车辆限界控制点坐标,这些数据是《地铁限界标准》中规定的默认值。默认数据库中还包含3个空表,当成为用户数据库后可用于记录项目中的图纸信息和对应的设备限界、建筑限界数据。用户新建项目后,程序根据车辆类型将相应的.mdb文件复制到用户指定的路径并重命名为项目文件。
用户数据库以项目文件的形式存在,在项目新建时其内容与默认数据库中的内容是一致的。如果用户对车辆限界等信息进行修改,用户数据库会随之更新并用于后续的绘图和设备限界等计算。用户新建图纸后,存储图纸信息、设备限界控制点坐标和建筑限界数据的表会相应地增加记录;删除图纸时,这些记录亦被删除。
在数据库中包含如下6个二维表。
PrjInfo。项目信息表(项目名称、设计时间、设计负责人等); 属于项目级设计内容,对应有项目基本信息、车辆基本信息、车辆轮廓、车辆限界等;“设备限界”和“建筑限界”属于图纸级设计内容,对应有图纸信息、轨道线路参数、设备限界、建筑限界、设备布置等;项目数据和图纸数据都有报表生成功能。程序的运行和用户的操作都应遵循这个原则。根据以上内容,系统功能结构设计如图2所示。
(4)系统数据库设计。系统属于CAD二次开发软件,主要功能是计算和绘图,需要读写的数据量较小。考虑到与VBA的兼容性,本系统采用MicrosoftAccess数据库,数据库访问引擎采用比较成熟的DAO技术。本系统的数据库分为:默认数据库和用户数据库。
默认数据库存与程序文件存放在一起,为DefaultA.mdb、DefaultB1.mdb和DefaultB2.mdb3个文件。从文件名可以看出,这3个文件是与车辆类型对应的,默认数据库记有某种车辆类型的车辆基本信息、车辆轮廓控制点坐VehiInfo。车辆信息表(车辆类型、车体长度、车辆定距、车体长度等);
Points。车辆轮廓及车辆限界表(包含车辆轮廓及车辆限界的控制点坐标);
DrawingsInfo。图纸信息表(图纸名称、设计人、线路类型、曲线半径等);
DrawingsEquip。图纸设备限界表(包含设备限界的控制点坐标);
DrawingsStr。图纸建筑限界表(包含建筑限界相关数据)。
其中PrjInfo、VehiInfo、Points是与项目对应的,其记录数不会发生改变;DrawingsInfo、DrawingsEquip、DrawingsStr是与图纸对应的,在用户数据库中会随着图纸的添加与删除而增减。
5)系统使用流程。参考限界手工设计过程,本系统的使用及运行流程如图3所示。
3系统开发关键技术
1)DVB工程启动器[3]。本系统采用VBA开发,VBA与VB存有差别,其差别之一是程序运行时无法得到自身DVB工程文件的运行路径,会导致程序无法进行自我定位,不能在运行时访问默认数据库和预制的设备图块文件,因此程序在运行时需要通过某种外部途径获得自己的运行路径。另外,启动VBA程序的一般途径是运行某个宏命令,而从用户角度考虑的话,这是及其不方便的,需要采用某种用户熟悉的运行程序的方法。综合以上两点,本系统通过一个.exe程序启动。该程序主要功能是自动加载并运行本CAD系统,并初始化配置文件,为VBA程序的运行作准备。入口程序如图4所示。
该程序使用VisualBasic6.0开发,用户可以通过该程序的快捷方式或者直接双击该.exe文件运行工程启动器。程序加载后,将列举系统注册表中所记录的已安装的AutoCAD程序的路径,如果用户要从其他未注册的CAD软件中运行本系统,可以点击“其他”按钮选择程序文件。
用户点击“确定”按钮后,程序将生成C:\Gauges.tmp文件,该文件的典型内容如下:
[Operation]
DVBPath=C:\ProgramFiles\MetroGauges\
随后程序使用Shell语句运行AutoCAD软件并加载Gauges.dvb工程文件。如果用户选择了“加载后执行VBA程序”,当AutoCAD软件运行并加载Gauges.dvb后,程序向AutoCAD主窗口发送键盘消息“-vabrunStartProgram”以启动系统。程序采用以下方式使工程自动运行。
PublicSubRunMacro()
SendKeys“{ESC}”,True
SendKeys“{ESC}”,True
SendKeys“-”,True
SendKeys“V”,True
SendKeys“B”,True
SendKeys“A”,True
SendKeys“R”,True
SendKeys“U”,True
SendKeys“N”,True
SendKeys“”,True
SendKeys“S”,True
SendKeys“T”,True
SendKeys“A”,True
SendKeys“R”,True
SendKeys“T”,True
SendKeys“P”,True
SendKeys“R”,True
SendKeys“O”,True
SendKeys“G”,True
SendKeys“R”,True
SendKeys“A”,True
SendKeys“M”,True
SendKeys“{ENTER}”,True
EndSub
加载工程前,启动器程序将自身窗口隐藏,完成上述操作后,该程序自动退出。
2)图形绘制技术[4,5]。本系统大部分的运算工作是通过各种算法计算各控制点坐标,将这些控制点按规则绘图就形成各种限界图形。系统结合AutoCAD的画图工具,实现了自动绘图功能,以下是系统绘图功能的相关技术。
要画图必须先确定画图的起点,可以让程序把点移动到开始点,即设置当前点,以下为设置当前绘制起点函数MoveTo(ptCurrent为当前点):
PublicFunctionMoveTo(ptNewAsPoint)
ptCurrent=ptNew
EndFunction
VBA里内置了画线段语句AddLine,确定了线段的起点和终点之后就可以连接这两点画线段。因为AutoCAD里点的定义方式是三维的(X,Y,Z),但断面是二维的(X,Y),故要把每点的Z值设为0。以下是通过两点绘制线段函数LinePoints(ptStart为起点,ptEnd为终点)。
PublicFunctionLinePoints(ptStartAsPoint,ptEndAsPoint)
DimpSAsPoint
DimpEAsPoint
pS=ptStart
pE=ptEnd
DimapStart(2)AsDouble
DimapEnd(2)AsDouble
apStart(0)=pS.X:apStart(1)=pS.Y:apStart(2)=0
apEnd(0)=pE.X:apEnd(1)=pE.Y:apEnd(2)=0
ThisDrawing.ModelSpace.AddLineapStart,apEndEndFunction
为了能连续地画线,可以把前一线段的终点设为后一线段的起点,这样可以提高画线效率,并且不用重新设置线段的起点即设置当前绘制起点函数MoveTo只在画图形的第一点及中间打断的线段的第一点调用。以下为连续画线段函数LineTo:
PublicFunctionLineTo(ptEndAsPoint)
LinePointsptCurrent,ptEnd
ptCurrent=ptEnd
EndFunction
为了方便标注及在AutoCAD绘图窗口的观察,限界图纸上要把控制点突出表示。本系统选用在各控制点画点并标注的方式显示各控制点(用户可以选择点样式)。VBA里内置了画点语句AddPoint,以下是画点函数DrawPoint:
PublicFunctionDrawPoint(ptAsPoint)
DimapThis(2)AsDouble
apThis(0)=pt.X:apThis(1)=pt.Y:apThis(2)=0
ThisDrawing.ModelSpace.AddPoint(apThis)
EndFunction
某些时候限界坐标是左右对称的,此时为了节省空间,系统数据库里只存储了横坐标为正值(即Y轴右边的点),在绘图时先把Y轴右边点的横坐标变成负值(有些点坐标已为负值,这些特殊点横坐标不做变化),纵坐标值不变,这样可以得到限界上的所有点,然后绘图。以下为反转(横)坐标函数ReverseX:
PublicFunctionReverseX(ptAsPoint)AsPoint
DimptNewAsPoint
ptNew.X=-pt.X
ptNew.Y=pt.Y
ReverseX=ptNew
EndFunction
通过以上各绘图函数,再将各种规则写入代码,就可以实现自动绘图功能。图5为A型车地下圆形隧道区间的限界设计结果,图中内容全部自动生成(代码略)。
4结 语
与现有的同类软件相比,本系统大胆地将实现完整设计工作的计算和绘图作为目标,着眼于与实际设计工作的配合,尽量达到辅助设计的目的。系统在AutoCAD环境下运行,相当于给AutoCAD提供了一套强有力的专业工具,使计算和绘图形成一体,同时给用户提供了较大的活动空间,使用户能够在任何时候对所绘制的图形进行编辑。本系统的建立能够简化地铁限界设计工作,提高限界设计的效率和质量,提高工程建设信息化管理的水平。
参考文献
1 中华人民共和国国家标准.地铁设计规范GB50157-2003.北京:中国计划出版社,2003.14~20,198~225
2中华人民共和国行业标准.地铁限界标准CJJ96-2003.北京:中国建筑工业出版社,2003.2~3,96~97
3 MicrosoftCorporation.VisualBasic6.0中文版程序员指南,北京:北京希望电脑公司,1999.706~725
4 王钰.用VBA开发AutoCAD2000应用程序,北京:人民邮电出版社,1999.66~109
5 张帆,郑立楷,王华杰.AutoCADVBA开发精彩实例教程.北京:清华大学出版社,2004.36~76