朱 聰,李柏林,何朝明,王 強(qiáng)
(西南交通大學(xué)機(jī)械工程學(xué)院,成都610031)
ObjectARX是針對(duì)AutoCAD平臺(tái)上的二次開發(fā)而推出的一個(gè)開發(fā)軟件包。它提供了以C語言為基礎(chǔ)的面向?qū)ο蟮拈_發(fā)環(huán)境及應(yīng)用程序接口,能快速地訪問AutoCAD圖形數(shù)據(jù)庫。
接觸網(wǎng)設(shè)計(jì)的主要內(nèi)容是接觸網(wǎng)平面布置圖設(shè)計(jì)。高速鐵路車站接觸網(wǎng)平面設(shè)計(jì)的各個(gè)步驟,包括支柱布置、錨段劃分、中心錨結(jié)確定、附加導(dǎo)線布置、生成接觸網(wǎng)布置信息表和統(tǒng)計(jì)圖等。
目前國(guó)內(nèi)使用的接觸網(wǎng)平面布置圖AutoCAD系統(tǒng)主要有兩種形式,各有弊端。一類系統(tǒng)將鐵路接觸網(wǎng)中使用的部件劃分成一組組圖形塊,利用AutoCAD的基本繪圖功能分別進(jìn)行繪制,然后進(jìn)行計(jì)算組合,最后完成設(shè)計(jì)[1]。使用此系統(tǒng),設(shè)計(jì)接觸網(wǎng)布置圖比較容易,設(shè)計(jì)人員能借助它較快地繪制出一張平面CAD布置圖。但生成的CAD圖中,各實(shí)體之間都是獨(dú)立的,相互間沒有數(shù)據(jù)聯(lián)系,而某些設(shè)計(jì)計(jì)算需要使用元件之間的相互聯(lián)系(支柱布置、錨段劃分等),全部要求通過手工計(jì)算,非常不便。另一類系統(tǒng)能夠?qū)崿F(xiàn)利用接觸網(wǎng)元件之間的聯(lián)系進(jìn)行設(shè)計(jì),繪制過程煩瑣,這類方法在錯(cuò)誤檢查與修改方面存在缺陷,如果出錯(cuò),需要設(shè)計(jì)人員重新填寫數(shù)量巨大的屬性數(shù)據(jù)。本文的接觸網(wǎng)數(shù)據(jù)驅(qū)動(dòng)系統(tǒng)具有如下特點(diǎn):(1)友好的圖形繪制界面;(2)適用于多種不同的鐵路線路;(3)接觸網(wǎng)的主要元件都設(shè)計(jì)為存有數(shù)據(jù)的實(shí)體,更加方便的計(jì)算、修改和存儲(chǔ)數(shù)據(jù);(4)繪制平面布置圖的全部過程更加智能化,簡(jiǎn)化工作量,使設(shè)計(jì)的速度和準(zhǔn)確性得到提高;(5)智能收集并整理圖紙數(shù)據(jù),在完成圖形繪制后,自動(dòng)生成信息表、統(tǒng)計(jì)表,統(tǒng)計(jì)重要元件的類型、數(shù)量等數(shù)據(jù)。
在繪圖過程中,對(duì)某項(xiàng)屬性數(shù)據(jù)進(jìn)行修改后,此屬性數(shù)據(jù)對(duì)應(yīng)的過程自動(dòng)進(jìn)行相應(yīng)的改變。以支柱屬性數(shù)據(jù)為例,如圖1。
圖1 接觸網(wǎng)繪圖系統(tǒng)流程圖
數(shù)據(jù)初始化的作用是為得到布置所需的線路數(shù)據(jù),將這些數(shù)據(jù)一部分存入外部的Excel中,另一部分存入到線路的擴(kuò)展屬性中,通過這些數(shù)據(jù)自動(dòng)生成線路多段線,如正線、站線和渡線。數(shù)據(jù)初始化的步驟如下:
(1)輸入初始化數(shù)據(jù),保存在預(yù)先設(shè)置好的EXCEL中;
(2)點(diǎn)擊選取要生成的線路類型和編號(hào);
(3)連續(xù)點(diǎn)取多條線段,建立線段集合;
(4)將線段集合中的線段從左到右排序;
(5)遍歷全圖,獲得所選線段的起始兩端點(diǎn),建立點(diǎn)集合;
(6)將點(diǎn)集合中的點(diǎn)按照X坐標(biāo)從小到大排序;
(7)分別循環(huán)從線集和點(diǎn)集中取出一線一點(diǎn),判斷此點(diǎn)是否為此線起點(diǎn),若是則執(zhí)行步驟(8),否則執(zhí)行步驟(9);
(8)將此點(diǎn)按此線的線型加入到多段線點(diǎn)集中;
(9)將此點(diǎn)按直線連接的方式加入到多段線點(diǎn)集中;
(10)將多段線點(diǎn)集合中的點(diǎn)生成多段線;
(11)建立名為“PolyLine”的圖層,并將此多段線存入;
(12)將線路類型和編號(hào)存入多段線屬性中,保存在圖紙中;
(13)繼續(xù)步驟(1)直到圖中所有線路選取結(jié)束為止。
在步驟(7)中,如果點(diǎn)不為線段的起點(diǎn),表示用戶選擇的多條線段中出現(xiàn)不連續(xù)情況,即相鄰線段不是首尾相連,有一定距離,處理方式為將前面線段終點(diǎn)與后面線段起點(diǎn)以直線方式連接。
合并生成多段線后,將線路屬性存入線路是為區(qū)別不同線路,將多段線統(tǒng)一存入到同一圖層是為方便信息的提取和加快程序運(yùn)行速度。這樣不同的線路圖和不同的選取線路方式可以獲得不同的線路數(shù)據(jù),生成不同的線路。
結(jié)果:初始化數(shù)據(jù)完成,線路多段線生成,線路類型、編號(hào)、里程等信息存入線路。
圖2 支柱布置總體流程圖
支柱布置總體流程圖如圖2。支柱布置結(jié)果影響著整個(gè)設(shè)計(jì)的準(zhǔn)確性。布置支柱前,首先需輸入標(biāo)準(zhǔn)跨距、跨距比、道岔向外參數(shù)、道岔向內(nèi)參數(shù)、橋里程、信號(hào)機(jī)等數(shù)據(jù),然后按照?qǐng)D元間的關(guān)系和一定的規(guī)則循環(huán)對(duì)每條線路進(jìn)行支柱布置。布置支柱的過程中,會(huì)出現(xiàn)相鄰兩支柱線上距離過大或過小的情況,就需要再布置支柱或調(diào)整距離,這里通過調(diào)用剩余長(zhǎng)度支柱布置函數(shù)ResidenLen-DisTrutDisign()即可。
剩余長(zhǎng)度支柱布置算法:
假定相鄰跨距比為1.15、標(biāo)準(zhǔn)跨距:l標(biāo)跨=50 m,則lmax=50×1.15=57.5 m,lmin=50×(2-1.15)=42.5 m。lmax向下取整為57 m,lmin向上取整為43 m。 相鄰跨距比系數(shù):l系=[1-相鄰跨距比,相鄰跨距比-1] 。如果定義相鄰跨距比為1.15,則1-1.15≤l系≤1.15-1,即-0.15≤l系≤0.15。
標(biāo)準(zhǔn)跨距:在完成道岔等特殊位置的支柱定義后,其余支柱布置時(shí),標(biāo)準(zhǔn)跨距優(yōu)先滿足。
當(dāng)lmax 當(dāng)2lmax 當(dāng)3lmin 當(dāng)2lmin+lmax 當(dāng)3l標(biāo)跨 當(dāng)3lmax 當(dāng)3lmin+lmax 布置完畢調(diào)用ChangeTrutPtDataAll()函數(shù)給支柱寫入屬性數(shù)據(jù),支柱中需要存放的屬性很多,例如:繪制時(shí)手工設(shè)定;計(jì)算其它實(shí)體屬性的條件;通過與其它實(shí)體的關(guān)系計(jì)算得到。這些屬性使支柱與錨塊、拉出值和信息表的數(shù)據(jù)相互聯(lián)系,錨段劃分時(shí),通過支柱的坐標(biāo)和間距設(shè)定下錨點(diǎn),計(jì)算錨段長(zhǎng)度;繪制拉出值時(shí),根據(jù)支柱坐標(biāo)確定拉出值位置,根據(jù)支柱類型確定拉出值大??;統(tǒng)計(jì)支柱時(shí),根據(jù)支柱類型、編號(hào)等自行生成統(tǒng)計(jì)表。所以通過調(diào)節(jié)標(biāo)準(zhǔn)跨距或跨距比可以改變支柱布置的方式和內(nèi)部存儲(chǔ)的屬性數(shù)據(jù),從而改變后續(xù)功能的結(jié)果,以達(dá)到用戶的最終需求。 結(jié)果:支柱布置完成,支柱橫縱坐標(biāo)、支柱編號(hào)、支柱所在線路信息、支柱里程和支柱類型等屬性存入支柱。 錨段劃分的功能包括錨段劃分和中心錨結(jié)的確定。根據(jù)前面存儲(chǔ)的數(shù)據(jù),讀取錨塊所在支柱的數(shù)據(jù)信息可以計(jì)算得到錨塊位置和編號(hào),讀取線路信息可以得到錨塊所在線路名稱。劃分錨塊后,還要對(duì)支柱的屬性進(jìn)行更新,如是否為下錨柱,是否為轉(zhuǎn)換柱,是否在絕緣錨段關(guān)節(jié)區(qū)域等,為信息表布置提供數(shù)據(jù)基礎(chǔ)。所以支柱數(shù)據(jù)和錨塊數(shù)據(jù)是相互驅(qū)動(dòng),相互決定的。 結(jié)果:錨塊劃分完成,錨塊相關(guān)信息數(shù)據(jù)存入錨塊。 拉出值的作用是為了使受電弓滑板工作均勻,并防止發(fā)生刮弓和脫弓事故。附加導(dǎo)線是為了維持良好的供電質(zhì)量和保證供電系統(tǒng)的可靠運(yùn)行不可缺少的組成部分。對(duì)一個(gè)支柱計(jì)算拉出值時(shí),通過讀取支柱的數(shù)據(jù),如支柱坐標(biāo)、類型等,再將這些數(shù)據(jù)結(jié)合用戶輸入的信息決定拉出值位置和計(jì)算拉出值大小。拉出值以文本的方式輸出,同時(shí)也要給拉出值寫入屬性數(shù)據(jù),為后面的信息表提供數(shù)據(jù)基礎(chǔ)。拉出值的數(shù)據(jù)是根據(jù)讀取錨塊中的數(shù)據(jù)確定的,如支柱在錨段區(qū)間內(nèi)就要給拉出值賦予“絕緣”或“非絕緣”屬性,支柱排序也影響著拉出值類型。 結(jié)果:拉出值、附加導(dǎo)線生成,相關(guān)文本信息存入拉出值。 信息表的主要作用是為了便于施工參考和為后續(xù)統(tǒng)計(jì)表中的統(tǒng)計(jì)數(shù)量作數(shù)據(jù)基礎(chǔ)。信息表包括:附加導(dǎo)線、支柱基礎(chǔ)編號(hào)、側(cè)面限界、支柱類型、吊柱及硬橫跨類型、地質(zhì)情況/基礎(chǔ)類型和接觸網(wǎng)安裝圖號(hào)等。 生成圖中元件的統(tǒng)計(jì)數(shù)據(jù)是接觸網(wǎng)布置圖設(shè)計(jì)的最終目的。統(tǒng)計(jì)表主要包括《避雷器設(shè)置表》、《道岔表》、《工程數(shù)量表》、《錨段長(zhǎng)度表》、《號(hào)碼牌表》、《說明》和《簽署欄》等。 通過遍歷信息表中所有文本的屬性數(shù)據(jù),循環(huán)統(tǒng)計(jì)相應(yīng)數(shù)據(jù)出現(xiàn)的次數(shù),再通過一些公式、經(jīng)驗(yàn)計(jì)算出結(jié)果,就可以得到相應(yīng)元件的數(shù)量和信息出現(xiàn)的次數(shù)。 結(jié)果:信息表、統(tǒng)計(jì)表(各接觸網(wǎng)材料的類型和數(shù)量)生成。 以下結(jié)合高速鐵路接觸網(wǎng)設(shè)計(jì)典型工程實(shí)際用例,簡(jiǎn)要介紹數(shù)據(jù)驅(qū)動(dòng)在二次開發(fā)中的應(yīng)用。 此系統(tǒng)是在Windows環(huán)境下使用.NET和ObjectARX2008進(jìn)行開發(fā),適用于AutoCAD2008及其以上版本,編譯軟件使用VisualStudio2005。 高速鐵路接觸網(wǎng)繪圖系統(tǒng)根據(jù)布置圖中不同元件的繪制特點(diǎn),在AutoCAD2008的內(nèi)置菜單中加入屏幕菜單,繪制系統(tǒng)的菜單就嵌入進(jìn)了AutoCAD菜單欄。系統(tǒng)菜單的功能主要是生成接觸網(wǎng)平面布置圖系統(tǒng)的主菜單,方便用戶操作。主菜單下拉產(chǎn)生獨(dú)立的繪圖指令模塊,使各個(gè)子模塊分別實(shí)現(xiàn)相應(yīng)的功能。高速鐵路接觸網(wǎng)繪圖運(yùn)行過程如圖3。 圖3 繪圖系統(tǒng)執(zhí)行過程流程圖 (1)輸入相應(yīng)的初始化數(shù)據(jù),如道岔參數(shù)、支柱間距、圖紙比例、安裝圖號(hào)等,并存儲(chǔ)在Excel表中,如圖4。 圖4 數(shù)據(jù)初始化 (2)運(yùn)行各個(gè)模塊分別進(jìn)行支柱布置錨段劃分、拉出值繪制、附加導(dǎo)線繪制等,如圖5。 (3)繪制信息表、統(tǒng)計(jì)表等,如圖6。 (4)通過前面所得數(shù)據(jù)和參數(shù),進(jìn)行跨距、風(fēng)偏、風(fēng)載荷和側(cè)面限界等的計(jì)算。 圖5 站場(chǎng)局部繪制圖 圖6 信息表 隨著我國(guó)電氣化鐵路的進(jìn)一步推廣,國(guó)內(nèi)有關(guān)接觸網(wǎng)的CAD系統(tǒng)研究越來越多。與其他CAD輔助系統(tǒng)相比較,本文的研究在智能和自動(dòng)化方面提高了很多,使用本系統(tǒng)能提高接觸網(wǎng)布置圖的準(zhǔn)確度和設(shè)計(jì)速度。整個(gè)接觸網(wǎng)布置圖設(shè)計(jì)任務(wù),能夠通過非常簡(jiǎn)單的命令準(zhǔn)確完成。運(yùn)用ObjectARX把接觸網(wǎng)設(shè)計(jì)元件做成系統(tǒng)的自定義實(shí)體,并且在實(shí)體中包含有與接觸網(wǎng)有關(guān)的數(shù)據(jù),使得在數(shù)據(jù)發(fā)生改變后,接觸網(wǎng)布置圖能自行調(diào)整,減少設(shè)計(jì)時(shí)間,提高設(shè)計(jì)的準(zhǔn)確性。通過數(shù)據(jù)驅(qū)動(dòng)技術(shù),在使用ObjectARX編程時(shí),能更加方便地保存和讀取數(shù)據(jù)。使得不同程序間的數(shù)據(jù)傳遞更加直接,更容易、更快速地實(shí)現(xiàn)不同的功能,可廣泛地用于鐵路接觸網(wǎng)的布置設(shè)計(jì)中。 [1] 趙建軍,何寒冰. 接觸網(wǎng)智能CAD系統(tǒng)的研究和實(shí)現(xiàn)[J] .微計(jì)算機(jī)信息,2007(12):165-167. [2] 黃銳,祁成兵,王輝. 擴(kuò)展實(shí)體數(shù)據(jù)在AutoCAD二次開發(fā)中的應(yīng)用[J] . 山西建筑,2008(11):363-365. [3] 王田煜,徐剛. 基于ObjectARX的AutoCAD二次開發(fā)技術(shù)[J] . 河北能源職業(yè)技術(shù)學(xué)院學(xué)報(bào),2003,(2):28-30. [4] 闖濤,趙良臣.用ObjectARX進(jìn)行AutoCAD二次開發(fā)的研究[J] . 浙江工程學(xué)院學(xué)報(bào),2003,20(1):37-40. [5] 鐵道勘測(cè)院. 接觸網(wǎng)設(shè)計(jì)手冊(cè)[S] . 北京:中國(guó)鐵道出版社,1992:25-55.2.3 錨段劃分
2.4 布置拉出值和附加導(dǎo)線
2.5 生成信息表和工程數(shù)量統(tǒng)計(jì)表
3 應(yīng)用實(shí)例
4 結(jié)束語