謝正傲
(安徽電信規(guī)劃設計有限責任公司,安徽 合肥 230031)
CAD(計算機輔助設計)是一款集圖形學、網(wǎng)絡通信、數(shù)據(jù)庫等技術與一體的、通用性的、普遍應用于各種領域設計與繪圖軟件[1-2]。隨著CAD軟件應用規(guī)模的不斷擴大,以及計算機軟件開發(fā)技術的不斷發(fā)展,目前各類主流的最新版本CAD軟件均已支持在自有開發(fā)平臺上進行二次開發(fā)并提供豐富的應用編程接口。CAD軟件支持二次開發(fā)以后,不僅能夠充分發(fā)揮軟件自身的基礎功能,也能夠讓軟件設計人員便捷的利用各項擴展能力。正是由于 CAD自身開發(fā)的架構以及通用的標準,使得CAD能夠廣泛應用于各類工程設計[3-6]。
在無線通信等領域工程設計工作中,經(jīng)常需要使用CAD軟件進行圖紙的繪制。傳統(tǒng)的無線通信勘察設計中,設計人員需根據(jù)現(xiàn)場勘察的塔桅類型逐步繪制塔桅立面等工程設計示意圖,存在工作效率低、質量標準不統(tǒng)一等問題。隨著 5G通信技術的發(fā)展,在使用CAD軟件進行5G基站設計繪圖時,塔桅、機柜等標準化圖庫和通用圖庫能夠極大地提高設計繪圖效率和質量。通常CAD軟件并未提供特定工程領域的標準化圖庫和通用圖庫,為適應無線通信工程設計中快速設計的需求,運用ObjectARX和MFC開發(fā)技術,設計實現(xiàn)一個標準化的參數(shù)化三角塔插件,通過輸入塔桅高度、平臺數(shù)、塔底高度等參數(shù)即可快速繪制出標準的三角塔圖形,能夠有效的幫助設計人員降低勞動強度,提升設計效率和設計質量。
CAD的二次開發(fā)是指在CAD開發(fā)平臺上,結合設計的專業(yè)領域,利用支持的開發(fā)工具,為設計人員定制開發(fā)出更加豐富的繪圖功能,以提高設計人員的工作質量和工作效率。Lisp、ADS和ObjectARX是CAD二次開發(fā)方法中常見的技術[6-7]。MFC是微軟基礎類庫的簡稱,它封裝了一系列的操作系統(tǒng)可視化界面[8]。
(1)Lisp語言是一種廣泛應用于人工智能方面的計算機表處理語言,CAD自帶支持二次開發(fā)的Lisp語言,具有規(guī)則簡單、易學易用、針對性強等特點,支持通過命令行的方式調(diào)用 CAD 命令、系統(tǒng)變量和對話框[6-7]。
(2)ADS是一種以C語言為基礎的結構化編程語言。編寫的程序通過C編譯器編譯成可執(zhí)行文件后,可以在CAD環(huán)境下運行。與Lisp語言相比,雖然執(zhí)行更快、代碼可讀性更好,但不適合可視化應用開發(fā)需求[6-7]。
(3)ObjectARX是一種以C++為基礎的面向對象編程語言,利用動態(tài)鏈接庫(DLL)程序與接口,直接與CAD進行交互。ObjectARX開發(fā)的應用程序速度快、集成度高、穩(wěn)定性強[9]。
(4)MFC是一種基于C++封裝的API函數(shù)基礎類庫,提供了應用程序的開發(fā)框架,能夠快速、高效的創(chuàng)建可視化應用程序,且具有良好的設計效果。其自身功能強大的函數(shù)庫和可視化開發(fā)界面能夠簡化程序編程,降低設計與開發(fā)人員的工作量,縮短應用開發(fā)時間,有效的提升應用程序開發(fā)效率[8-10]。
實現(xiàn)參數(shù)化插件繪圖和提供友好的交互界面是CAD二次開發(fā)的主要任務。參數(shù)化插件繪制圖形主要是指通過輸入塔桅自身通用的屬性值,對圖形進行自動繪制。
ObjectARX程序與MFC、CAD程序之間是通過消息傳遞機制進行通信的,且其自身具有功能強大、執(zhí)行速度快、系統(tǒng)開銷小、類的構造與實現(xiàn)相對簡單等特點。由于ObjectARX與MFC均是基于C++的面向對象編程,相對其他開發(fā)方法更加符合設計與開發(fā)人員的編程習慣。運用ObjectARX開發(fā)技術,對 CAD做各種二次開發(fā)時,不僅可以直接訪問CAD圖庫系統(tǒng)和圖形數(shù)據(jù)庫,也可直接操作CAD自身的代碼和數(shù)據(jù)結構,同時結合.net平臺的MFC類庫可以實現(xiàn)標準的圖形界面[9-11]。
使用MFC動態(tài)鏈接庫創(chuàng)建ObjectARX程序,CAD與ObjectARX程序間可共享相同的DLL,與使用MFC靜態(tài)鏈接庫的ObjectARX程序相比,具有執(zhí)行效率高、代碼更簡潔等特點。因此三角塔參數(shù)化插件開發(fā)選擇采用 MFC動態(tài)庫創(chuàng)建ObjectARX程序來實現(xiàn)。參數(shù)化插件實現(xiàn)流程如圖1所示。
圖1 系統(tǒng)實現(xiàn)流程Fig.1 System Implementation Process
(1)MFC初始化
每個動態(tài)鏈接庫必選有一個入口函數(shù) DllM-ain,項目工程運行時自動調(diào)用該入口函數(shù)。MFC自帶調(diào)用入口函數(shù)機制,工程應用中只需編寫與工程相關的初始化代碼即可。入口函數(shù) DllMain的主要核心代碼如下:
(2)圖形化對話框創(chuàng)建與設置
在無線通信工程中三角塔可能被設計安裝在地面或建筑物之上。設計人員輸入的三角塔屬性參數(shù)包括塔高、塔底高度、平臺數(shù)、平臺高度。其塔底高度參數(shù)是指塔底到地面的高度,若三角塔設計安裝在地面,則塔底高度為 0;平臺數(shù)參數(shù)是指三角塔包含的平臺層數(shù);塔高參數(shù)是塔底到塔頂?shù)母叨龋黄脚_高度參數(shù)是平臺到塔底的高度,當三角塔包含多層平臺時,分別定義每層平臺的高度。創(chuàng)建一個基于MFC的圖形化塔桅對話框,用來接收無線通信工程設計人員設計繪圖時需要輸入的三角塔屬性參數(shù),如圖2所示。
圖2 圖形化塔桅對話框Fig.2 Graphical Mast Dialog
當工程設計人員輸入平臺數(shù)時,需要根據(jù)輸入的平臺數(shù)動態(tài)調(diào)整平臺序號和平臺高度。圖形化對話框創(chuàng)建完成后,對塔桅對話框的平臺序號、平臺高度等參數(shù)進行初始化,并定義獲取塔桅對話框參數(shù)的方法供繪制函數(shù)等調(diào)用。其核心實現(xiàn)代碼如下:
(3)編寫繪制函數(shù)
捕獲工程設計人員進行三角塔繪制時的按鈕點擊事件,并獲取設計人員在圖形化對話框中輸入的參數(shù)值供插入塊參照使用。其核心實現(xiàn)代碼如下:
(4)應用效果
打開本地CAD軟件,加載參數(shù)化塔桅插件,“塔桅生成”對話框中的參數(shù)屬性默認值可根據(jù)實際設計要求對其進行設置,如圖3所示。
圖3 塔桅生成對話框Fig.3 Generate Tower Mast Dialog
當平臺數(shù)增加時,平臺序號對應的平臺高度默認值為 0,設計人員也可根據(jù)需要對其進行修改調(diào)整。參數(shù)屬性設置完成后,在模型空間中任意選取插入點,CAD會在選取的插入點處自動繪制出如圖4所示的標準三角塔塊參照。
圖4 三角塔圖形Fig.4 Triangular Tower Graphics
工程設計人員可在自動繪制完成后,通過三角塔塊參照屬性窗口修改其參數(shù)屬性(塔高、平臺數(shù)、塔底高度、總高、平臺高度等),如圖5所示。
圖5 三角塔屬性Fig.5 Triangular Tower Properties
在無線通信工程設計中,設計繪圖工作是一項費時費力且高度重復的工作?;贑AD二次開發(fā)技術,開發(fā)一些通用和標準的參數(shù)化插件,對工程設計有著很大的實際意義。通過二次開發(fā)的參數(shù)化插件不僅融入了歷史設計經(jīng)驗,且良好的交互性和友好的操作界面,能夠有效的提升工程設計的設計效率和設計質量,從而達到標準化和規(guī)范化的目的,為傳統(tǒng)無線通信設計數(shù)字化轉型提供支撐。