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