易 寧 昌志敏 陳曉峰
AutoCAD 作為工程設計人員必不可少的設計工具之一,在工程制圖中發揮了重要的作用。除具有強大的制圖功能外,它還提供了供二次開發者使用的AutoLisp、VBA 等更為靈活方便的二次開發工具。本文編寫了一個在AutoCAD 的VBA 開發環境中運行的自動標高標注程序,通過合理設置文字高度、精度等必要的參數,根據圖中建筑物需要標注的不同位置自動生成正確的標高數值,可有效提高工程的制圖速度、減少工程圖紙出錯的機率。
該程序由一個主程序和兩個子程序的方式來實現自動標注功能。使用子程序一是可以使程序結構合理,各模塊功能清晰,易于維護。
根據用戶選擇要標注的位置放置要標注的標高文字,同時計算出文字在圖形中的長度傳給CreateElevation子程序,以便能夠準確的畫出標高水平線的長度,不至于讓標高水平線過長或過短影響圖紙的美觀和效果。實現代碼如下:


上段子過程的代碼需要4 個參數,分別為標高符號插入點、高程值、文字高度和文字相對于插入點所在的方向。
根據傳遞過來的4 個參數,先在坐標(0,0)處生成標高文字,測量出長度然后刪除文字。再根據用戶要標注的方向(Case1~Case4)在適當位置創建文字。測量出來的文字長度同時傳遞給畫標高符號的子程序使用。
跟據計算出的文字長度畫出適當的標高符號。根據用戶第二點的選擇位置確定文字在哪個位置,從而翻轉或旋轉標高符號。實現代碼如下:

主程序定義程序運行的各個變量,提示用戶輸入1m 長度在圖形中的數值、文字高度、標高插入點以及第一個參考標高的數值。根據用戶給定的參數調用子程序完成標高的自動標注。該程序可連續選點標注,直到用戶按ESE 或鼠標右鍵退出。實現代碼如下:


在AutoCAD 中選擇“工具(T)”—“宏(A)”—“Visual Basic 編輯器(B)”(也可以快速按Alt+F11 兩次),在出現在窗口中雙擊左側的“Thisdrawing”,將以上的代碼寫入其中,然后可以關閉該窗口。接著選擇“工具”—“宏”—“宏(M)”(或快速按Alt+F8 兩次),在彈出的窗口中選擇運行就可以執行該程序。
AutoCAD VBA 作為其內置的面向對象的開發工具,和Visual Basic 一樣都具有強大的開發功能。其區別就是VBA 相當于VB 的簡化版,不能作為一個獨立程序來運行,必須在AutoCAD 環境下使用,但其開發功能并不弱,VBA 程序作為AutoCAD 的一個過程來運行,程序的執行速度非常快,且對話框結構設計易于對程序的代碼維護和糾錯,節省編程的時間。會編程的初學者也可以在很短的時間內掌握并發揮其強大的功能■