武偉剛,賀英,劉青春
?
基于CAD二次開發(fā)的既有鐵路線路大修縱斷面拉坡設(shè)計(jì)
武偉剛,賀英,劉青春
(四川管理職業(yè)學(xué)院,四川 成都 611732)
既有鐵路有砟軌道線路投入生產(chǎn)后,軌道的幾何形位相比線路投入生產(chǎn)時(shí)設(shè)計(jì)標(biāo)準(zhǔn)發(fā)生很大變化?;贏utoCAD二次開發(fā),采用拉弦法進(jìn)行重構(gòu)既有鐵路線路縱斷面的拉坡設(shè)計(jì),根據(jù)VBA程序操作直接調(diào)用Excel軟件中原始軌面測(cè)量數(shù)據(jù),經(jīng)程序拉坡設(shè)計(jì)計(jì)算后生成起道量技術(shù)交底文件,可指導(dǎo)大機(jī)搗固作業(yè),實(shí)現(xiàn)人機(jī)交互且操作簡(jiǎn)單,縮減了費(fèi)用和時(shí)間,有很強(qiáng)的實(shí)用性。
既有鐵路;VBA;拉坡設(shè)計(jì);起道量
既有鐵路有砟軌道線路投入生產(chǎn)后,相比線路投入生產(chǎn)時(shí)的設(shè)計(jì)標(biāo)準(zhǔn)位置,在水平面和垂直面發(fā)生變化,因此,既有鐵路有砟軌道要進(jìn)行全面而系統(tǒng)的養(yǎng)護(hù)維修,保持軌道幾何形位的高平順性是非常必要的。
目前,我國(guó)鐵路線路大型搗固機(jī)械制造技術(shù)發(fā)展迅速。通過引進(jìn)國(guó)外先進(jìn)技術(shù),然后消化吸收,再到現(xiàn)在研發(fā)出具有我國(guó)自主知識(shí)產(chǎn)權(quán)的大型搗固機(jī)械(比如D09-32系列),我國(guó)大型搗固機(jī)械已成為在役鐵路線路大修與綜合養(yǎng)護(hù)維修中重要的機(jī)械裝備,在線路維修過程中,大型搗固車可盡量減小對(duì)有砟道床的擾動(dòng),恢復(fù)和提高線路軌道的幾何形位和有砟道床的彈性,提高作業(yè)生產(chǎn)與養(yǎng)護(hù)維修的效率。
既有鐵路有砟軌道在平面線形優(yōu)化結(jié)果的基礎(chǔ)上進(jìn)行軌道的縱斷面優(yōu)化設(shè)計(jì)??v斷面的優(yōu)化設(shè)計(jì)需在滿足相關(guān)規(guī)范、軌道點(diǎn)約束條件的前提下進(jìn)行,通過對(duì)軌道線路軌面點(diǎn)的高程進(jìn)行拉坡設(shè)計(jì),使得拉坡設(shè)計(jì)后線路縱斷面線形成更加吻合鐵路軌道線路的實(shí)際縱斷面線形,但考慮到鐵路線路都為混凝土軌枕,自重大,人工起道、落道難,而大機(jī)在搗固作業(yè)起道容易、落道難的情況,因此,在拉坡設(shè)計(jì)過程中保證只起道不落道,遵循“寧抬勿降”的原則進(jìn)行拉坡設(shè)計(jì),如圖1所示,以指導(dǎo)和配合大型搗固機(jī)進(jìn)行線路的起道作業(yè),提高和改善鐵路線路的平順性和行車安全性的同時(shí),提高作業(yè)生產(chǎn)效率。
當(dāng)前鐵路工務(wù)部門既有鐵路有砟軌道拉坡設(shè)計(jì)常用的方法有緯地軟件和Excel軟件。采用緯地軟件實(shí)現(xiàn)人機(jī)交互的速度快和效率高,但前期需要Excel處理外業(yè)軌面測(cè)量數(shù)據(jù),需要購(gòu)買昂貴的軟件鎖,且安裝使用不方便,未被一些工務(wù)部門采用,仍舊采用簡(jiǎn)單操作;Excel拉坡設(shè)計(jì)速度慢、效率低。
本設(shè)計(jì)基于AutoCAD的VBA程序編程,直接調(diào)用Excel軟件中原始軌面測(cè)量數(shù)據(jù),經(jīng)程序拉坡設(shè)計(jì)計(jì)算后生成起道量技術(shù)交底文件,實(shí)現(xiàn)人機(jī)交互且操作簡(jiǎn)單,減少了費(fèi)用,縮短了時(shí)間,有很強(qiáng)的實(shí)用性。
圖1 拉坡設(shè)計(jì)
基于AutoCAD的VBA應(yīng)用程序是高級(jí)程序語(yǔ)言的強(qiáng)大計(jì)算功能與AutoCAD的強(qiáng)大繪圖功能的結(jié)合,通過VBA程序語(yǔ)言對(duì)AutoCAD繪圖操作摳門小控制,讓AutoCAD、Excle數(shù)據(jù)與其他的VBA應(yīng)用程序?qū)崿F(xiàn)直接共享與無縫鏈接,交換數(shù)據(jù)非常方便、迅速。AutoCAD2008版本及以前版本自動(dòng)嵌套有VBA程序,AutoCAD2008版本以后需要用戶官網(wǎng)下載安裝VBA程序,本設(shè)計(jì)采用AutoCAD2014版本進(jìn)行。
外業(yè)測(cè)量采用中平測(cè)量的方法,采集軌面高程間隔10 m,并用Excel軟件按照中平測(cè)量表格格式記錄數(shù)據(jù)。
調(diào)用Excel數(shù)據(jù),經(jīng)程序計(jì)算軌面相對(duì)高差并繪制軌面線,如圖2所示。
主程序如下:
Dim excelApp As Excel.Application
Dim excelSheet As Excel.Worksheet
Dim ExcelWorkbook As Object ' 獲取當(dāng)前工程對(duì)應(yīng)的路徑
Dim strFile As String
strFile = ThisDrawing.Application.VBE.ActiveVBProject.FileName ' 運(yùn)行Excel程序軟件
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = True ' 打開指定的Excel文件,獲得指定的頁(yè)
excelApp.Workbooks.Open "C:UsersAdministratorDesktop拉坡示范數(shù)據(jù)"
Set excelSheet = excelApp.ActiveWorkbook.Sheets("Sheet1") ' 使用指定頁(yè)的數(shù)據(jù)繪圖
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
手動(dòng)拉坡設(shè)計(jì),并根據(jù)拉坡結(jié)果計(jì)算起道量,具體如圖3所示。
圖2 繪制軌面線
圖3 手動(dòng)拉坡并自動(dòng)計(jì)算的起道量
主要程序如下:
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 '由第一個(gè)點(diǎn)開始拉坡,并計(jì)算起道量
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 '接上一拉坡直線的端點(diǎn)開始拉坡,并計(jì)算起道量
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
生成技術(shù)交底文件如圖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
本設(shè)計(jì)程序驗(yàn)證過程采用烏魯木齊鐵路局哈密工務(wù)段紅柳河工區(qū)下行145+150—1 146+500起道量中的一部分作為驗(yàn)證,結(jié)果達(dá)到指導(dǎo)大機(jī)作業(yè)標(biāo)準(zhǔn)的要求,實(shí)現(xiàn)了人機(jī)交互,操作簡(jiǎn)單,降低了費(fèi)用,縮短了時(shí)間,有很強(qiáng)的實(shí)用性。由于是普速有砟鐵路,本設(shè)計(jì)暫時(shí)沒有考慮到豎曲線,下一步研究中將考慮豎曲線的設(shè)置,以提高起道量的準(zhǔn)確度。
圖4 技術(shù)交底文件
[1]曾洪飛,張帆,盧擇臨.AutoCAD VBA&vVB.NET開發(fā)基礎(chǔ)與實(shí)例教程[M].北京:中國(guó)電力出版社,2009.
[2]佟彪.VB語(yǔ)言與測(cè)量程序設(shè)計(jì)[M].第2版.北京:中國(guó)電力出版社,2015.
[3]王鵬.既有鐵路軌道線形及搗固方案優(yōu)化方法研究[D].成都:西南交通大學(xué),2017.
[4]武偉剛.既有鐵路縱斷面改建設(shè)計(jì)及輔助CAD系統(tǒng)研究[D].蘭州:蘭州交通大學(xué),2012.
2095-6835(2019)01-0040-03
U212.3
A
10.15913/j.cnki.kjycx.2019.01.040
〔編輯:張思楠〕