金澤宇
(中鐵第五勘察設(shè)計院集團(tuán)有限公司 北京 102600)
在城軌線路的設(shè)計工作中,需先考慮內(nèi)、外部制約條件,獲取制約條件數(shù)據(jù)項、根據(jù)各專業(yè)技術(shù)要求分析處理數(shù)據(jù)項和生成成果文件,需要耗費(fèi)大量時間和精力。為了提高城軌線路設(shè)計的精度和效率,本文對城軌線路設(shè)計中的制約條件與專業(yè)技術(shù)要求加以分析,研究出內(nèi)在邏輯關(guān)系[1]。從而設(shè)計出適用的程序算法流程圖,在Visual Studio中編寫出相應(yīng)的C#語言程序,通過觸發(fā)各輔助設(shè)計事件調(diào)用對應(yīng)程序源代碼實(shí)現(xiàn)輔助功能。每次城軌線路修改都需要重新獲取、分析、處理制約條件相關(guān)數(shù)據(jù)項,人工方法工作量很大而且容易因疲勞產(chǎn)生失誤?;贑#計算機(jī)語言編程進(jìn)行輔助設(shè)計,方可在保證準(zhǔn)確性的同時有效提高工作效率。在北京地鐵昌平南延線,哈爾濱地鐵4、5號線,鄭州軌道交通6、11號線,廣州黃埔現(xiàn)代有軌電車5號線等多個項目設(shè)計工作中的使用,輔助程序高效實(shí)用。
C#是美國微軟公司研發(fā)的一種面向?qū)ο蟮?、運(yùn)行于.NET Framework之上的高級計算機(jī)程序語言。它繼承了C和C++強(qiáng)大的功能,同時提供了一種比COM更強(qiáng)大、更靈活、更簡潔的編程模型[2]。應(yīng)用C#計算機(jī)語言編程及實(shí)現(xiàn)二次開發(fā),是一種實(shí)用有效的方法。
在Visual Studio 2012中通過引用庫文件和導(dǎo)入Autodesk.AutoCAD.Geometry,Autodesk.AutoCAD.EditorInput,Autodesk.AutoCAD.Windows.Visuals,Autodesk.AutoCAD.ApplicationServices,Autodesk.AutoCAD.Runtime等命名空間,建立與AutoCAD 2014之間的聯(lián)系[3],輕松獲取制約條件數(shù)據(jù)。以適用的算法為核心,在相應(yīng)的控件對象中編寫出計算機(jī)程序,觸發(fā)對應(yīng)事件,實(shí)現(xiàn)城軌線路輔助設(shè)計,程序集主窗體對象如圖1所示。
圖1 城軌線路輔助設(shè)計程序集主窗體示意
程序能夠輔助設(shè)計人員準(zhǔn)確高效地獲取線路對象與內(nèi)外部制約條件數(shù)據(jù)項,然后根據(jù)技術(shù)標(biāo)準(zhǔn)[4-5]和建筑、結(jié)構(gòu)、橋梁、軌道等專業(yè)的設(shè)計要求自動處理原始數(shù)據(jù),生成初步成果數(shù)據(jù)文件。
設(shè)計城軌線路方案,需先結(jié)合地形圖、線路中線、各專業(yè)提供的*.dwg文件和其它提資獲取制約條件數(shù)據(jù)項,包括:車站中心里程、車站起點(diǎn)里程、車站終點(diǎn)里程、車站坡度、車站坡降方向、配線起點(diǎn)里程、配線終點(diǎn)里程、道岔型號、道岔朝向、道岔出岔點(diǎn)里程、豎曲線半徑、與外部構(gòu)筑物相交里程、上跨(下穿)外部構(gòu)筑物的方式和凈空要求等。此外,地下、橋梁、路基、道路路面段落線路的制約條件處理算法存在差異,針對結(jié)構(gòu)高、計算跨徑、工法、線路距離地(路)面高差等數(shù)據(jù),需采用不同處理方法。定義Routecg類:將地下、橋梁、路基區(qū)間對應(yīng)的結(jié)構(gòu)高數(shù)據(jù)文件序列化后添加到主程序引用文件中[6];將內(nèi)外部制約條件數(shù)據(jù)項定義為Routecg類不同子類的成員及屬性,每回設(shè)計一條城軌線路需新創(chuàng)建一個Routecg類實(shí)例對象,適應(yīng)本次的設(shè)計任務(wù)[7]。數(shù)據(jù)項間的邏輯關(guān)系如圖2所示。
圖2 輔助設(shè)計初步方案程序流程
當(dāng)設(shè)計不同制式的城市軌道交通線路時,技術(shù)標(biāo)準(zhǔn)不同導(dǎo)致制約條件數(shù)據(jù)計算和代碼處理存在差異,需要在Routecg類的基礎(chǔ)上定義繼承類以適應(yīng)新制式的技術(shù)標(biāo)準(zhǔn),同時需要修改和重新序列化結(jié)構(gòu)高數(shù)據(jù)文件。
圖2中每一部分都蘊(yùn)含大量的計算機(jī)程序算法[8-10]和C#語言代碼,由于篇幅有限,本文只以地下線路范圍的N-S圖為例進(jìn)行闡述,如圖3所示。
圖3 輔助設(shè)計初步方案程序N-S圖
圖3為地下線路段獲取和處理數(shù)據(jù)模式的部分算法N-S圖,其中,處理車站前后變坡點(diǎn)的部分代碼片段如下:
該算法適用于車站里程范圍內(nèi)部不設(shè)置豎曲線的情況,當(dāng)設(shè)置豎曲線時,需修改關(guān)于車站范圍內(nèi)的代碼。
城軌線路方案的定稿不是一蹴而就的,局部方案調(diào)整會造成后續(xù)線路制約條件與專業(yè)要求數(shù)據(jù)項發(fā)生變化,同時導(dǎo)致后續(xù)線站位不變區(qū)間里程數(shù)據(jù)項發(fā)生變化。利用計算機(jī)程序?qū)π隆⑴f線路線型關(guān)系自動分析處理,找到修改方案后線型重合部分與繞行部分,研究算法[11]后編寫程序找到每一段落新舊對應(yīng)關(guān)系。然后將線站位未變化部分的制約條件數(shù)據(jù)項,按照里程數(shù)據(jù)主項的新舊關(guān)系重新生成新的數(shù)據(jù)記錄。修改設(shè)計方案的主要算法N-S圖如圖4所示。
圖4 修改設(shè)計方案程序N-S圖
圖4為修改線路方案程序主要算法N-S圖,本程序算法適用于修改方案后,線站位未發(fā)生改變但前后段落里程錯亂的區(qū)間,保留重合段落區(qū)間,線站位發(fā)生改變的段落需要使用3.1中內(nèi)容重新進(jìn)行運(yùn)算。
從Visual Studio 2012中啟動輔助程序,選擇“Get制約條件數(shù)據(jù)”模塊中類型,設(shè)置文件存儲路徑,觸發(fā)“GetData”事件,聯(lián)動到各專業(yè)提資后的線路平面圖中線上,用點(diǎn)擊和交互的方式采集所需基礎(chǔ)數(shù)據(jù)。以鄭州軌道交通6號線可研設(shè)計階段部分段落為例,將數(shù)據(jù)文件中記錄拆成關(guān)系模型數(shù)據(jù)結(jié)構(gòu)[12]以便展示。其中車站制約因素見表1。
表1中,當(dāng)未指定中心軌面高程時,可以指定軌面所在層數(shù),讓程序按常規(guī)結(jié)構(gòu)高和*.dmx文件數(shù)據(jù),計算軌面高程最值。其中,“Enum”表示枚舉數(shù)據(jù)類型。采集配線道岔對象見表2。
表1 Station制約條件數(shù)據(jù)采集
表2 Switch制約條件數(shù)據(jù)采集
表2中朝向定義:出岔點(diǎn)為原點(diǎn),線路大里程方向?yàn)閄軸正方向,右線指向左線正交方向?yàn)閅軸正方向,取出岔段所在象限數(shù)為朝向數(shù)據(jù)(枚舉類型)。采集線路外部制約條件數(shù)據(jù)見表3和表4。
表3 Structure制約條件數(shù)據(jù)采集
表4 Interval制約條件數(shù)據(jù)采集
表3中制約條件為穿越預(yù)留節(jié)點(diǎn)的構(gòu)筑物,穿越地鐵時,在高程屬性錄入地鐵軌面高程。表4為線路穿越區(qū)間未預(yù)留節(jié)點(diǎn)的構(gòu)筑物。上跨制約構(gòu)筑物錄入構(gòu)筑物頂部高程,下穿制約構(gòu)筑物錄入構(gòu)筑物底部高程。
在數(shù)據(jù)項采集過程中,由于未知個別數(shù)據(jù),可以錄入空格,待查到后直接在數(shù)據(jù)文件里修正。計算生成數(shù)據(jù)如表5、表6所示。
表5 *.sqx生成數(shù)據(jù)
表5為程序運(yùn)算生成指定車站變坡點(diǎn)的數(shù)據(jù)成果,可以向Interval類的實(shí)例對象中添加區(qū)間最低點(diǎn)等數(shù)據(jù),由程序推算坡段參數(shù),進(jìn)一步優(yōu)化*.sqx成果文件。
運(yùn)算前需先在類型里程范圍文件中設(shè)置地下、橋梁、路基、路面各段的里程范圍,它決定不同制約條件的運(yùn)算原理。實(shí)踐證明,程序輔助運(yùn)算得到的數(shù)據(jù)成果與人工獲取計算得到成果的偏差很小,僅個別邊界處會略微偏于保守,且程序輔助比人工方式更為高效,還可以避免由于疲勞造成的差錯。
用hrcad軟件選取表5中運(yùn)算生成的初步*.sqx文件生成線路縱斷面動態(tài)設(shè)計圖,然后選擇*.hkz文件,將表6中區(qū)間制約條件生成到動態(tài)設(shè)計圖中進(jìn)行優(yōu)化設(shè)計,再次提高了設(shè)計效率和準(zhǔn)確度。
從“修改設(shè)計方案”框架中,指定修改前、后的*.dat文件的存儲路徑,指定對應(yīng)關(guān)系文件存儲路徑,觸發(fā)計算按鈕,將得到數(shù)據(jù)記錄存入新舊方案對應(yīng)關(guān)系文件。本文以廣州黃埔現(xiàn)代有軌電車5號線部分區(qū)間為例呈現(xiàn)對應(yīng)關(guān)系,見表7~表9。
表7 舊*.dat文件數(shù)據(jù)
表8 新*.dat文件數(shù)據(jù)
表9 新舊方案對應(yīng)關(guān)系
由表7~表8數(shù)據(jù)運(yùn)算生成表9中對應(yīng)關(guān)系數(shù)據(jù)后,用程序?qū)π薷姆桨盖?.dat文件對應(yīng)的*.dmx、*.hkz、*.sqx文件進(jìn)行處理,得到新的數(shù)據(jù)文件,由hrcad生成新的動態(tài)設(shè)計圖,只需對繞行段落(null)重新設(shè)計。避免了因修改方案導(dǎo)致里程新、舊里程關(guān)系錯亂無序,節(jié)省重復(fù)設(shè)計的時間。
本文在.NET平臺上,研究出輔助城軌線路設(shè)計的算法,用C#計算機(jī)語言編寫程序,簡化獲取和處理城軌線路實(shí)例對象數(shù)據(jù)項方式,處理內(nèi)外部制約因素數(shù)據(jù)項,可生成和修改設(shè)計成果文件及制約因素數(shù)據(jù)文件。通過成果文件生成包含制約因素數(shù)據(jù)標(biāo)注的動態(tài)設(shè)計圖,使下一步優(yōu)化設(shè)計工作便捷高效。通過在多條城軌線路的設(shè)計工作中使用,程序能夠有效提高工作效率和設(shè)計成果的準(zhǔn)確性。以后該方法可繼續(xù)用于城軌線路的設(shè)計工作中,實(shí)現(xiàn)城軌線路輔助設(shè)計,使設(shè)計與修改工作變得高效、便捷、準(zhǔn)確。