autolisp編程心得

autolisp編程心得

ID:12341005

大小:38.50 KB

頁數(shù):6頁

時(shí)間:2018-07-16

autolisp編程心得_第1頁
autolisp編程心得_第2頁
autolisp編程心得_第3頁
autolisp編程心得_第4頁
autolisp編程心得_第5頁
資源描述:

《autolisp編程心得》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、Autolisp編程心得.txt如果不懂就說出來,如果懂了,就笑笑別說出來。貪婪是最真實(shí)的貧窮,滿足是最真實(shí)的財(cái)富。幽默就是一個(gè)人想哭的時(shí)候還有笑的興致。1.養(yǎng)成良好的書寫習(xí)慣眾所周知,Lisp是一種表結(jié)構(gòu)語言,括號必須成對出現(xiàn),在調(diào)試時(shí)往往為遺漏了一個(gè)括號大費(fèi)周折,所以,養(yǎng)成一個(gè)好的編程習(xí)慣是學(xué)好Lisp所必須的。⑴選擇一個(gè)較好的編輯器,這是一個(gè)基本條件,建議使用VisualLisp編輯器或Lisplink等專用編輯器,此類編輯器可以對函數(shù)突出顯示。⑵按Lisp(DCL)專有格式書寫,并經(jīng)常對程序進(jìn)行“格式化”,及時(shí)發(fā)現(xiàn)語法錯(cuò)誤,

2、并有利于調(diào)試是查找錯(cuò)誤。⑶使用自定義函數(shù),并輔助以適當(dāng)?shù)米⑨?,在較大程序中按功能使用自定義函數(shù)可以使得程序條理化。2.函數(shù)中循環(huán)與轉(zhuǎn)移的使用在高級語言中一般有類似“goto”的語句實(shí)現(xiàn)轉(zhuǎn)移,在AutoLisp中沒有轉(zhuǎn)移的函數(shù)。我們可以使用自定義函數(shù)實(shí)現(xiàn)轉(zhuǎn)移,用if及cond輔助實(shí)現(xiàn)條件轉(zhuǎn)移。當(dāng)我們需要實(shí)現(xiàn)在滿足一定條件時(shí)進(jìn)行循環(huán)的功能,一般使用while函數(shù),但有時(shí)需要判斷的條件較復(fù)雜時(shí),使用while函數(shù)往往不能實(shí)現(xiàn)或使得程序不夠簡潔。這時(shí)我們可以使用“轉(zhuǎn)移”,將需要實(shí)現(xiàn)的功能作為(子)函數(shù),使用恰當(dāng),可以在程序中任意“轉(zhuǎn)移”。一

3、般認(rèn)為,當(dāng)一段代碼在不同處重復(fù)使用時(shí),我們才會使用子函數(shù)定義,其實(shí),利用函數(shù)的更大的優(yōu)點(diǎn)是使得程序更加結(jié)構(gòu)化。這就使得我們不必拘泥于程序中的循環(huán)語句,而使用函數(shù)的循環(huán)調(diào)用,輔助適當(dāng)?shù)呐袛?,?shí)現(xiàn)“轉(zhuǎn)移”,如A->B->A。當(dāng)然也可以進(jìn)行自身調(diào)用,構(gòu)成一個(gè)“標(biāo)準(zhǔn)的”循環(huán)。如例一中,“程序執(zhí)行完畢返回”與“空選返回”兩種情況如果使用循環(huán)語句,其條件是完全不同的,而將函數(shù)本身作為子函數(shù)調(diào)用,程序簡潔明了。3.initget函數(shù)中關(guān)鍵字“”(空格)的使用空格可以被用作關(guān)鍵字,一般多用來定義鼠標(biāo)右鍵退出。⑴當(dāng)用戶輸入函數(shù)不支持控制位(如ents

4、el、nentsel、nentselp)時(shí),可直接使用“(initget"")”。⑵當(dāng)用戶輸入函數(shù)支持控制位(如getpoint等)時(shí),可使用“(initget1"")”禁止空輸入,而將回車等空輸入作為關(guān)鍵字使用。⑶當(dāng)同時(shí)使用其它關(guān)鍵字時(shí),應(yīng)該將空格作為一系列關(guān)鍵字的最后一個(gè),用“(initget"C")”(兩個(gè)空格)調(diào)用,否則無效。見例一。************************************************;;例一(defunett_ct()(initget"C");關(guān)鍵字“C”及空格(setqs0(e

5、ntsel"設(shè)置顏色C/選取文本:"))(cond((=s0"C")(ett_col));轉(zhuǎn)設(shè)置顏色子函數(shù)((=s0"")nil);空格退出((and(=(types0)'LIST);選擇實(shí)體(=(cdr(assoc0(entget(cars0))))"TEXT");判別文本)...;操作內(nèi)容(ett_ct);編輯后返回選擇)(t(ett_ct));空選返回選擇))************************************************有時(shí)需要進(jìn)行復(fù)雜的判斷,使用如“(=s0"")”語句可能不能準(zhǔn)確判別輸

6、入的空格關(guān)鍵字與空選擇,可以使用“(=(types0)'STR)”語句。4.Lisp的暫停與while的特殊使用Lisp一般在交互輸入時(shí)才會暫停,如果只需要實(shí)現(xiàn)屏幕顯示暫停,可使用grread函數(shù),grread函數(shù)對所有合法的輸入設(shè)備均會作出反應(yīng),有時(shí)我們只希望對鍵盤有反應(yīng),可使用while函數(shù)進(jìn)行循環(huán)。*******************(princ"PressENTERtocontinue:")(while(/=(car(grread))2))*******************while用于滿足一定條件的循環(huán),其標(biāo)準(zhǔn)語

7、法為:(whiletestexpr[expr...])其中expr解釋為“在testexpr為nil之前要求值的一個(gè)或多個(gè)表達(dá)式”,為可選項(xiàng)(在R14之前沒有方括號,但仍為可選項(xiàng))。正常我們使用while時(shí),總會有expr項(xiàng),更多的時(shí)候,我們是為了expr項(xiàng)才會使用這種循環(huán)語句,所有我們往往有expr項(xiàng)是不可缺少的感覺。這里我們使用while函數(shù)的語法是while函數(shù)的特例,即沒有expr項(xiàng)的情況。如果希望對鼠標(biāo)右鍵同時(shí)反應(yīng),可以使用:*******************(princ"PressENTERtocontinue:

8、")(while(and(/=(setqa(car(grread)))2);鍵盤(/=a11);鼠標(biāo)右鍵(SHORTCUTMENU=0)(/=a25);鼠標(biāo)右鍵(SHORTCUTMENU≠0)))*******************

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時(shí)可能會顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。