APP下载

基于CAD二次开发的既有铁路线路大修纵断面拉坡设计

2019-02-15武伟刚贺英刘青春

科技与创新 2019年1期
关键词:交底轨道程序

武伟刚,贺英,刘青春



基于CAD二次开发的既有铁路线路大修纵断面拉坡设计

武伟刚,贺英,刘青春

(四川管理职业学院,四川 成都 611732)

既有铁路有砟轨道线路投入生产后,轨道的几何形位相比线路投入生产时设计标准发生很大变化。基于AutoCAD二次开发,采用拉弦法进行重构既有铁路线路纵断面的拉坡设计,根据VBA程序操作直接调用Excel软件中原始轨面测量数据,经程序拉坡设计计算后生成起道量技术交底文件,可指导大机捣固作业,实现人机交互且操作简单,缩减了费用和时间,有很强的实用性。

既有铁路;VBA;拉坡设计;起道量

1 引言

既有铁路有砟轨道线路投入生产后,相比线路投入生产时的设计标准位置,在水平面和垂直面发生变化,因此,既有铁路有砟轨道要进行全面而系统的养护维修,保持轨道几何形位的高平顺性是非常必要的。

目前,我国铁路线路大型捣固机械制造技术发展迅速。通过引进国外先进技术,然后消化吸收,再到现在研发出具有我国自主知识产权的大型捣固机械(比如D09-32系列),我国大型捣固机械已成为在役铁路线路大修与综合养护维修中重要的机械装备,在线路维修过程中,大型捣固车可尽量减小对有砟道床的扰动,恢复和提高线路轨道的几何形位和有砟道床的弹性,提高作业生产与养护维修的效率。

既有铁路有砟轨道在平面线形优化结果的基础上进行轨道的纵断面优化设计。纵断面的优化设计需在满足相关规范、轨道点约束条件的前提下进行,通过对轨道线路轨面点的高程进行拉坡设计,使得拉坡设计后线路纵断面线形成更加吻合铁路轨道线路的实际纵断面线形,但考虑到铁路线路都为混凝土轨枕,自重大,人工起道、落道难,而大机在捣固作业起道容易、落道难的情况,因此,在拉坡设计过程中保证只起道不落道,遵循“宁抬勿降”的原则进行拉坡设计,如图1所示,以指导和配合大型捣固机进行线路的起道作业,提高和改善铁路线路的平顺性和行车安全性的同时,提高作业生产效率。

当前铁路工务部门既有铁路有砟轨道拉坡设计常用的方法有纬地软件和Excel软件。采用纬地软件实现人机交互的速度快和效率高,但前期需要Excel处理外业轨面测量数据,需要购买昂贵的软件锁,且安装使用不方便,未被一些工务部门采用,仍旧采用简单操作;Excel拉坡设计速度慢、效率低。

本设计基于AutoCAD的VBA程序编程,直接调用Excel软件中原始轨面测量数据,经程序拉坡设计计算后生成起道量技术交底文件,实现人机交互且操作简单,减少了费用,缩短了时间,有很强的实用性。

图1 拉坡设计

2 VBA既有铁路线路大修纵断面设计

2.1 基于AutoCAD的VBA开发平台

基于AutoCAD的VBA应用程序是高级程序语言的强大计算功能与AutoCAD的强大绘图功能的结合,通过VBA程序语言对AutoCAD绘图操作抠门小控制,让AutoCAD、Excle数据与其他的VBA应用程序实现直接共享与无缝链接,交换数据非常方便、迅速。AutoCAD2008版本及以前版本自动嵌套有VBA程序,AutoCAD2008版本以后需要用户官网下载安装VBA程序,本设计采用AutoCAD2014版本进行。

2.2 既有铁路大修纵断面施测及数据记录

外业测量采用中平测量的方法,采集轨面高程间隔10 m,并用Excel软件按照中平测量表格格式记录数据。

2.3 绘制轨面线

调用Excel数据,经程序计算轨面相对高差并绘制轨面线,如图2所示。

主程序如下:

Dim excelApp As Excel.Application

Dim excelSheet As Excel.Worksheet

Dim ExcelWorkbook As Object ' 获取当前工程对应的路径

Dim strFile As String

strFile = ThisDrawing.Application.VBE.ActiveVBProject.FileName ' 运行Excel程序软件

Set excelApp = CreateObject("Excel.Application")

excelApp.Visible = True ' 打开指定的Excel文件,获得指定的页

excelApp.Workbooks.Open "C:UsersAdministratorDesktop拉坡示范数据"

Set excelSheet = excelApp.ActiveWorkbook.Sheets("Sheet1") ' 使用指定页的数据绘图

Dim lineObj As AcadLine

Dim i As Integer, j As Integer, n As Integer

Dim gmsj(0 To 2) As Double, zd(0 To 2) As Double

n = 1000

For i = 1 To n

gmsj(0) = excelSheet.Cells(i, 1).Value

gmsj(1) = excelSheet.Cells(i, 2).Value

gmsj(2) = 0

zd(0) = excelSheet.Cells(i + 1, 1).Value

zd(1) = excelSheet.Cells(i + 1, 2).Value

zd(2) = 0

Set lineObj = ThisDrawing.ModelSpace.AddLine(gmsj, zd)

lineObj.Layer = "既有轨面线"

Next i

2.4 拉坡设计并计算起道量

手动拉坡设计,并根据拉坡结果计算起道量,具体如图3所示。

图2 绘制轨面线

图3 手动拉坡并自动计算的起道量

主要程序如下:

If lobj.ObjectName = "AcDbLine" Then

sp = lobj.StartPoint

ep = lobj.EndPoint

m = Int((ep(0) - sp(0)) / 10)

j = Int((sp(0) - excelSheet.Cells(1, 1).Value) / 10)

If sp(0) - excelSheet.Cells(1, 1).Value = 0 Then

For i = 1 To m + 1 Step 1 '由第一个点开始拉坡,并计算起道量

Point(0) = excelSheet.Cells(i, 1).Value

Point(1) = excelSheet.Cells(i, 2).Value

Point(2) = 0

ptVer1(0) = Point(0): ptVer1(1) = Point(1): ptVer1(2) = 0

pt(1) = GetPoint(ptVer1, 0, 0)

k = (ep(1) - sp(1)) / (ep(0) - sp(0))

b = ep(1) - k * ep(0)

a = (Abs(k * Point(0) - Point(1) + b)) / Sqr(1 + k * k)

dis = Left(a, 3)

If Point(0) - ep(0) <= 0 And Point(0) - sp(0) >= 0 Then

Set objText = DrawTextRec(pt(1), dis, 4, 0, 0)

End If

Next i

Else

For i = j To n Step 1 '接上一拉坡直线的端点开始拉坡,并计算起道量

Point(0) = excelSheet.Cells(i, 1).Value

Point(1) = excelSheet.Cells(i, 2).Value

Point(2) = 0

ptVer1(0) = Point(0): ptVer1(1) = Point(1): ptVer1(2) = 0

pt(1) = GetPoint(ptVer1, 0, 0)

k = (ep(1) - sp(1)) / (ep(0) - sp(0))

b = ep(1) - k * ep(0)

a = (Abs(k * Point(0) - Point(1) + b)) / Sqr(1 + k * k)

dis = Left(a, 3)

If Point(0) - ep(0) <= 0 And Point(0) - sp(0) >= 0 Then

Set objText = DrawTextRec(pt(1), dis, 4, 0, 0)

End If

Next i

End If

2.5 生成技术交底文件

生成技术交底文件如图4所示。

主要程序如下:

Dim ExcelApp As New Excel.Application

Dim ExcelWkbk As Excel.Workbook

Set ExcelWkbk = ExcelApp.Workbooks.Add

Dim i As Integer

i = 1

Dim Ent As AcadEntity

Dim pt1 As Variant, pt2 As Variant

With ExcelWkbk.Worksheets("sheet1")

For Each Ent In ThisDrawing.ModelSpace

If Ent.ObjectName = "AcDbText" Then

.Range("A" & 1) = "里程"

.Range("B" & 1) = "起道量"

.Range("C" & 1) = "加起道量"

.Range("A" & i + 1) = i

.Range("B" & i + 1) = Ent.TextString

.Range("C" & i + 1) = .Range("B" & i + 1) + 5

i = i + 1

End If

Next Ent

End With

3 结论

本设计程序验证过程采用乌鲁木齐铁路局哈密工务段红柳河工区下行145+150—1 146+500起道量中的一部分作为验证,结果达到指导大机作业标准的要求,实现了人机交互,操作简单,降低了费用,缩短了时间,有很强的实用性。由于是普速有砟铁路,本设计暂时没有考虑到竖曲线,下一步研究中将考虑竖曲线的设置,以提高起道量的准确度。

图4 技术交底文件

[1]曾洪飞,张帆,卢择临.AutoCAD VBA&vVB.NET开发基础与实例教程[M].北京:中国电力出版社,2009.

[2]佟彪.VB语言与测量程序设计[M].第2版.北京:中国电力出版社,2015.

[3]王鹏.既有铁路轨道线形及捣固方案优化方法研究[D].成都:西南交通大学,2017.

[4]武伟刚.既有铁路纵断面改建设计及辅助CAD系统研究[D].兰州:兰州交通大学,2012.

2095-6835(2019)01-0040-03

U212.3

A

10.15913/j.cnki.kjycx.2019.01.040

〔编辑:张思楠〕

猜你喜欢

交底轨道程序
小天体环的轨道动力学
推荐书目《中国轨道号》
“新谢泼德”亚轨道运载器载人首飞成功
给Windows添加程序快速切换栏
朝美重回“相互羞辱轨道”?
试论我国未决羁押程序的立法完善
建设方项目安全生产、文明施工、环境保护开工前交底初探
独立基础施工实训学材
“程序猿”的生活什么样
浅谈施工技术交底的实施过程