程耀東,潘永健,朱奕蓓,楊 軍
(1.蘭州交通大學(xué)甘肅省道路橋梁與地下工程重點(diǎn)實(shí)驗(yàn)室,蘭州 730070;2.蘭州鐵路局武威工務(wù)段,甘肅武威 733099;3.蘭州交通大學(xué)電子與信息工程學(xué)院,蘭州 730070)
高速鐵路綜合圖自動(dòng)生成關(guān)鍵技術(shù)研究
程耀東1,潘永健2,朱奕蓓1,楊 軍3
(1.蘭州交通大學(xué)甘肅省道路橋梁與地下工程重點(diǎn)實(shí)驗(yàn)室,蘭州 730070;2.蘭州鐵路局武威工務(wù)段,甘肅武威 733099;3.蘭州交通大學(xué)電子與信息工程學(xué)院,蘭州 730070)
在AutoCAD開發(fā)環(huán)境下,以Visual LISP為開發(fā)工具,研究數(shù)據(jù)處理、圖形繪制、圖形裁剪及打印等技術(shù),開發(fā)快速高效的自動(dòng)化繪圖軟件,實(shí)現(xiàn)數(shù)據(jù)自動(dòng)導(dǎo)入、自動(dòng)繪圖、圖形自動(dòng)分幅和批量打印等功能,提高繪圖效率,為鐵路工務(wù)管理部門提供自動(dòng)化繪圖平臺(tái)。
高速鐵路; 線路制圖; 綜合圖; Visual LISP; AutoCAD
鐵路綜合圖是依據(jù)施工單位的竣工資料而編制的,它以鐵路運(yùn)營(yíng)里程為基準(zhǔn),集中繪制并標(biāo)注鐵路線路平面示意圖、坡度、正線允許速度、線橋設(shè)備及里程等信息,方便鐵路工務(wù)人員查詢并指導(dǎo)鐵路線路養(yǎng)護(hù)維修。
文獻(xiàn)[1]結(jié)合京津城際鐵路建設(shè)實(shí)際,提出系統(tǒng)集成接口管理的基本方法、接口管理程序和系統(tǒng)集成接口總圖等管理工具,形成一整套管理程序和技術(shù)規(guī)范。文獻(xiàn)[2]對(duì)路基曲線地段無(wú)砟軌道采用不同超高設(shè)置方式后的力學(xué)特性進(jìn)行了對(duì)比研究,為無(wú)砟軌道超高設(shè)置方式的合理應(yīng)用提供依據(jù)。文獻(xiàn)[3]對(duì)鐵路工程技術(shù)標(biāo)準(zhǔn)的體系及管理進(jìn)行了研究,提出建設(shè)性的意見。文獻(xiàn)[4]針對(duì)現(xiàn)有的鐵路站場(chǎng)平面輔助設(shè)計(jì)系統(tǒng)存在的問題,使用高級(jí)語(yǔ)言和開發(fā)工具,對(duì)鐵路站場(chǎng)平面輔助設(shè)計(jì)系統(tǒng)的開發(fā)技術(shù)進(jìn)行了研究。文獻(xiàn)[5-10]對(duì)鐵路選線平臺(tái)、線路縱斷面生成方法及軌道交通標(biāo)準(zhǔn)化設(shè)計(jì)數(shù)據(jù)庫(kù)開發(fā)技術(shù)等方面進(jìn)行了研究。
隨著高速鐵路的快速發(fā)展,原有的“鐵路工務(wù)管理信息系統(tǒng)(PWMIS)”已不能滿足高速鐵路綜合圖的繪制要求。為此,在AutoCAD環(huán)境下,運(yùn)用Visual LISP為開發(fā)工具,開發(fā)高效、準(zhǔn)確地繪制高速鐵路綜合圖的軟件,為鐵路工務(wù)人員在高速鐵路線路養(yǎng)護(hù)維修中,提供完整、準(zhǔn)確并實(shí)時(shí)更新的技術(shù)資料勢(shì)在必行。
鐵路工務(wù)部門要求高速鐵路綜合圖自動(dòng)繪制軟件,以提供的Excel信息數(shù)據(jù)為依據(jù),在AutoCAD環(huán)境下,由程序自動(dòng)讀取線路的曲線資料、隧道表、大中橋、涵洞、車站、正線允許速度及里程等數(shù)據(jù),實(shí)現(xiàn)自動(dòng)繪圖、裁圖及批量打印等功能,軟件功能結(jié)構(gòu)如圖1所示。
圖1 軟件功能結(jié)構(gòu)
由于Visual LISP是繼AutoLISP、ADS、ObjectARX、VBA等AutoCAD開發(fā)工具之后,Autodesk公司提供給用戶的又一強(qiáng)大的開發(fā)工具,且在該集成環(huán)境下可以高效、便捷地開發(fā)用戶程序,可以經(jīng)過編譯得到代碼緊湊、運(yùn)行效率高、源代碼受到保護(hù)的應(yīng)用程序,為此,選擇Visual LISP語(yǔ)言對(duì)AutoCAD進(jìn)行二次開發(fā)。
高速鐵路綜合圖自動(dòng)繪制所需要的數(shù)據(jù)較多,包括線路曲線、橋隧涵、行車速度及里程等數(shù)據(jù),繪圖時(shí),需選擇Excel表中相關(guān)繪圖數(shù)據(jù)工作表,所以,程序自動(dòng)導(dǎo)入并讀取和處理Excel數(shù)據(jù)是關(guān)鍵。導(dǎo)入的Excel數(shù)據(jù)文件、數(shù)據(jù)工作表名稱和單元格范圍的設(shè)定,均通過一個(gè)對(duì)話框來(lái)完成。
2.1 數(shù)據(jù)選擇對(duì)話框設(shè)計(jì)
高鐵綜合圖信息數(shù)據(jù)存儲(chǔ)在Excel文件中,使用對(duì)話框界面能夠簡(jiǎn)單、直觀地進(jìn)行文件的選擇和工作表中數(shù)據(jù)范圍的設(shè)置。對(duì)話框是采用DCL語(yǔ)言定義, 用Visual LISP實(shí)現(xiàn)加載、初始化、激活和卸載等操作,數(shù)據(jù)導(dǎo)入對(duì)話框的源文件是隨著對(duì)話框的調(diào)用而動(dòng)態(tài)加載和卸載的。在繪圖前,先指定Excel數(shù)據(jù)文件的位置,設(shè)定繪圖所需的工作表名和數(shù)據(jù)范圍,如圖2所示。
圖2 鐵路綜合圖繪圖數(shù)據(jù)選擇對(duì)話框
2.2 Excel數(shù)據(jù)導(dǎo)入方法
Excel數(shù)據(jù)文件的導(dǎo)入、數(shù)據(jù)工作表名稱和單元格范圍的設(shè)定,是通過在Auto LISP中使用ActiveX對(duì)象與Microsoft Excel對(duì)象的轉(zhuǎn)換來(lái)實(shí)現(xiàn)的。值得注意的是,在Visual LISP中使用ActiveX函數(shù)之前,必須先調(diào)用vl-load-com函數(shù)來(lái)初始化ActiveX環(huán)境[11]。數(shù)據(jù)導(dǎo)入自定義函數(shù)包括三個(gè)參數(shù):excelFile(Excel文件名)、sheetName(工作表名稱)和rangeStr(單元格范圍)。在繪圖程序可多次調(diào)用該函數(shù),獲取Excel文件中指定的工作表及其單元格范圍的繪圖和標(biāo)注數(shù)據(jù)。數(shù)據(jù)導(dǎo)入函數(shù)定義為:
(defun GetCellValueAsList(excelFile sheetName rangeStr / xl wbs wb shs sh rg vvv ttt)。
2.3 數(shù)據(jù)處理
在定義數(shù)據(jù)導(dǎo)入函數(shù)后,可調(diào)用該函數(shù)讀取Excel數(shù)據(jù),方法如下:
(setq retV (GetCellValueAsList excelFile sheetName rangeStr))
此表返回一個(gè)工作表中的所有數(shù)據(jù),并以表的形式存儲(chǔ)在變量retV中。此表中的每一個(gè)元素為一行數(shù)據(jù),同樣也是一個(gè)表。在每一行數(shù)據(jù)的表中,每一個(gè)元素對(duì)應(yīng)一個(gè)數(shù)據(jù),其數(shù)據(jù)類型是變體(variant)類型。變體類型的數(shù)據(jù)并不能被繪圖程序直接使用,繪圖時(shí),x,y坐標(biāo)為浮點(diǎn)型,而文字標(biāo)注的內(nèi)容為字符串,需要先根據(jù)要求轉(zhuǎn)換為程序所需要的類型。
高速鐵路綜合圖信息量大、圖形范圍長(zhǎng),若在AutoCAD環(huán)境下,采用手工交互式繪圖和圖形更新,則工作量巨大,且易出錯(cuò)。由于高速鐵路綜合圖為長(zhǎng)條形,沿里程方向標(biāo)注行車速度、線橋設(shè)備、線路名稱、平面示意圖、軌頂高程、坡度及里程等,因此,根據(jù)鐵路綜合圖的特點(diǎn),可編程實(shí)現(xiàn)自動(dòng)繪圖和圖形更新。
3.1 建立圖層與設(shè)置文字樣式
在繪制高速鐵路綜合圖時(shí),根據(jù)各類圖形元素的不同,設(shè)置圖層、顏色、線型、線寬及文字樣式等,便于圖形管理,滿足制圖國(guó)標(biāo)及相關(guān)規(guī)范的要求。
(1)建立圖層
建立圖層,設(shè)置顏色、線型及線寬的方法[12]如下:
(command "layer" "Make" "biankuang" "Color" 2 "biankuang" "Ltype" "continuous" "biankuang" "LWeight" 0.5 "biankuang" "")
(2)建立文字樣式選擇與設(shè)置
AutoCAD軟件版本不同,書寫漢字的字庫(kù)有所不同。如果程序在不同版本上運(yùn)行,找不到所調(diào)用的字庫(kù),生成的文字就會(huì)出現(xiàn)亂碼,即不可識(shí)別的字符,為此,需判斷AutoCAD版本,設(shè)置文字對(duì)應(yīng)的字庫(kù),方法如下:
(defun c∶wenzi() ;定義設(shè)置文字樣式子程序函數(shù),函數(shù)調(diào)用名為“wenzi”
(if (/= (ver) "Visual LISP 2012 (sc)");自動(dòng)識(shí)別AutoCAD版本,以兼容AutoCAD2012
(progn
(command "style" "shu" "gbenor,gbcbig" "0.0" "1.0" "" "" "" "");新建數(shù)字標(biāo)注樣式
(command "style" "han" "仿宋" "0.0" "0.7" "" "" "" "") ;新建漢字標(biāo)注樣式)
(progn ;AutoCAD2012版文字樣式設(shè)置
(command "style" "shu" "gbenor,gbcbig" "0.0" "1.0" "" "" "" "") ;新建數(shù)字標(biāo)注樣式
(command "style" "han" "仿宋_GB2312" "0.0" "0.7" "" "" "" "") ;新建漢字標(biāo)注樣式)))
3.2 繪制綜合圖
高速鐵路綜合圖的自動(dòng)繪制,主要方法和步驟如下所述。
(1)由圖2對(duì)話框選擇Excel文件,設(shè)置各工作表的數(shù)據(jù)范圍。
(2)以Excel文件中的每一個(gè)工作表為單位設(shè)計(jì)對(duì)應(yīng)的數(shù)據(jù)導(dǎo)入和繪圖子程序。在主程序中調(diào)用這些自定義函數(shù),實(shí)現(xiàn)高速鐵路綜合圖的自動(dòng)繪制。
(3)因?yàn)橐粋€(gè)工作表中存放著一類數(shù)據(jù),所以在讀取數(shù)據(jù)和繪圖時(shí),采用循環(huán)結(jié)構(gòu)實(shí)現(xiàn)每一類數(shù)據(jù)的繪圖。工作表中的每一行數(shù)據(jù)為一個(gè)循環(huán)周期[13]。
(4)編程時(shí),在循環(huán)中讀取、轉(zhuǎn)換數(shù)據(jù),圖形的繪制以運(yùn)營(yíng)里程為基準(zhǔn),自動(dòng)合理布置各類圖形元素的相互位置。注意,繪圖過程中使用的坐標(biāo)均為絕對(duì)坐標(biāo),以運(yùn)營(yíng)里程作為圖形中各點(diǎn)的橫坐標(biāo),圖形繪制完成后可對(duì)個(gè)別圖線與文字重疊的地方進(jìn)行人工修改。
3.3 考慮兩種運(yùn)營(yíng)模式的綜合圖繪制
由于高速鐵路開通運(yùn)營(yíng)后會(huì)分為客運(yùn)專線和客貨共線兩種運(yùn)營(yíng)模式,這兩種運(yùn)營(yíng)模式的高速鐵路在繪制綜合圖時(shí)稍有不同,主要體現(xiàn)在圖形的布局上。所以,考慮到軟件的通用性,綜合圖的繪制部分可以滿足兩種模式的鐵路的綜合圖的繪制。兩種模式下大部分的子繪圖函數(shù)可以參數(shù)化共用,而只將區(qū)別較大的繪圖子函數(shù)分別設(shè)計(jì)并分別調(diào)用。
3.4 下拉菜單定義及自動(dòng)加載
為方便軟件各個(gè)功能模塊的調(diào)用,需建立用戶菜單,由菜單定義語(yǔ)法建立菜單文件(.mnu),通過局部菜單加載命令“menuload”實(shí)現(xiàn)自定義菜單文件的加載,再?gòu)牟藛沃姓{(diào)用軟件各種功能[14]。
采用“.mnl”類型的菜單文件的自動(dòng)加載機(jī)制,將AutoLISP程序文件更名為與自定義下拉菜單同名的“.mnl”文件,每當(dāng)自定義菜單文件加載時(shí),同名的“.mnl”文件就會(huì)被自動(dòng)加載。加載后的自定義菜單如圖3所示。
圖3 加載后的自定義下拉菜單
4.1 綜合圖分幅技術(shù)
鐵路綜合圖一般為數(shù)百公里甚至上千公里的長(zhǎng)條圖形,為攜帶和查閱,通常將圖紙打印在標(biāo)準(zhǔn)A4圖紙上,成冊(cè)裝訂。綜合圖的分幅方法和步驟如下。
(1)為方便裁圖時(shí)圖形的選擇,先關(guān)閉總圖的圖框和表頭,等圖形分幅完成后再打開,可保留原圖框并且不干擾圖形分幅。注意,在圖形分幅之前,應(yīng)對(duì)圖形中個(gè)別標(biāo)注不合適的地方進(jìn)行人工修改(如涵洞標(biāo)注重疊,文字與圖線重疊等)。
(2)設(shè)定分段長(zhǎng)度,將比設(shè)定的長(zhǎng)度范圍稍大的局部圖形復(fù)制到與原圖對(duì)應(yīng)的上方位置,以便保留原來(lái)的長(zhǎng)條形總圖。
(3)對(duì)復(fù)制后的圖形兩側(cè)進(jìn)行修剪,并刪除兩側(cè)多余的圖形。注意,在進(jìn)行圖形選擇和裁剪時(shí),將該部分圖形用窗口放大,否則,因?yàn)閳D形分辨率的問題,圖形可能多選或少選。頁(yè)碼信息則通過圖形分幅時(shí)的計(jì)數(shù)器來(lái)決定。
(4)為分幅圖添加表頭、邊框、鐵路信息、工務(wù)部門信息和頁(yè)碼。
(5)將上一步處理后的圖形(包括邊框、表頭等)移動(dòng)到與原圖豎直對(duì)齊位置的固定高度上。將單數(shù)頁(yè)放在原圖上方,雙數(shù)頁(yè)置于原圖下方,方便與原圖對(duì)照檢查。
另外,還要考慮圖紙能夠按工務(wù)段的管轄范圍分冊(cè)出圖。在分幅前,先人工將不需要的圖形刪除(應(yīng)提前備份總圖),只留下需要出圖的工務(wù)段的管轄范圍的圖形,程序會(huì)自動(dòng)判斷圖形分割的起始和終止位置,自動(dòng)從頭開始編排頁(yè)碼。圖形分幅程序運(yùn)行時(shí)會(huì)提示用戶直接輸入或通過輸入備選項(xiàng)的方式指定工務(wù)段名稱,也可輸入其他信息,這些信息將被標(biāo)在每頁(yè)圖紙頁(yè)眉位置。
4.2 批量打印技術(shù)
圖形分幅后的圖紙有幾十頁(yè)到上百頁(yè),都需要按順序打印出圖,然后裝訂成冊(cè)。然而,AutoCAD并沒有提供用于批量打印的功能,為此,在圖形分幅后,需開發(fā)批量打印模塊,實(shí)現(xiàn)圖紙自動(dòng)批量打印。
由于總體綜合圖和分幅圖邊框的Y坐標(biāo)都是固定的,所以,在打印時(shí)只需指定最左側(cè)分幅圖的左邊框位置,程序自動(dòng)提取該點(diǎn)的X坐標(biāo),作為起始打印。打印的終止位置則完全由程序自動(dòng)判斷,判斷依據(jù)是打印圖框范圍內(nèi)選擇集為空。
圖紙打印分為批量發(fā)送到打印機(jī)或批量打印到PDF文件兩種方式。批量打印到PDF文件時(shí),采用AutoCAD提供的虛擬打印機(jī)“DWG To PDF.pc3”。
打印機(jī)出圖時(shí)分為黑白和彩色兩種方式打印,黑白打印采用“monochrome.ctb”的打印樣式,彩色打印使用“Autodesk-Color.stb”的打印樣式。
4.3 綜合圖繪制應(yīng)用實(shí)例
在AutoCAD環(huán)境下,運(yùn)用Visual LISP為語(yǔ)言開發(fā)的高鐵綜合圖的軟件,可運(yùn)行在AutoCAD 2008以上版本的各版本中。在AutoCAD 2012環(huán)境下,通過700 km長(zhǎng)的某高速鐵路的Excel數(shù)據(jù)運(yùn)行驗(yàn)證,結(jié)果表明:軟件能夠快速、準(zhǔn)確地繪制高速鐵路綜合圖,并按要求進(jìn)行綜合圖的分幅和批量打印輸出等工作,從數(shù)據(jù)處理、綜合圖繪制到圖形分幅,最后批量打印輸出,處理時(shí)間約5 min,大大地提高了繪圖速度和效率,如圖4為分幅后一幅綜合圖。
高鐵綜合圖信息量大、數(shù)據(jù)種類較多,若在AutoCAD平臺(tái)上采用交互繪圖,工作量巨大,且信息數(shù)據(jù)變更后也不便于修改,為此,對(duì)Excel數(shù)據(jù)導(dǎo)入和數(shù)據(jù)轉(zhuǎn)換、圖形生成及分幅、出圖打印等技術(shù)進(jìn)行了研究,運(yùn)用Visual LISP語(yǔ)言對(duì)AutoCAD進(jìn)行二次開發(fā),研制了鐵路綜合圖自動(dòng)生成及相關(guān)圖形處理軟件,為工務(wù)部門提供自動(dòng)化繪圖平臺(tái),極大地提高了繪圖效率和信息化水平。本文基于Visual LISP的開發(fā)技術(shù)可供相關(guān)CAD開發(fā)人員參考。
[1] 侯衛(wèi)星,王祖峰,姚建偉,等.高速鐵路系統(tǒng)集成接口管理方法研究及工程實(shí)踐[J].中國(guó)鐵路,2009(7):7-13.
[2] 喬神路.無(wú)砟軌道路基地段曲線超高設(shè)置方式的研究[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2015(2):36-39.
[3] 孫樹禮.鐵路工程技術(shù)標(biāo)準(zhǔn)的體系及管理[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2004,(7):54-58.
[4] 王煥棟,李海鷹,苗建瑞,等.鐵路站場(chǎng)平面輔助設(shè)計(jì)系統(tǒng)的設(shè)計(jì)與開發(fā)[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2014,58(12):51-55.
[5] 柳世輝.“鐵路各設(shè)計(jì)階段數(shù)字選線平臺(tái)”的應(yīng)用[J].鐵道工程學(xué)報(bào),2013(4):14-17.
[6] 程耀東,姚德新,徐軍.既有軌道縱斷面CAD軟件開發(fā)研究[J].蘭州交通大學(xué)學(xué)報(bào),2005(1):14-17.
[7] 郭良浩,劉成龍,宋韜等.鐵路既有線平面和豎面線形精確分段方法研究[J].鐵道工程學(xué)報(bào),2014(7):48-52.
[8] 朱德榮.箱梁三維實(shí)體自動(dòng)建模方法研究[J].鐵道標(biāo)準(zhǔn)設(shè)計(jì),2014, 58(3):54-58.
[9] 劉小龍,程耀東.基于Object ARX的鐵路縱斷面自動(dòng)出圖系統(tǒng)的研究[J].鐵路計(jì)算機(jī)應(yīng)用,2009(1):9-11.
[10]楊毅秋,曾國(guó)保,李說(shuō).軌道交通標(biāo)準(zhǔn)化設(shè)計(jì)數(shù)據(jù)庫(kù)開發(fā)及研究[J].鐵道工程學(xué)報(bào),2013(6):88-91.
[11]李學(xué)志,方戈亮,孫力紅.Visual LISP程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010:114-143.
[12]程耀東,張麗萍,韓進(jìn),等.計(jì)算機(jī)繪圖與二次開發(fā)方法[M].蘭州:甘肅科學(xué)技術(shù)出版社,2009:453-500.
[13]吳永進(jìn),林美櫻.AutoCAD完全應(yīng)用指南-AutoLISP+DCL+Visual LISP程序設(shè)計(jì)篇[M].北京:清華大學(xué)出版社,2011:517-542.
[14]周樂來(lái),馬婧.AutoCAD 2008 Visual LISP二次開發(fā)入門到精通[M].北京:機(jī)械工業(yè)出版社,2008:195-238.
The Key Technology of High Speed Railway Automatic Comprehensive Mapping
CHENG Yao-dong1, PAN Yong-jian2, ZHU Yi-bei1, YANG Jun3
(1.Key Laboratory of Road Bridge and Underground Engineering in Gansu Province, Lanzhou Jiaotong University,Lanzhou 730070, China; 2.Wuwei track Maintenance Division, Lanzhou Railway Administration, Wuwei 733099, China;3.School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China)
With Visual Lisp as development tool in AutoCAD environment, this paper studies data processing, graphics rendering, graph cutting and printing, and develops a fast and highly effective automatic drawing software to fulfill data importing, graphics rendering, graphic framing and batch printing in order that the efficiency of drawing is improved and a graphic platform is provided for railway track maintenance department.
High-speed railway; Railway line drawing; Comprehensive map; Visual LISP; Auto CAD
2015-01-28
國(guó)家自然科學(xué)基金(61462059);甘肅省教學(xué)團(tuán)隊(duì)基金(101004)
程耀東(1963—),男,教授,主要研究方向?yàn)楣こ藽AD及可視化,E-mail:zydzcx@163.com。
1004-2954(2015)10-0042-04
U238; U212.4
A
10.13238/j.issn.1004-2954.2015.10.010