武偉剛,賀英,劉青春
?
基于CAD二次開發的既有鐵路線路大修縱斷面拉坡設計
武偉剛,賀英,劉青春
(四川管理職業學院,四川 成都 611732)
既有鐵路有砟軌道線路投入生產后,軌道的幾何形位相比線路投入生產時設計標準發生很大變化。基于AutoCAD二次開發,采用拉弦法進行重構既有鐵路線路縱斷面的拉坡設計,根據VBA程序操作直接調用Excel軟件中原始軌面測量數據,經程序拉坡設計計算后生成起道量技術交底文件,可指導大機搗固作業,實現人機交互且操作簡單,縮減了費用和時間,有很強的實用性。
既有鐵路;VBA;拉坡設計;起道量
既有鐵路有砟軌道線路投入生產后,相比線路投入生產時的設計標準位置,在水平面和垂直面發生變化,因此,既有鐵路有砟軌道要進行全面而系統的養護維修,保持軌道幾何形位的高平順性是非常必要的。
目前,我國鐵路線路大型搗固機械制造技術發展迅速。通過引進國外先進技術,然后消化吸收,再到現在研發出具有我國自主知識產權的大型搗固機械(比如D09-32系列),我國大型搗固機械已成為在役鐵路線路大修與綜合養護維修中重要的機械裝備,在線路維修過程中,大型搗固車可盡量減小對有砟道床的擾動,恢復和提高線路軌道的幾何形位和有砟道床的彈性,提高作業生產與養護維修的效率。
既有鐵路有砟軌道在平面線形優化結果的基礎上進行軌道的縱斷面優化設計。縱斷面的優化設計需在滿足相關規范、軌道點約束條件的前提下進行,通過對軌道線路軌面點的高程進行拉坡設計,使得拉坡設計后線路縱斷面線形成更加吻合鐵路軌道線路的實際縱斷面線形,但考慮到鐵路線路都為混凝土軌枕,自重大,人工起道、落道難,而大機在搗固作業起道容易、落道難的情況,因此,在拉坡設計過程中保證只起道不落道,遵循“寧抬勿降”的原則進行拉坡設計,如圖1所示,以指導和配合大型搗固機進行線路的起道作業,提高和改善鐵路線路的平順性和行車安全性的同時,提高作業生產效率。
當前鐵路工務部門既有鐵路有砟軌道拉坡設計常用的方法有緯地軟件和Excel軟件。采用緯地軟件實現人機交互的速度快和效率高,但前期需要Excel處理外業軌面測量數據,需要購買昂貴的軟件鎖,且安裝使用不方便,未被一些工務部門采用,仍舊采用簡單操作;Excel拉坡設計速度慢、效率低。
本設計基于AutoCAD的VBA程序編程,直接調用Excel軟件中原始軌面測量數據,經程序拉坡設計計算后生成起道量技術交底文件,實現人機交互且操作簡單,減少了費用,縮短了時間,有很強的實用性。

圖1 拉坡設計
基于AutoCAD的VBA應用程序是高級程序語言的強大計算功能與AutoCAD的強大繪圖功能的結合,通過VBA程序語言對AutoCAD繪圖操作摳門小控制,讓AutoCAD、Excle數據與其他的VBA應用程序實現直接共享與無縫鏈接,交換數據非常方便、迅速。AutoCAD2008版本及以前版本自動嵌套有VBA程序,AutoCAD2008版本以后需要用戶官網下載安裝VBA程序,本設計采用AutoCAD2014版本進行。
外業測量采用中平測量的方法,采集軌面高程間隔10 m,并用Excel軟件按照中平測量表格格式記錄數據。
調用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
手動拉坡設計,并根據拉坡結果計算起道量,具體如圖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
生成技術交底文件如圖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
本設計程序驗證過程采用烏魯木齊鐵路局哈密工務段紅柳河工區下行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
〔編輯:張思楠〕