余志偉
(江漢大學(xué) 智能制造學(xué)院,湖北 武漢 430056)
AutoCAD是目前較為先進(jìn)的計(jì)算機(jī)輔助設(shè)計(jì)軟件之一,廣泛應(yīng)用于機(jī)械、建筑、化工等領(lǐng)域。其功能強(qiáng)大、易學(xué)易用,并具有良好的開放性。但作為通用軟件無法解決實(shí)際使用中出現(xiàn)的所有問題。因此,需要在AutoCAD上進(jìn)行二次開發(fā),以滿足用戶的實(shí)際需要,提高使用效率,以達(dá)到事半功倍的效果。
ADS是指AutoCAD Development System。在AutoDesk公司開發(fā)的AutoCAD中,這是在R11.0-R14.0所用的開發(fā)方式。它包括一組AutoCAD專用的C函數(shù)庫及頭文件。一個(gè)ADS應(yīng)用程序是一系列經(jīng)過編譯和連接的C函數(shù),這些函數(shù)作為AutoCAD的外部函數(shù)由AutoLISP調(diào)用。ADS應(yīng)用程序是執(zhí)行文件,可以在AutoCAD中運(yùn)行。它和AutoCAD建立通訊聯(lián)接,獲得執(zhí)行的結(jié)果。自AutoCAD2000起被淘汰已被融合于ObjectARX中。
ObjectARX程序本質(zhì)是WindowsDLL程序,它們之間均采用Windows消息傳遞機(jī)制直接進(jìn)行通信。還可以直接調(diào)用AutoCAD的函數(shù)、訪問數(shù)據(jù)庫和圖形系統(tǒng)。通過ObjectARX創(chuàng)建的自定義實(shí)體與AutoCAD內(nèi)部實(shí)體沒有任何區(qū)別。由ObjectARX定義的外部命令與AutoCAD內(nèi)部命令的執(zhí)行機(jī)制是一樣的。
AutoLISP是AutoCAD內(nèi)部解釋型的API語言,它適用于交互式程序的二次開發(fā),它不是面向?qū)ο蟮恼Z言,而是一種人工智能語言[1]。AutoLISP語言具有強(qiáng)大的圖形和數(shù)據(jù)處理能力,是工程專業(yè)人員常用的AutoCAD二次開發(fā)工具。
通過AutoLISP,用戶可以充分調(diào)用AutoCAD的現(xiàn)有資源,修改現(xiàn)有命令或者開發(fā)自己的新命令。也可以修改AutoCAD命令的功能,擴(kuò)充其用途。VisualLISP是AutoLISP語言的更新和加強(qiáng),提供了與AutoCAD ActiveX對(duì)象的接口函數(shù),擴(kuò)展了AutoLISP應(yīng)用程序的功能。
VisualLISP具有獨(dú)立的集成開發(fā)環(huán)境(IDE),改善了Active X和AutoCAD對(duì)象模型之間的接口特性,大幅縮短了應(yīng)用程序的開發(fā)周期。VisualLISP編譯成的二進(jìn)制代碼無法直接讀取,所以它生成的應(yīng)用程序更安全。VisualLISP程序調(diào)試過程簡潔,效率高。編譯后程序的運(yùn)行效率比解釋型AutoLISP程序快幾倍[2]。
對(duì)于簡單的AutoLISP程序,或用DEFUN函數(shù)定義的簡單用戶函數(shù),AutoLISP程序的執(zhí)行過程可直接在AutoCAD環(huán)境中的“命令:”提示符運(yùn)行。對(duì)于復(fù)雜的AutoLISP程序,需采用VisualLISP編輯器先編譯好,在用LOAD函數(shù)裝載后運(yùn)行。如果程序中沒有DEFUN函數(shù),則便加載邊運(yùn)行。否則裝載后只在“命令:”提示符下輸入命令名或函數(shù)名即可運(yùn)行[3]。
AutoLISP 程序編輯及運(yùn)行過程如下:
(1)啟動(dòng) AutoCAD。
(2)打開AutoCAD的工具菜單,選擇AutoLISP(I)的VisualLISP編輯器(V)。
(3)打開VisualLISP(V)編輯器,新建文件編寫程序。
(4)完成程序編寫并保存。
(5)打開VisualLISP編輯器(V),加載所保存的文件。
(6)在_$提示符下,用LOAD函數(shù)加載程序,其格式為:(LOAD"文件名.LSP")加載成功返回函數(shù)名。
(7)在_$符號(hào)下或在AutoCAD的“命令:”提示符下執(zhí)行函數(shù)。
(1)《機(jī)械制圖》中指引線標(biāo)注樣式有3種形式。第一種樣式如圖1中的(a)所示,數(shù)字下面加下劃線。第二種樣式如圖1中的(b)所示,數(shù)字外面畫圓圈表示。第三種樣式如圖1中的(c)所示,數(shù)字直接標(biāo)注在指引線末端即可。
圖1 指引線標(biāo)注
通過AutoLISP編程,可以實(shí)現(xiàn)自動(dòng)繪制需要的圖框樣式,部分程序代碼如圖2所示。
圖2 指引線標(biāo)注樣式程序代碼
(2) 在裝配圖中,一般零件的指引線標(biāo)注末端為小黑點(diǎn)。薄片類零件在剖視圖中,通過涂黑畫法替代剖面線,這時(shí)指引線的末端用實(shí)心三角形箭頭代替小黑的。如圖3所示。
圖3 常見指引線末端樣式
在AutoCAD中是通過DIMBLK(系統(tǒng)變量)來設(shè)置尺寸線末端顯示的箭頭塊。其類型為字符串,保存位置在圖形,通過""來設(shè)置其初始值。其中常用的形式為實(shí)心閉合"";點(diǎn)"_DOT";小點(diǎn)"_DOTSMALL";空心點(diǎn)"_DOTBLANK";空心小點(diǎn)"_SMALL"和無"_NONE"。要恢復(fù)默認(rèn)設(shè)置(實(shí)心閉合箭頭顯示),請(qǐng)輸入單個(gè)句點(diǎn) (.)。根據(jù)需要還可以輸入用戶定義的箭頭塊名稱。其中要注意的是注釋性塊不能用作標(biāo)注或引線的自定義箭頭[4]??梢酝ㄟ^AutoLISP setvar函數(shù)來給系統(tǒng)變量賦值,從而改變箭頭塊的形狀。
(3) 一級(jí)和二級(jí)圓柱齒輪減速器是《機(jī)械制圖》和《機(jī)械設(shè)計(jì)》課程里面要畫的大作業(yè),由于零件的種類特別多,所以指引線的編號(hào)數(shù)字也多。學(xué)生畫的時(shí)候普遍感覺到難度較大,特別是在繪制零件序號(hào)的時(shí)候比較麻煩。在原有的AutoCAD中,一般采用快速引線命令進(jìn)行標(biāo)注。每次都需要手動(dòng)修改每個(gè)零件的序號(hào),標(biāo)注起來非常的繁瑣,效率低下。通過指引線標(biāo)準(zhǔn)命令的二次開發(fā),使用起來方便快捷,提高了繪圖效率。
通過AutoLISP編程,可以自動(dòng)實(shí)現(xiàn)零件序號(hào)數(shù)字的自動(dòng)增加,大幅提高繪圖速度。部分程序代碼如圖4所示。
圖4 自動(dòng)標(biāo)號(hào)程序代碼
AutoCAD是目前較為先進(jìn)的計(jì)算機(jī)輔助設(shè)計(jì)軟件之一,其功能強(qiáng)大、易學(xué)易用,并具有良好的開放性。但作為通用軟件無法解決實(shí)際使用中出現(xiàn)的所有問題。以AutoLISP語言作為開發(fā)工具, VisualLISP編譯環(huán)境作為開發(fā)平臺(tái),對(duì)AutoCAD進(jìn)行二次開發(fā),以滿足用戶的實(shí)際需要,以達(dá)到事半功倍的效果。