黃齊來,慈明洋
(北京城建設計發展集團股份有限公司,北京 100044)
隨著城市軌道交通高速發展,以剛性接觸網為牽引網制式的項目日益增多,設計任務顯著加重。剛性接觸網沿線架設,若依靠AutoCAD手工繪圖,工作效率低且易出錯。自動化輔助繪圖軟件可提升繪圖效率和準確性,解決工期緊任務重的難題。
目前,CAD二次開發已有較為廣泛的應用,在電氣化鐵路柔性接觸網設計中已有成熟的輔助繪圖軟件[1-2]。趙海軍等人應用AutoLISP開發了針對剛性接觸網的平面布置軟件,能夠自動計算和繪制錨段[3]。田升平對地鐵剛性接觸網平面設計軟件進行優化,采用ObjectARX進行開發[4]。而隨著項目經驗的積累,設計人員在總結了設計要點并儲備大量的標準錨段數據后,提出剛性接觸網輔助繪圖軟件以標準錨段數據庫為基礎,實現參數化和標準化地自動繪圖,簡化軟件算法,降低軟件開發難度。本文基于AutoCAD二次開發技術,采用ObjectARX開發環境,設計一款剛性接觸網輔助繪圖軟件。根據用戶選擇的標準錨段,軟件即可通過數據庫接口調取坐標并進行自動化繪圖,從開發難度和繪圖流程方面進行優化,提高了剛性接觸網的設計效率和準確性。
隨著工程設計經驗積累,接觸網專業已儲備大量原始數據,具有成熟的標準錨段設計資料。通過歸納剛性接觸網各種長度和形式的標準錨段,將常用標準錨段懸掛點布置坐標分別預存儲,整理成可直接調用的數據源文件,即可建立標準化的錨段數據庫,為輔助繪圖軟件的開發提供基礎條件和輸入參數。
剛性接觸網平面布置圖由多個連續的標準錨段組合而成,錨段間通過錨段關節進行連接。剛性接觸網采用Π型匯流排垂直懸掛,標準錨段長度根據匯流排制造長度進行設計。為方便運輸和安裝,匯流排單位制造長度為每根12 m,錨段兩端分別設一根7.5 m的匯流排終端頭[5]。標準錨段長度S可表示為S=12 n+2×7.5(n為匯流排根數)。錨段長度一般不大于250 m,按此規律標準錨段長度依次設計為243 m、231 m、219 m等規格。
同時,為保證受電弓磨耗均勻,剛性接觸網在一個錨段范圍內呈類“之”字形布置,在錨段中部設置中心錨結。采用全波模式的標準錨段設置,原理如圖1所示[6]。由圖1可知,同一長度的標準錨段可能為圖1中錨段Ⅰ或錨段Ⅱ兩種形式。此外,錨段間的連接形式按功能又可分為絕緣錨段關節和非絕緣錨段關節,兩種關節對應的平行匯流排中心線間距分別為200 mm和300 mm。因此同一長度的標準錨段在數據庫內應預設4種不同形式作為輸入參數,分別如圖2 中A、B、C、D所示。數據庫中每種標準錨段按此4種形式預存懸掛點平面布置的坐標,具體布置應滿足剛性接觸網對跨距、拉出值的要求,工程項目中已有充分的研究和應用,不再贅述。

圖1 標準錨段示意圖
為保證出圖的自動化、標準化和可重用性,剛性接觸網輔助繪圖軟件支持讀寫外部數據庫,對數據庫內容進行調用。AutoCAD二次開發可采用3種方式建立用于參數化設計的標準數據庫:用程序或內部數組方式管理、以數據文件方式管理和數據庫形式。鑒于剛性接觸網標準錨段數量不多,為方便實現,采用以數據文件方式管理數據。
由于現有的標準錨段資料以Excel表格為主,且Excel應用廣泛,易于管理,用戶可以自由方便地擴充數據源,通過COM類庫外部操作實例對象可脫離Excel運行,開發成本較低,因此,本文采用Excel作為數據庫[7],采用Excel COM組件實現數據讀取,同時,預留與綜合數字化辦公系統軟件集成的接口。

圖2 標準錨段的4種類型
AutoCAD二次開發是根據設計者用途進行的客戶化定制開發技術。基于AutoCAD的二次開發工具主要有3種:VisualLisp、VBA和ObjectARX。其中,VisualLisp與VBA較簡單,開發速度較快。但控制深度相比ObjectARX稍顯不足。ObjectARX是在ADS基礎上發展起來的一種C++語言編程環境,具有完全面向對象的AutoCAD接口,可以直接創建對象,修改屬性和AutoCAD的數據庫。同時ObjectARX可以與AutoCAD共享同樣的內存空間。ObjectARX開發平臺主要包括AcRx、AcEd、AcDb、AcGi及AcGe 5個類庫,并且能夠利用MFC類庫建立Windows的軟件操作界面。其功能強大,支持自定義實體,可以很好地運用各種面向對象技術進行底層開發[8]。
本文基于Visual Studio 2008平臺,結合Object-ARX 2010開發工具,可運行在AutoCAD 2010-2011版本的圖形平臺。
剛性接觸網輔助繪圖軟件開發目標按照預繪制內容和預實現功能劃分,作為軟件的設計依據。
3.1.1 預繪制的內容
(1)剛性接觸網平面布置圖中懸掛點、匯流排、架空地線等;
(2)錨段關節和中心錨節;
(3)錨段、懸掛點的自動編號;
(4)尺寸標注。
3.1.2 預實現的功能
(1)根據選取的標準錨段參數自動繪制連續多個錨段;
(2)自動生成對應編號和標注,且標注字體大小和方向滿足施工圖要求;
(3)自動統計懸掛點、錨段的數量,并生成統計表格。
剛性接觸網輔助繪圖軟件采用分布式架構,按功能劃分為交互界面、數據庫讀寫、模型空間圖形的提取和添加等4個主要模塊,軟件具體架構圖如圖3所示。軟件架構中未涉及較多的錨段和懸掛點的計算功能,而采用直接讀取標準錨段數據庫,避免由輔助繪圖軟件進行大量復雜運算,簡化了軟件算法,提高了軟件繪圖的速度和靈活性,降低開發難度。

圖3 軟件架構
根據所搭建的軟件框架,建立主要的自定義功能類,包括:界面類(CArxDialog),讀取類(CExlRD)、獲取類(Cpick),繪圖類(Cdrawing),轉換類(Ctrans)等。其中,界面類負責人機交互功能,解析用戶輸入參數,顯示必要的結論和提示信息;讀取類負責調取數據庫內容;獲取類和繪圖類分別負責圖紙信息的提取和圖形寫入等功能。自定義類之間通過消息傳遞相互作用,而操作細節封裝在相應的類中[9],自定義類間的消息傳遞關系如圖4所示。

圖4 自定義類間關系
軟件工作流程如圖5所示。
用戶在AutoCAD界面下通過自定義指令啟動輔助繪圖軟件,根據提示在圖紙上選中預繪制的線路和起點,并選取合適的標準錨段長度。輔助繪圖軟件則依次執行如下流程:

圖5 軟件工作流程
(1)解析交互界面中選定錨段參數;
(2)通過數據庫接口組件調取相應的標準錨段中各懸掛點的跨距值和拉出值;
(3)按指定跨距值和拉出值依次沿線路方向定位,將懸掛點圖形的實體對象添加到當前模型空間(MODEL_SPACE)塊表記錄中的指定位置;
(4)提取懸掛點處線路的斜率,插入標注并自動按斜率調整方向;
(5)多段線連接懸掛點,繪制匯流排和架空地線;
(6)記錄懸掛點數據,自動生成統計表格。
ObjectARX中已封裝了大量的經典函數,可完成對數據庫、實體對象的操作和屬性設置,常用的API如表1所示[10]。此外,本文還針對軟件工作流程自定義封裝了多個繪圖過程中常用的API,如定位類API GetPointAtDistInGeCurve()、GetPointoutLengthInGeCurve( )以及繪圖類API Drawcircles( )、AddBlockRf( )、DrawPolyline( )等,以完成對實體(AcDbEntity)的拾取、繪制等操作,豐富了本軟件繪圖調用的靈活性和軟件功能的可擴展性。主要的自定義API及其作用如表2所示。

表1 ObjectARX封裝的典型API表

表2 主要應用的函數表
ObjectARX二次開發的界面可利用MFC類庫實現。剛性接觸網設計中需要輸入的設計參數包括:錨段選型,起始錨段編號,繪圖線路方向,架空地線形式等。軟件主要采用MFC中的輸入框和下拉式菜單兩種控件形式設計,界面簡潔直觀,軟件設計的界面如圖6所示。
對軟件測試分別進行黑盒測試與白盒測試,對軟件繪圖功能、各模塊工作流程及數據庫讀寫進程進行測試,同時在鄭州市城郊鐵路工程的實際繪圖中進行應用。通過測試,軟件工作流程合理,能夠完成所需的輔助繪圖功能。用戶只需按照界面提示依次選取線路及合適的標準錨段,并輸入起始錨段編號、架空地線形式等設計參數,輔助繪圖軟件便可自動生成剛性接觸網平面布置圖,并完成錨段關節處理、圖層劃分、標注和編號等工作,且將對應的工程數量表保存至指定根目錄下。利用輔助繪圖軟件繪制的剛性接觸網平面布置圖的懸掛點、錨段關節、自動生成的統計表格及標準錨段平面布置圖分別如圖7a~7e所示。根據實際應用中反饋的問題,經過進一步優化和修改,軟件已達到了較高的自動化水平。

圖6 人機交互界面
本文以剛性接觸網平面布置圖繪制為需求,基于AutoCAD二次開發技術設計一款剛性接觸網輔助繪圖軟件。根據剛性接觸網平面布置原則建立標準錨段數據庫,軟件通過調用標準錨段數據庫內的懸掛點坐標,實現標準化的自動繪圖。
軟件以Visual Studio 2008為開發平臺,應用C++語言及ObjectARX開發工具編寫程序。軟件直接通過數據庫接口讀取的方式實現參數化的自動繪圖,避免復雜運算,簡化算法,降低軟件開發難度。

圖7 繪制效果圖
通過軟件測試及在鄭州市城郊鐵路工程中的實際應用,軟件能夠滿足施工圖設計要求,較大提升設計效率和準確性。
目前,本軟件尚無法應用于柔性接觸網,后續應積累并建立柔性接觸網基礎數據庫,以支持其平面布置繪制。同時編寫軟件說明,為與綜合數字化辦公系統軟件集成提供接口。
