楊 震,黃小鋼
(中鐵第四勘察設(shè)計(jì)院 設(shè)備處,武漢 430063)
基于VBA的機(jī)車交路圖計(jì)算機(jī)輔助繪圖系統(tǒng)研究
楊 震,黃小鋼
(中鐵第四勘察設(shè)計(jì)院 設(shè)備處,武漢 430063)
機(jī)車交路圖是鐵路組織列車運(yùn)行的基礎(chǔ)性文件,采用AutoCAD的原始制圖命令進(jìn)行制圖操作,效率較低且容易出錯(cuò)。本文采用AutoCAD VBA二次開發(fā),開發(fā)了基于參數(shù)輸入的機(jī)車交路圖計(jì)算機(jī)輔助繪圖系統(tǒng),實(shí)現(xiàn)了機(jī)車交路圖的快速生成和修改。
機(jī)務(wù);機(jī)車交路;輔助繪圖系統(tǒng)
我國(guó)鐵路設(shè)計(jì)正朝著信息化、規(guī)范化、智能化、現(xiàn)代化的方向發(fā)展,機(jī)務(wù)是鐵路建設(shè)的一個(gè)重要組成部分,而機(jī)車交路圖是機(jī)務(wù)部門組織運(yùn)輸生產(chǎn)活動(dòng)的基礎(chǔ),是繪制機(jī)車周轉(zhuǎn)圖的重要依據(jù),規(guī)范、清晰的機(jī)車交路圖,對(duì)提高機(jī)車運(yùn)用效率具有重要意義。當(dāng)前設(shè)計(jì)人員多采用通用繪圖軟件AutoCAD進(jìn)行機(jī)車交路圖的繪制,該方法勞動(dòng)強(qiáng)度大、工作效率低,隨著鐵路運(yùn)輸?shù)念l繁變化,已無(wú)法滿足鐵路信息化的發(fā)展需求[1]。周智勇[2]采用C++ Builder語(yǔ)言開發(fā)了運(yùn)行于Windows 98操作系統(tǒng)下的機(jī)車交路圖輔助設(shè)計(jì)系統(tǒng),隨著計(jì)算機(jī)技術(shù)的更新?lián)Q代,該系統(tǒng)的適用性已稍顯不足;李鳴[3]基于MFC類庫(kù)采用C++語(yǔ)言開發(fā)了獨(dú)立于AutoCAD的機(jī)車交路圖設(shè)計(jì)軟件,但由于目前機(jī)車交路圖的設(shè)計(jì)、傳遞、打印、存檔等均以AutoCAD為介質(zhì),使得該軟件的普及較為困難。
本系統(tǒng)采用VBA語(yǔ)言對(duì)AutoCAD進(jìn)行二次開發(fā),基于模塊化設(shè)計(jì)思想,以面向?qū)ο蠓绞竭M(jìn)行編程,采用GDI圖形界面技術(shù)設(shè)計(jì)人機(jī)交互界面,調(diào)用Windows API接口進(jìn)行預(yù)覽圖顯示,調(diào)用AutoCAD ActiveX接口進(jìn)行圖形自動(dòng)繪制,實(shí)現(xiàn)了機(jī)車交路圖的計(jì)算機(jī)輔助繪制,使用戶只需輸入?yún)?shù),無(wú)需使用AutoCAD繪圖命令,即可完成機(jī)車交路圖的繪制。
1.1 繪圖內(nèi)容要求
繪制出各種類型的站段,如內(nèi)燃機(jī)務(wù)段、機(jī)務(wù)折返段等,繪制出各種類型的機(jī)車交路,如立折交路、肩回交路等。站段、交路屬性齊全,站段名稱、位置等可修改,交路顏色可變,可添加、修改、刪除途徑站段,交路要素表要素齊全,可修改。需保證交路元素的相關(guān)性,交路的形狀會(huì)根據(jù)途徑站段的變化而變化,圖例內(nèi)容與站段和交路元素始終保持一致。
1.2 繪圖方式要求
一張完整的機(jī)車交路圖包含有站段、機(jī)車交路、交路要素表、圖例、標(biāo)題、圖框等元素,元素種類較少,數(shù)量較多,重復(fù)工作量較大。同時(shí)站段、機(jī)車交路等元素間關(guān)聯(lián)緊密,一處小的修改可能會(huì)導(dǎo)致整個(gè)圖面的變化,使用AutoCAD繪圖及修改較為繁瑣。
通過(guò)軟件開發(fā),采用圖形界面和參數(shù)驅(qū)動(dòng)相結(jié)合的方式,提供機(jī)車交路圖繪制的全新手段,取代手工繪制的方式。開發(fā)友好的人機(jī)交互界面,提供站段信息、交路信息、邊框、標(biāo)題、圖例、方案數(shù)量等基本信息的規(guī)范輸入格式,并提供預(yù)覽功能,保證用戶交互簡(jiǎn)潔、方便、易懂,如圖1所示。
圖1 軟件用戶界面
根據(jù)需求分析,以模塊化的思想進(jìn)行軟件框架的設(shè)計(jì),將軟件分為4個(gè)模塊:用戶交互界面、后臺(tái)數(shù)據(jù)處理、CAD自動(dòng)出圖、文件存取,各模塊之間關(guān)系密切,同時(shí)又相對(duì)獨(dú)立,各模塊之間的聯(lián)系如圖2所示。各模塊又細(xì)分為多個(gè)子模塊,圖3為軟件功能模塊劃分圖。
圖2 軟件框架圖
用戶交互界面:采用GDI圖形界面技術(shù)開發(fā)人機(jī)交互界面,交互界面分區(qū)設(shè)置,包含了站段、交路、邊框、標(biāo)題、圖例、方案等信息,為用戶提供這些參數(shù)的輸入、修改、保存和讀取操作,同時(shí)軟件還會(huì)對(duì)參數(shù)進(jìn)行分析,對(duì)錯(cuò)誤的輸入?yún)?shù)進(jìn)行提示。為了方便用戶交互,便于設(shè)計(jì)過(guò)程參數(shù)調(diào)整,用戶界面根據(jù)輸入?yún)?shù)提供預(yù)覽功能,使參數(shù)更加直觀。最終的機(jī)車交路CAD圖形由這些輸入?yún)?shù)所確定,整個(gè)過(guò)程用戶無(wú)需手動(dòng)繪圖。
后臺(tái)數(shù)據(jù)處理:本系統(tǒng)的核心模塊,根據(jù)用戶輸入?yún)?shù),在后臺(tái)自動(dòng)進(jìn)行繪圖數(shù)據(jù)的計(jì)算,包括輸入?yún)?shù)分析、站段圖形計(jì)算、交路形狀計(jì)算、站段布局計(jì)算等,該模塊定義了機(jī)車交路圖的數(shù)據(jù)組織結(jié)構(gòu),包含了大量的幾何代數(shù)算法,計(jì)算得到的數(shù)據(jù)用于預(yù)覽圖和CAD圖的繪制。
CAD自動(dòng)出圖:根據(jù)用戶輸入?yún)?shù)和后臺(tái)處理數(shù)據(jù),軟件調(diào)用CAD圖形繪制模塊,進(jìn)行機(jī)車交路圖的繪制,該模塊又包含段所繪制模塊、交路繪制模塊以及其它元素繪制模塊等。CAD圖形繪制模塊調(diào)用AutoCAD ActiveX繪圖指令,使用匿名塊命令繪制站段,使用直線、圓弧、圓角命令繪制交路,使用文字命令繪制標(biāo)題、交路要素表等。使用CAD圖形繪制模塊自動(dòng)生成機(jī)車交路圖,省去手工繪制操作,提高了繪圖效率。
文件存?。悍譃槲谋疚募敵龊臀谋疚募x取,將用戶輸入?yún)?shù)進(jìn)行保存,生成文本文件,并且能夠讀取文件,方便機(jī)車交路圖的修改和重生成。
3.1 數(shù)據(jù)結(jié)構(gòu)
根據(jù)行業(yè)標(biāo)準(zhǔn)《鐵路機(jī)務(wù)設(shè)備設(shè)計(jì)規(guī)范》規(guī)定,站段按其屬性可分為若干類型,且《鐵路工程制圖圖形符號(hào)標(biāo)準(zhǔn)》給出了其標(biāo)準(zhǔn)圖例。
圖3 軟件功能模塊劃分圖
采用集合結(jié)構(gòu)組織站段參數(shù)數(shù)據(jù),建立站段參數(shù)矩陣A=(a1, a2, a3, a4),其中
a1=站段編號(hào);
a2=站段名稱;
a3=站段類型;
a4=站段坐標(biāo)點(diǎn)組合。
機(jī)車交路包含多種屬性,根據(jù)機(jī)車運(yùn)轉(zhuǎn)方式,分為肩回交路、循環(huán)交路、半循環(huán)交路;根據(jù)乘務(wù)員駐班性質(zhì),分為駐班交路、立折交路;根據(jù)機(jī)車類型,分為內(nèi)燃機(jī)車交路、電力機(jī)車交路等。
采用集合結(jié)構(gòu)組織交路參數(shù)數(shù)據(jù),建立交路參數(shù)矩陣B=(b1, b2, b3, b4, b5),其中
b1=交路編號(hào);
b2=交路類型;
b3=交路途徑站點(diǎn);
b4=交路顏色;
b5=交路要素表。
其中,交路要素表為數(shù)據(jù)集合,包括機(jī)車類型、牽引噸數(shù)、交路里程、限制坡度、坐標(biāo)等參數(shù),在此不再贅述。
交路空間主要由站段、交路構(gòu)成,此外還包括圖例、圖框、標(biāo)題等元素,交路空間數(shù)據(jù)模型如下:
V=(A, B, C,…, R)
其中,R為交路空間集合中所有元素之間關(guān)系的有限集合,數(shù)據(jù)元素之間存在著一對(duì)一、一對(duì)多和多對(duì)多的關(guān)系,構(gòu)成了交路空間的網(wǎng)狀結(jié)構(gòu),如圖4所示。
圖4 數(shù)據(jù)結(jié)構(gòu)
3.2 數(shù)據(jù)算法
(1)站段繪制算法
由上節(jié)可知,機(jī)務(wù)設(shè)備輸入類型較多,不同類型圖例各不相同,針對(duì)各類機(jī)務(wù)設(shè)備設(shè)計(jì)單獨(dú)的繪制算法,調(diào)用不同的圖形塊,各算法之間呈并列關(guān)系,根據(jù)類型參數(shù)一一映射到繪制算法,完成機(jī)務(wù)設(shè)備的計(jì)算和繪制。算法具有線性的時(shí)間復(fù)雜度,針對(duì)相同的機(jī)務(wù)設(shè)備類型,算法只計(jì)算一次,節(jié)省了內(nèi)存空間,具有較好的空間復(fù)雜度。站段算法流程圖如圖5所示。
圖5 站段算法流程圖
(2)交路繪制算法
交路形狀的計(jì)算涉及到二維空間幾何變換,如圖6所示,交路的肩寬與長(zhǎng)度成正比I,當(dāng)機(jī)務(wù)設(shè)備A、B、C三點(diǎn)共線時(shí),交路上任意一點(diǎn)D的坐標(biāo)[x, y]T可由下式計(jì)算:
其中,λ為0~1的小數(shù),若坐標(biāo)系橫軸不與交路中心線平行,可通過(guò)旋轉(zhuǎn)矩陣R1將坐標(biāo)系旋轉(zhuǎn)至橫軸與交路中心線平行,然后將由式(1)得到的交路坐標(biāo)左乘旋轉(zhuǎn)矩陣R1的逆矩陣即可,旋轉(zhuǎn)矩陣R1由下式計(jì)算:
其中,α為交路中心線到坐標(biāo)系橫軸的夾角。
當(dāng)A、B、C三點(diǎn)不共線時(shí),可看作BC段繞B點(diǎn)進(jìn)行了旋轉(zhuǎn),如圖6所示。圖中列出了3種BC段旋轉(zhuǎn)不同角度的情況,AB段交路坐標(biāo)仍由式(2)計(jì)算,BC’段交路坐標(biāo)[x’,y’]T可由旋轉(zhuǎn)變換獲得:
其中,設(shè)BC’與BC之間的夾角為θ,則旋轉(zhuǎn)矩陣R2為:
圖6 機(jī)車交路示意圖
最后,還需對(duì)折角處進(jìn)行圓角處理,圓角半徑為B點(diǎn)到交路線段的垂直距離。
當(dāng)交路途徑站點(diǎn)多于3個(gè),后續(xù)交路區(qū)段計(jì)算原理與前面相同。
(3)空間布局算法
用戶輸入?yún)?shù)可以構(gòu)成一幅完整的機(jī)車交路圖,但出圖通常采用標(biāo)準(zhǔn)圖框,且為了保證圖面整潔、布局良好,通常將圖框區(qū)域按適當(dāng)比例劃分為若干個(gè)功能區(qū),如圖7所示,要將實(shí)際交路空間恰當(dāng)?shù)仫@示在圖紙空間的繪圖區(qū)上,則要經(jīng)過(guò)多重映射。
采用包圍盒算法算出實(shí)際交路空間的長(zhǎng)度L和寬度H,繪圖區(qū)的長(zhǎng)度L’和寬度H’已分配,取L/L’和H/H’的較小值為縮放比例因子,實(shí)際交路空間中心與繪圖區(qū)中心對(duì)應(yīng),以此進(jìn)行空間映射。映射后實(shí)際交路空間坐標(biāo)轉(zhuǎn)變?yōu)锳utoCAD圖紙空間坐標(biāo),方便打印。
圖7 坐標(biāo)空間映射
機(jī)車交路圖輔助繪圖系統(tǒng)與AutoCAD緊密結(jié)合且采用簡(jiǎn)單易用的VBA語(yǔ)言開發(fā),根據(jù)參數(shù)輸入自動(dòng)生成機(jī)車交路圖,用戶界面簡(jiǎn)潔易懂,操作方便,提高了機(jī)車交路圖的繪圖效率,滿足機(jī)務(wù)部門的繪圖需要,軟件預(yù)置有數(shù)據(jù)庫(kù)功能,經(jīng)推廣應(yīng)用和深化開發(fā)可建立全國(guó)機(jī)車交路數(shù)據(jù)系統(tǒng),進(jìn)一步提高繪圖效率。
[1] 葉利華. 機(jī)車交路系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 成都:西南交通大學(xué),2005.
[2] 周智勇. 機(jī)車交路圖輔助設(shè)計(jì)系統(tǒng)的研究[J]. 鐵路計(jì)算機(jī)應(yīng)用,2003(Z1):123-126.
[3] 李 鳴,倪智振. 基于MFC的機(jī)車交路圖輔助設(shè)計(jì)系統(tǒng)研究[J]. 鐵道標(biāo)準(zhǔn)設(shè)計(jì),2013(8):133-136.
責(zé)任編輯 陳 蓉
Computer-aided Drawing System of locomotive routing map based on VBA
YANG Zhen, HUANG Xiaogang
( Department of Equipment Design and Research, China Railway SIYUAN Survey and Design Group CO.,LTD, Wuhan 430063, China )
Locomotive routing map was the base of railway organization. The common drawing operation now was based on AutoCAD. The eff i ciency and accuracy of this method were low. In order to improve the efficiency of locomotive routing mapping, a Computer-aided Drawing System with parameters input was developed by means of AutoCAD VBA.
locomotive servicing and maintenance; locomotive routing; Computer-aided Drawing System
U268∶TP39
A
1005-8451(2014)10-0004-04
2014-04-28
楊 震,助理工程師;黃小鋼,教授級(jí)高級(jí)工程師 。