易 寧 昌志敏 陳曉峰
AutoCAD 作為工程設(shè)計人員必不可少的設(shè)計工具之一,在工程制圖中發(fā)揮了重要的作用。除具有強大的制圖功能外,它還提供了供二次開發(fā)者使用的AutoLisp、VBA 等更為靈活方便的二次開發(fā)工具。本文編寫了一個在AutoCAD 的VBA 開發(fā)環(huán)境中運行的自動標(biāo)高標(biāo)注程序,通過合理設(shè)置文字高度、精度等必要的參數(shù),根據(jù)圖中建筑物需要標(biāo)注的不同位置自動生成正確的標(biāo)高數(shù)值,可有效提高工程的制圖速度、減少工程圖紙出錯的機率。
該程序由一個主程序和兩個子程序的方式來實現(xiàn)自動標(biāo)注功能。使用子程序一是可以使程序結(jié)構(gòu)合理,各模塊功能清晰,易于維護。
根據(jù)用戶選擇要標(biāo)注的位置放置要標(biāo)注的標(biāo)高文字,同時計算出文字在圖形中的長度傳給CreateElevation子程序,以便能夠準(zhǔn)確的畫出標(biāo)高水平線的長度,不至于讓標(biāo)高水平線過長或過短影響圖紙的美觀和效果。實現(xiàn)代碼如下:
上段子過程的代碼需要4 個參數(shù),分別為標(biāo)高符號插入點、高程值、文字高度和文字相對于插入點所在的方向。
根據(jù)傳遞過來的4 個參數(shù),先在坐標(biāo)(0,0)處生成標(biāo)高文字,測量出長度然后刪除文字。再根據(jù)用戶要標(biāo)注的方向(Case1~Case4)在適當(dāng)位置創(chuàng)建文字。測量出來的文字長度同時傳遞給畫標(biāo)高符號的子程序使用。
跟據(jù)計算出的文字長度畫出適當(dāng)?shù)臉?biāo)高符號。根據(jù)用戶第二點的選擇位置確定文字在哪個位置,從而翻轉(zhuǎn)或旋轉(zhuǎn)標(biāo)高符號。實現(xiàn)代碼如下:
主程序定義程序運行的各個變量,提示用戶輸入1m 長度在圖形中的數(shù)值、文字高度、標(biāo)高插入點以及第一個參考標(biāo)高的數(shù)值。根據(jù)用戶給定的參數(shù)調(diào)用子程序完成標(biāo)高的自動標(biāo)注。該程序可連續(xù)選點標(biāo)注,直到用戶按ESE 或鼠標(biāo)右鍵退出。實現(xiàn)代碼如下:
在AutoCAD 中選擇“工具(T)”—“宏(A)”—“Visual Basic 編輯器(B)”(也可以快速按Alt+F11 兩次),在出現(xiàn)在窗口中雙擊左側(cè)的“Thisdrawing”,將以上的代碼寫入其中,然后可以關(guān)閉該窗口。接著選擇“工具”—“宏”—“宏(M)”(或快速按Alt+F8 兩次),在彈出的窗口中選擇運行就可以執(zhí)行該程序。
AutoCAD VBA 作為其內(nèi)置的面向?qū)ο蟮拈_發(fā)工具,和Visual Basic 一樣都具有強大的開發(fā)功能。其區(qū)別就是VBA 相當(dāng)于VB 的簡化版,不能作為一個獨立程序來運行,必須在AutoCAD 環(huán)境下使用,但其開發(fā)功能并不弱,VBA 程序作為AutoCAD 的一個過程來運行,程序的執(zhí)行速度非常快,且對話框結(jié)構(gòu)設(shè)計易于對程序的代碼維護和糾錯,節(jié)省編程的時間。會編程的初學(xué)者也可以在很短的時間內(nèi)掌握并發(fā)揮其強大的功能■