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