莫玉梅 甘文的
(肇慶科技職業(yè)技術(shù)學(xué)院,廣東 肇慶 526114)
如何實(shí)現(xiàn)直線特征的自動標(biāo)注
莫玉梅 甘文的
(肇慶科技職業(yè)技術(shù)學(xué)院,廣東 肇慶 526114)
文章介紹在AutoCAD中如何實(shí)現(xiàn)直線特征的自動標(biāo)注。利用二次開發(fā)技術(shù)的手段, 運(yùn)用AutoLISP編程、開發(fā)新的命令,在AutoCAD實(shí)現(xiàn)直線特征的自動標(biāo)注,為使用AutoCAD的用戶提供更方便、更快捷、更高效、更準(zhǔn)確的命令,從而提高繪圖效率和準(zhǔn)確性。
AutoCAD;AutoLISP;二次開發(fā);自動標(biāo)注
AutoCAD是目前微機(jī)上應(yīng)用最為廣泛的通用交互式計(jì)算機(jī)輔助繪圖與設(shè)計(jì)軟件之一。在模具設(shè)計(jì)與制造中,AutoCAD以其強(qiáng)大的圖形支撐能力和開放的結(jié)構(gòu)體系,成為CAD市場的不可缺少的軟件。而在AutoCAD出圖必須對圖素進(jìn)行標(biāo)注,標(biāo)注在畫圖的過程中占用了大量的時間,更是一個容易出錯的環(huán)節(jié)。因此,對標(biāo)注進(jìn)行開發(fā)是很有必要的,特別是在較為復(fù)雜的模具零件。
希望在VLISP集成環(huán)境下運(yùn)動AutoLISP語言設(shè)計(jì)開發(fā)一個新程序,使得AutoCAD產(chǎn)生一個具有新功能的命令。該命令的執(zhí)行是以0點(diǎn)(0,0)為基準(zhǔn),針對用戶所選擇的范圍內(nèi)的同一屬性(顏色、線型)的直線特征進(jìn)行自動快速標(biāo)注,標(biāo)注過程實(shí)現(xiàn)統(tǒng)一引線、統(tǒng)一文本,同時要避免標(biāo)注的重復(fù)、避免文本重疊。為了圖形的清晰,要求避免在圖形內(nèi)出現(xiàn)尺寸標(biāo)注。為了打印的美觀,還要求文本字高比例按圖形大小自動調(diào)節(jié)。標(biāo)注速度決定于計(jì)算機(jī)處理數(shù)據(jù)的快慢,如圖 1所示的所有直線的標(biāo),要在20秒內(nèi)便可完成。
圖1 直線的標(biāo)注
圖2 程序流程圖
(1)程序名為:ad.lsp
(2)程序的編寫:
該程序相對復(fù)雜,運(yùn)用了很多函數(shù)和變量,運(yùn)用了AutoLISP大部分語法。此程序的特色就是運(yùn)用了子程序,使得程序簡化了許多。下面介紹一些程序編寫過程中的重點(diǎn),部分程序如下。
1)實(shí)現(xiàn)從判斷有否記錄到獲得plmax、plmin、pwmax、pwmim、exmax、exmin的過程
判斷紀(jì)錄有無,如有have=1*****
3)調(diào)用子程序
在此調(diào)用了四次子程序,子程序名分別為:ss1、dim0,每個程序都被調(diào)用了兩次。
ss1用來判斷在直線的選擇集的線是水平線還是垂直線,再分開兩種線放在不同的選擇集里;再對水平線或垂直線兩個選擇集進(jìn)行判斷是否有相同的x值或y值,有的情況存進(jìn)一個選擇集里,再對選擇集中相同的刪除,無的情況也存進(jìn)一個選擇集,再從兩個選擇集中獲得所有要標(biāo)注的點(diǎn)的x、y值的選擇集,并排序,
dim0用來對上述所得到的最后一個選擇集進(jìn)行標(biāo)注。
水平線和垂直都調(diào)用相同子程序,卻得到了不同的結(jié)果,是因?yàn)樵谡{(diào)用子程序時設(shè)置不同的變量。如以下程序,調(diào)用了相同的子程序,但其變量是不同的。
(ss1 linehor 1 2 0 1 car cadr) (dim0 car);
調(diào)用子程序ss1針對水平線,再調(diào)用子程序dim0進(jìn)行尺寸標(biāo)注
;***********************垂直線的子程序****************
(ss1 linever 2 1 1 0 cadr car) (dim0 cadr);調(diào)用子程序ss1針對垂直線,再調(diào)用子程序dim0進(jìn)行尺寸標(biāo)注
4)用于標(biāo)注的子程序
(1)本程序變量很多,占據(jù)很多的內(nèi)存,所以要在程序開始把它們都處理成“局部變量”。
(2)程序函數(shù)很多,編程時要注意充分運(yùn)用好。
(3)程序的語法結(jié)構(gòu)有些復(fù)雜,要注意每一個語法細(xì)節(jié)。
(4)靈活調(diào)用子程序,會使得程序更簡練。
(5)要注意讀文件和寫文件過程。
新命令程序完成之后,還要對程序進(jìn)行必要的調(diào)試,調(diào)試成功了,該命令的功能開發(fā)才算完畢,它使用則分為兩個步驟:
(1)加載
當(dāng)回到AutoCAD環(huán)境下,用Load函數(shù)裝載就可以執(zhí)行了。執(zhí)行時,如果程序中沒有defun函數(shù),系統(tǒng)便邊裝入邊運(yùn)行;若有defun定義的命令或函數(shù),裝載后只需在Command:(如果是中文AutoCAD,Command被漢化為了“命令:”)提示符下鍵入defun函數(shù)定義的命令或或函數(shù)名即可運(yùn)行相應(yīng)的命令或函數(shù)。
(2)使用
在加載完畢之后,直接輸入新命令的程序名既可使用。
[1] 孫江宏. AutoCAD 2000 應(yīng)用與開發(fā)技巧[M].北京:清華大學(xué)出版社.
[2] 孫江宏.Visual LISP R14-2000 編程與應(yīng)用[M].北京:清華大學(xué)出版社.
[3] 湯峻.AutoCAD 2000 高級應(yīng)用與 Visual LISP開發(fā)寶典[M].北京:人民郵電出版社.
[4] 郭劍峰.用Visual LISP開發(fā)AutoCAD 2000應(yīng)用程序[M].北京:人民郵電出版社.
[5] 李學(xué)志.Visual LISP程序設(shè)計(jì)(AutoCAD 2006)[M].北京:清華大學(xué)出版社.
[6] 用Visual LISP開發(fā)AutoCAD 2004應(yīng)用程序[M].北京:科學(xué)出版社.
How to the antomatic dimension of line feature
This article describes how to achieve a straight line features of AutoCAD in the automatic annotation,the use of secondary development of technical means, the use of AutoLISP programming, development of new command.to achieve a straight line features in AutoCAD automatically marked for the use of AutoCAD users a more convenient,Faster,more efficient, more accurate orders,thereby enhancing the efficiency and accuracy of the drawing.
AutoCAD AutoLISP Secondary development Auto-annotation
TP311.52
A
1008-1151(2011)08-0011-03
2011-06-08
莫玉梅(1982-),女(壯族),廣西南寧人,肇慶科技職業(yè)技術(shù)學(xué)院機(jī)械工程助教,廣東工業(yè)大學(xué)在讀碩士,研究方向?yàn)檐浖伍_發(fā)。