




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、AutoLISP培訓教程單元一:AutoLISP主角瀟灑登場 一. AutoLISP 是何方神圣? 1、AutoLISP是AutoCAD的最佳拍檔! 2、AutoLISP內(nèi)含于AutoCAD軟件內(nèi),不用另外花錢買! 3、AutoLISP是強化AutoCAD最好、最直接的程序語言! 4、AutoLISP易學、易用,即使不會程序設(shè)計的AutoCAD使用者,都能在最短的 時間內(nèi),寫出令人驚訝、贊嘆的功能! 若說AutoLISP的出現(xiàn),是替 AutoCAD 創(chuàng)造一片天的最大功臣,實不為過一點也不夸張! 5、AutoLISP希望您去學習它、改善它、發(fā)揮它、享受它.真的!它的威力、魅力無窮! 二. Aut
2、oLISP 程序語言的特質(zhì)分析:學習AutoLISP是非常容易的,對初學者而言,即使沒有學習過任何的程序語言,都能很快的上手,寫出精彩漂亮的AutoLISP程序!語法簡單:不用特殊的變量宣告,非常富有彈性,比起其它的程序語言,它的語法可說是非常簡單而有其獨特的風格!功能函數(shù)強大:除一般性的功能函數(shù)外,又擁有為數(shù)不少控制配合AutoCAD的特殊函數(shù),再加上AutoLISP可直接呼叫執(zhí)行所有AutoCAD的指令,以及掌握運用所有的AutoCAD系統(tǒng)變量,功能之強大令人欣喜不已!撰寫的環(huán)境不挑剔:只要是一般的文書編輯軟件都適用! 如:Windows的記事本、PE2、PE3、DW3、書中仙、漢書、ED
3、IT.等直譯式程序: 不用再作編譯,即寫即測、即測即用,馬上可以在AutoCAD中響應(yīng)效果,馬上就有成就感!橫跨各作業(yè)平臺:悠然自得,雖然AutoCAD有DOS、Windows版本之分但是AutoLISP卻可在不改寫的原貌下,加載與執(zhí)行!三.撰寫 AutoLISP 的動機?1、欲強化 AutoCAD 原有指令時. 2、欲創(chuàng)造更有用的 AutoCAD 新指令. 3、欲簡化繁瑣的環(huán)境設(shè)定或繪圖步驟時. 4、欲處理參數(shù)式繪圖時. 5、欲做圖面資料讀文件、寫文件. 6、欲做 AutoCAD 演示文稿展示時. 7、欲達到真正靈活掌控 AutoCAD 時. 8、欲提升自己跨上 AutoCAD 高手列車時.
4、 四.AutoLISP 的效益評估?1. 對公司負責人或設(shè)計主管而言:A. 也許某員工或干部花了20個小時撰寫一個AutoLISP程序,表面上,這將近三天的時間,他連一張圖都沒有畫,甚至可能偶有發(fā)呆、沉思,若此程序一天可以替公司繪圖部門節(jié)省1小時繪圖時間,那算一算,只要20天就抵銷開發(fā)成本,而20天以后都是賺的,用的愈久,省的愈多! B. 若員工皆有此動力,在不影響正常工作,鼓勵都來不及,那有壓抑的道理,甚至還要派遣優(yōu)秀人員出去受訓,學習更好的設(shè)計技巧與創(chuàng)意呢?! C. 千萬不要因為您的不懂或壓抑,SHOW您的權(quán)威與POWER,如此,不但對員工造成打擊,甚至您可能成為阻礙了公司計算機化進步的罪
5、魁禍首 D. 當然,若要撰寫的程序很多,內(nèi)部設(shè)計人員的程序功力距離太遠,達成需求的時間反而變得遙遙無期,那倒不如求助于市面上已有的相關(guān) AutoCAD 支持軟件。 2. 對設(shè)計人員而言:A. 得到一筆提升績效獎金呢? 當然,無形中,AutoCAD 高手的封號也將黃功力又往前邁出了一大步,對個人的成長幫助匪淺,幸運的話,搞不好還可以袍加身,不亦樂乎! B. 半桶水、響叮當,千萬不要因為會寫 AutoLISP 程序而自傲、孤僻、囂張起來,功力的增長,只是讓您有更多服務(wù)他人、服務(wù)公司的機會,若自恃過重,寧可不要! C. AutoLISP 程序功力的累進,是無遠弗屆的,千萬不要孤芳自賞,人外有人,天外
6、有天,也許您覺得是寶貝加三級的程序,只是其它設(shè)計師基本程序中的一部份罷了! D. 既然 AutoLISP 是 AutoCAD 的最大功臣,當然不會輕易被舍棄,如此,您的學習,保證不會白費! E. 精益求精、虛心求教、用心學習、觀摩、決心成為高手 3.對程序本身而言:A. 少少的幾行,卻可能有大大滿意的時候! B. 充份掌握了控制、創(chuàng)造 AutoCAD 的尚方寶劍,讓您在 AutoCAD 的設(shè)計運作中得心應(yīng)手,享受無比的快樂與成就感! 五.如何有效的學習 AutoLISP ? 1、 先由小程序著手,認識AutoLISP語法規(guī)定! 2、瀏覽所有的AutoLISP功能函數(shù),重要的功能函數(shù)要熟記腦海,
7、俗語說的好一回生,二回熟,除非您不用心,否則沒有學不好的道理! 3、要懂得偷懶:不要認為在繪圖的過程中,繁瑣的步驟是合理的,困難的繪圖過程是必須忍耐的,試著用AutoLISP解決看看! 4、多觀摩別人的程序設(shè)計,吸取精華,像海棉一樣=>吸、吸、吸! 5、動手寫程序比用眼睛看程序,更能夠領(lǐng)略深記腦海! 6、隨時隨地整理您的程序,并加以批注,以免因時間的飛逝,當時用心的成果也煙消云散,忘的一乾二凈! 7、決心是學好 AutoLISP 最重要的關(guān)鍵! 8、期許自己,要由操作者變成創(chuàng)造者! 返回單元二:AutoLISP的關(guān)鍵、基本結(jié)構(gòu)及語法一、學好 AutoLISP 的關(guān)鍵、 基本結(jié)構(gòu)與語法:1
8、. AutoLISP 程序語言的特質(zhì) A.語法簡單B.功能函數(shù)強大C.撰寫的環(huán)境不挑剃D.直譯式程序,即寫即測、即測即用E.橫跨 AutoCAD 各作業(yè)平臺,悠然自得 (注:以上五點,讀者可以參考上一章的剖析!)2.學好 AutoLISP 的關(guān)鍵:充份掌握語法結(jié)構(gòu)&功能函數(shù)的搭配!3.重要的 AutoLISP 的基本語法結(jié)構(gòu)規(guī)則1: 以括號組成表達式,、相對稱左右括號數(shù)一定要成雙成對規(guī)則2: 表達式型態(tài):(操作數(shù) 運算子 運算子 運算子)1.1 操作數(shù)包括功能函數(shù)&自定函式1.2 運算子(自變量)包括:A.整數(shù)(Integer) 如 8,-17,500,9999 .B.實數(shù)(R
9、eal) 如 8.5,-17.456 .C.字符串(String) 如 "AutoCAD","123"D.串行(List) 如 ("a" "b" "c"),(x y)E.像素名稱代碼 如 <entity name: 6000f262>F.檔案代碼 如 <file:#12438>.G.選擇群集代碼 如 <Selection set:1>規(guī)則3:表達式中的運算子,可以是另一表達式或子程序規(guī)則4: 多重的括號表達式,運算的先后順序是由內(nèi)而外、由左而右規(guī)則5: 以檔案
10、型態(tài)存在的 AutoLISP 程序(ASCII 檔案),其擴展名必須是.lsp規(guī)則6: 撰寫的環(huán)境,只要是一般的文書編輯軟件、記事本,可編輯 ASCII 檔案者都適用規(guī)則7: 以 defun 功能函數(shù)定義新的指令或新的功能函式規(guī)則8: 新定義的功能函式名稱,若為C:函式名,則此函式可為 AutoCAD新指令規(guī)則9: 加載 AutoLISP 程序的作法:=> 指令:后直接鍵入 (load "LISP主檔名")規(guī)則10: AutoLISP 程序中,在分號 ;后的內(nèi)容均為批注,程序不處理,適時的增加批注,將使程序更具可看性、學習性及完整性規(guī)則11: AutoLISP 最常用
11、的變量型態(tài)是整數(shù)、實數(shù)、字符串、點串行四種,變量的型態(tài)依據(jù)設(shè)定值而自動定義,變量會一直儲存該值,直到被重新設(shè)定值或繪圖結(jié)束自動消失規(guī)則12:以 setq 功能函數(shù)設(shè)定變量值 (setq 變量名稱 設(shè)定值)規(guī)則一三:欲在 AutoCAD 的環(huán)境中,查看一變量值,指令:下鍵入!變量名即可規(guī)則14:以(defun C:函式名(自變量 / 變量) .)程序中,程序中的變量若在/右邊變量內(nèi),則稱為區(qū)域變量,否則為整體變量二、學好 AutoLISP 的關(guān)鍵: 充份掌握語法結(jié)構(gòu)&功能函數(shù)的搭配! 其時這個關(guān)鍵亦是學習其它程序語言的關(guān)鍵.*語法結(jié)構(gòu)AutoLISP 的語法結(jié)構(gòu)規(guī)定的并不多,變量不用事先
12、定義及宣告,讀者可熟記下一單元有關(guān)重要的 AutoLISP基本語法結(jié)構(gòu),十四條設(shè)計上要求的規(guī)則 *功能函數(shù)AutoLISP 之所以能功能如此強大,都有賴功能函數(shù),其成員共約200個: 1、一般性函數(shù)170個 2、ADS 定義特殊函數(shù)9個 3、配合 DCL 交談框設(shè)計函數(shù) 22個 各功能函數(shù)在使用上要求配合的運算子(自變量)型態(tài),均有其規(guī)定,當然,您可不能亂給!例如: 指令:(+ 1 2 3 "ABC")傳回:error : bad argument type (自變量型態(tài)錯誤)因為+函數(shù)不接受字符串,而 "abc" 正是字符串指令:(rtos "
13、;abc") 傳回:error : bad argument type (自變量型態(tài)錯誤)因為rtos函數(shù)只接受實數(shù)轉(zhuǎn)字符串詳細內(nèi)容可參考下一章快速瀏覽 AutoLISP 功能函數(shù)至于各功能函數(shù)詳細的語法與實例應(yīng)用,讀者請參閱本書第三篇AutoLISP功能函數(shù)詳解三、重要的 AutoLISP 的基本語法結(jié)構(gòu):規(guī)則1:以括號組成表達式,左右括號數(shù)一定要成雙成對、相對稱請依序在指令:列 (或指令:) 后面直接鍵入以下表達式指令:(+ 1 2 3 4 5) 傳回加總和一五指令:(max 14.5 8.9 35) 傳回最大值35指令:(menucmd "p1=*") 顯示
14、拉下POP1指令:(getint "Enter Real:") 傳回Enter Real:要求輸入一個實數(shù)指令:(setq a (* 12.5 4) 傳回相乘值 50,同時設(shè)定給變量 a指令:!a 響應(yīng)50 (注:! 號可用來查詢變量值)指令:(min 75 a 63) 響應(yīng)最小值50 (因為變量值a代表50)錯誤的范例:指令:(setq a (* 12.5 4)1> 傳回1>表示少了一個括號1> ) 此時,只要再補上一個 ) 即可指令:(setq a (* 12.5 42> 傳回2>表示少了二個括號2> ) 此時,只要再補上二個 ) 即
15、可規(guī)則2:表達式型態(tài) (操作數(shù) 運算子 運算子 運算子 .)或 (函數(shù)(式) 自變量 自變量 自變量 .)或 (函數(shù)(式) 元素 元素 元素 .)1.1 操作數(shù)包括功能函數(shù)&自定函式功能函數(shù): 如上練習中的 +、max、menucmd、getint、 setq、*、min,詳細內(nèi)容可參考下一章快速瀏覽 AutoLISP 功能函數(shù)&第三篇 AutoLISP功能函數(shù)詳解自定函式: 由設(shè)計者自行定義的新函式或子程序1.2 運算子(又稱自變量或元素)包括:A.整數(shù)(Integer): 如8,-17,500,9999正常范圍: 2的16次方,介于-32768與+32767之間特殊范圍:
16、若以 float 函數(shù)將其轉(zhuǎn)為實數(shù),則范圍2的32次方, 介于-2147483648與+2147483647之間B.實數(shù)(Real): 如8.5,-17.456正常范圍: 帶有小數(shù)點的數(shù),精度可達 14 位有效數(shù)字C.字符串(String): 如 "AutoCAD","123","Enter Real:","7.5",正常范圍: 以雙引號內(nèi)夾字符為認定,字符數(shù)不受限制D.串行(List): 如 ("a" "b" "c"),(x y),(x y z),(&q
17、uot;a" 8 3.5),.正常范圍: 以左右括號內(nèi)夾元素為認定,元素型態(tài)非常彈性使用頻率: 在 AutoLISP 程序設(shè)計中應(yīng)用非常高范例說明 : ("a" 8 3.5 kk (1 2) 表示此串行內(nèi)有五個元素 "a"表示字符串a(chǎn)、8表示整數(shù)8、3.5表示實數(shù)3.5、kk表示變量kk、(1 2)表示串行(1 2)2D 點坐標(x y) 表示法 => 以二實數(shù)形成串行3D 點坐標(x y z) 表示法 => 以三實數(shù)形成串行E.像素名稱代碼:如 <entity name: 6000f262> .使用范圍: AutoCA
18、D 會自動賦予像素指向代碼,透過此代碼可找到像素的數(shù)據(jù)庫記錄范例說明: (setq en (entlast) 傳回 <entity name: 60000062>(entget en) 可找到像素的數(shù)據(jù)庫串行F.檔案代碼: 如<file:#12438>使用范圍: 開啟(open)檔案作讀檔(r)、寫檔(w)使用時,所產(chǎn)生的代碼,如下:范例說明: (setq ffr (open "test.txt" "r") 響應(yīng) <file:#24一三8>(setq ffw (open "abc.txt" &quo
19、t;w") 響應(yīng) <file:#34812>G.選擇群集代碼: 如<Selection set:1>、<Selection set:1>使用范圍: 一個或數(shù)個像素所形成的選擇集范例說明: (setq ss (ssget)選取對象: (可選擇物體)選取對象: (可選擇物體)選取對象: (按 ENTER 鍵) 響應(yīng) <Selection set:1>規(guī)則3 :表達式中的運算子,可以是另一表達式或子程序功能函數(shù)使用語法:(strcat 字符串1 字符串2 字符串3 .) 字符串結(jié)合功能函數(shù)(getstring 提示) 要求鍵入一個字符串(rt
20、os 實數(shù)) 將實數(shù)轉(zhuǎn)換成字符串范例說明1: (strcat "abc" "123" "LISP") 傳回:"abc123LISP"范例說明2: (strcat "abc" (getstring "Enter String:" ) (rtos 123.45)執(zhí)行結(jié)果: Enter String: 鍵入任一字符串,假設(shè)是鍵入 *HELLO*響應(yīng) "abc*HELLO*123.45"本例中的strcat函數(shù)在語法中要求的運算子必須是字符串型態(tài)運算子1= &qu
21、ot;abc" 是正常的字符串運算子運算子2= 表達式 (getstring "Enter String:") 傳回結(jié)果是一字符串 "*HELLO*"運算子3= 表達式 (rtos 123.45) 傳回結(jié)果是一字符串 "123.45"規(guī)則4:多重的括號表達式,運算的先后順序是由內(nèi)而外、由左而右范例說明: 請將10.25 + 17 - 一三.2 / 7的結(jié)果,設(shè)定給變量kk,并轉(zhuǎn)換成AutoLISP 的表達式解法技巧A:1:運用二分法、加括號:(10.25 + 17) - (一三.2 / 7)2:操作數(shù)往前提: kk = (-
22、 (10.25 + 17) (一三.2 / 7)3:操作數(shù)再往前提:kk = (- (+ 10.25 17) (/ 一三.2 7)4:轉(zhuǎn)換完成: (setq kk (- (+ 10.25 17) (/ 一三.2 7)解法技巧B:1:運用二分法、加括號:(10.25 + (17 - (一三.2 / 7)2:操作數(shù)往前提: kk = (+ 10.25 (17 - (一三.2 / 7)3:操作數(shù)再往前提:kk = (+ 10.25 (- 17 (/ 一三.2 7)4:轉(zhuǎn)換完成: (setq kk (+ 10.25 (- 17 (/ 一三.2 7)規(guī)則5:以檔案型態(tài)存在的AutoLISP程序(ASCI
23、I檔案),其擴展名必須是.LSP規(guī)則6:撰寫的環(huán)境,只要是一般的文書編輯軟件,可編輯 ASCII 檔案者都適用如:PE2、PE3、DW3、書中仙、漢書、EDIT、記事本.等規(guī)則7:以 defun 功能函數(shù)定義新的指令或新的功能函式 (注:自變量及區(qū)域變量可省略)程序結(jié)構(gòu)型態(tài):(defun 函式名稱(自變量/區(qū)域變量): : : 程序內(nèi)容: :)規(guī)則8:新定義的功能函式名稱,若為C:函式名,則此函式可為 AutoCAD 新指令(注:自變量及區(qū)域變量可省略)程序結(jié)構(gòu)型態(tài): (defun C:KK(自變量/區(qū)域變量): :程序內(nèi)容: : : :)則加載此 LISP 程序后,可在 指令: 后直接鍵入新
24、定義的 KK 指令規(guī)則9: 加載AutoLISP程序的作法:指令:后直接鍵入 (load "LISP主檔名") 注:load 與字符串間的空格,可有可無注:load 與雙引號間的空格,可有可無 (load"LISP主檔名")范例: 在 c:lsptools 目錄下有一LISP程序tt.lsp,而您目前的工作目錄在c:dwg下若環(huán)境設(shè)定之支持檔案搜尋路徑有指定到c:lsptools目錄,則欲使用加載tt.lspà 指令:后鍵入 (load "tt") 即可 若環(huán)境設(shè)定之支持檔案搜尋路徑無指定到c:lsptools目錄,則鍵入
25、(load"tt") 后,會出現(xiàn)錯誤訊息如下: 無法開啟tt.lsp做輸入錯誤: 加載失敗(LOAD "tt")*取消*此時您可鍵入: 指令:(load "c:lsptoolstt") 或指令:(load "c:"/lsptools/tt)不可鍵入: (load "c:lsptoolstt")因為在 AutoLISP 結(jié)構(gòu)語法中已經(jīng)用于跳脫碼控制了規(guī)則10:AutoLISP 程序中,在分號 ;后的內(nèi)容均為批注,程序不處理,適時的增加批注,將使程序更具可看性、學習性及完整性范例: pp.lsp 內(nèi)
26、容如下:;本程序功能可快速畫門、窗;設(shè)計者:QQ博士;x,歡迎使用(defun c:pp(): :; 以下為畫門子程序: :; 以下為畫窗子程序,: : : )規(guī)則11:AutoLISP 最常用的變量型態(tài)是整數(shù)、實數(shù)、字符串、點串行四種,變量的型態(tài)依據(jù)設(shè)定值而自動定義,變量會一直儲存該值,直到被重新設(shè)定值或繪圖結(jié)束自動消失規(guī)則12:以 setq 功能函數(shù)設(shè)定變量值 (setq 變量名稱 設(shè)定值)范例: (setq a 100) ;變量 a 值設(shè)定成整數(shù) 100(setq b 123.56) ;變量b值設(shè)定成實數(shù)123.56(setq c "Good morning!") ;
27、變量 c 值設(shè)定成字符串(setq pt1 (getpoint "Enter POINT:") ;變量 pt1 值設(shè)定成點串行(setq pt2 (list a b) ;此時,a值是100,b值是123.56變量pt2值設(shè)定成點串行(100 123.56)(setq pt3 '(297 210) ;變量 pt3 值設(shè)定成點串行 (297 210)注意: 直接設(shè)定成點串行時,不能省略單引號'否則會被誤認 (297 210)又是一個表達式, 297是操作數(shù)而出錯!規(guī)則一三:欲在 AutoCAD 的環(huán)境中,查看一變量值,指令:下鍵入!變量名即可范例: 指令:(se
28、tq aa (+ 100 75) 傳回:175指令:!aa 傳回:175指令:(setq pp (list 90 50) 傳回:(90 50)指令:!pp 傳回: (90 50)指令:!ww 傳回:nil 空值無設(shè)定規(guī)則14:以(defun C:函式名(自變量 / 變量) .)程序中,程序中的變量若在/右邊變量內(nèi),則稱為區(qū)域變量,否則為整體變量(注:在 AutoLISP 中,未賦予值的變量,其值皆響應(yīng) nil)區(qū)域變量于此程序執(zhí)行完畢后,其值自動消失整體變量于此程序執(zhí)行完畢后,其值仍然存在范例: test.lsp 內(nèi)容如下(defun c:tt(/ sa sb sc)(setq sa 100)
29、(setq sb 20)(setq sc 10)(setq sd (+ sa sb sc)回到: 指令:鍵入(load"tt") 傳回:c:tt指令:tt 傳回:一三0指令:!sa 傳回:nil (屬區(qū)域變量)指令:!sb 傳回:nil (屬區(qū)域變量)指令:!sc 傳回:nil (屬區(qū)域變量)指令:!sd 傳回:一三0 (屬整體變量)返回單元三:快速分類瀏覽AutoLISP功能函數(shù)(一)一?看到以下那么多的 AutoLISP 功能函數(shù),洋洋灑灑17大類:1、您第一個念頭,一定驚訝怎么會那么多,您可能快嚇壞了! 2、您第二個念頭,一定會想那么多,怎么記得下來,您可能快放棄了!
30、二?其實,您應(yīng)該要很興奮而充滿信心的,怎么說呢?1、您有那么多的大將協(xié)助您撰寫 AutoLISP 程序,當然左右又逢源,不但輕松, 而且要快樂的不得了! 2、這些函數(shù)只要您先瀏覽有印象, 要用時,再翻查該函數(shù),了解用途語法再加入到您的程序中就可以了! 3、常用的函數(shù),寫久、用久后,自然會深深牢記腦海,想忘都很難,不常用的函數(shù), 若硬要您記下來,相信連高手都很困難,更何況是初學的您! 4、您不用再摸不著頭緒了,因為您幸運的擁有了本書,就是您成功的開始! 第一類 數(shù)學運算功能函數(shù)項目函數(shù)語法 傳 回 1.1 (+ 數(shù)值 數(shù)值 .) 累計實數(shù)或整數(shù)數(shù)值 1.2 (- 數(shù)值 數(shù)值 .) 減去數(shù)值 1.
31、3 (* 數(shù)值 數(shù)值 .) 所有數(shù)值乘積 1.4 (/ 數(shù)值 數(shù)值 .) 第一個數(shù)值除以第二個以后數(shù)值的商 1.5 (1+ 數(shù)值) 數(shù)值+1 1.6 (1- 數(shù)值) 數(shù)值-1 1.7 (abs 數(shù)值) 數(shù)值的絕對值 1.8 (atan 數(shù)值) 反正切值 1.9 (cos 角度) 角度的余弦值,角度值為弳度 1.10 (exp 數(shù)值) 數(shù)值的指數(shù) 1.11 (expt 基數(shù) 指數(shù)) 基數(shù)的指數(shù)值 1.12 (fix 數(shù)值) 將數(shù)值轉(zhuǎn)換為整數(shù)值 1.一三 (float 數(shù)值) 將數(shù)值轉(zhuǎn)換為實數(shù)值 1.14 (gcd 數(shù)值1 數(shù)值2) 二數(shù)值的最大公因子 1.一五 (log 數(shù)值) 數(shù)值的自然對數(shù)值
32、 1.16 (max 數(shù)值 數(shù)值 .) 數(shù)值中的最大值 1.17 (min 數(shù)值 數(shù)值 .) 數(shù)值中的最小值 1.一八 pi 常數(shù)p ,其值約為 3.14一五926 1.19 (rem 數(shù)值1 數(shù)值2) 二數(shù)值的相除的余數(shù) 1.20 (sin 角度) 角度的正旋值,角度值為弳度 1.21 (sqrt 數(shù)值) 數(shù)值的平方根 第二類 檢驗 & 邏輯運算功能函數(shù)項目 函數(shù)語法 傳 回 2.1 (= 表示式1 表示式2) 比較表示式1是否等于表示式2適用數(shù)值及字符串 2.2 (/= 表示式1 表示式2) 比較表示式1是否大于等于表示式 2 2.3 (< 表示式1 表示式2) 比較表示式
33、1 是否 <小于 表示式 2 2.4 (<= 表示式1 表示式2) 比較表示式 1 是否 <=小于等于 表示式 2 2.5 (> 表示式1 表示式2) 比較表示式 1 是否 >大于 表示式 2 2.6 (>= 表示式1 表示式2) 比較表示式1是否大于等于表示式2 2.7 ( 數(shù)值) 傳回:數(shù)值的位not值,(1的補碼) 2.8 (and 表示式1 表示式2) 邏輯and的結(jié)果 2.9 (boole 函數(shù) 整數(shù) 整數(shù)) 位式布爾運算 2.10 (eq 表示式1 表示式2) 比較表示式1與表示式2是否相同, 適用串行比較(實際相同) 2.11 (equal 表
34、示式1 表示式2 差量) 比較表示式1與表示式2是否相同, 差量可省略(內(nèi)容相同) 第三類 轉(zhuǎn)換運算功能函數(shù)項目 函數(shù)語法 傳 回 3.1 (angtof 字符串 模式) 角度值的字符串轉(zhuǎn)成實數(shù) 3.2 (angtos 角度 模式 精度) 角度轉(zhuǎn)成的字符串值 3.3 (atof 字符串) 字符串轉(zhuǎn)成實數(shù)值 3.4 (atoi 字符串) 字符串轉(zhuǎn)成整數(shù)值 3.5 (cvunit 數(shù)值 原始單位 轉(zhuǎn)換單位) 數(shù)值轉(zhuǎn)換單位后的值轉(zhuǎn)換根據(jù) acad.unt 檔案 3.6 (distof 字符串 模式) 依模式將字符串轉(zhuǎn)成實數(shù)值 3.7 (itoa 整數(shù)) 整數(shù)轉(zhuǎn)成字符串 3.8 (rtos 數(shù)值 模式
35、 精度) 實數(shù)轉(zhuǎn)成字符串 3.9 (trans 點 原位置 新位置 位移) 轉(zhuǎn)換坐標系統(tǒng)值 第四類 串行處理功能函數(shù)項目 函數(shù)語法 傳 回 4.1 (append 串行 串行 .) 結(jié)合所有串行成一個串行 4.2 (assoc 關(guān)鍵元素 聯(lián)合串行) 依關(guān)鍵元素找尋聯(lián)合串行中關(guān)系資料 4.3 (car 串行) 串行中的第一個元素通常用來求 x 坐標 4.4 (cadr 串行) 串行中的第二個元素通常用來求 y 坐標 4.5 (caddr 串行) 串行中的第三個元素通常用來求 z 坐標 4.6 (cdr 串行) 除去第一個元素后的串行 4.7 (cons 新元素 串行) 將新元素結(jié)合到串行 4.8
36、 (foreach 名稱 串行 表示式) 將串行的每一元素對應(yīng)至名稱再依表示式執(zhí)行響應(yīng) 4.9 (length 串行) 串行內(nèi)的元素數(shù)量 4.10 (list 元素 元素) 將所有元素結(jié)合成一串行 4.11 (listp 元素) 判斷元素是否為一串 4.12 (mapcar 函數(shù) 串行1 串行2 .) 將串行1、串行2、等串行的 元素配合函數(shù),求得新串行 4.一三 (member 關(guān)鍵元素 串行) 依關(guān)鍵元素(含)以后的串行 4.14 (nth n 串行) 串行的第n個元素 4.一五 (reverse 串行) 將串行元素依順序顛倒過來的串行 4.16 (subst 新項 舊項 串行) 替換新舊
37、串行后的串行 第五類 字符串、字符、檔案處理功能函數(shù)項目 函數(shù)語法 傳 回 5.1 (ascii 字符串) 字符串第一個字符的ASCII碼 5.2 (chr 整數(shù)) 整數(shù)所對應(yīng)的 ASCII 單一字符串 5.3 (close 文件名稱) 關(guān)閉檔案 5.4 (open 文件名 模式) 開啟檔案代碼,準備讀取或?qū)懭胭Y料 5.5 (read 字符串) 串行中的字符串的第一組元素 5.6 (read-char 檔案代碼) 經(jīng)由鍵盤或檔案中讀取單一字符 5.7 (read-line 檔案代碼) 經(jīng)由鍵盤或檔案中讀取一行字符串 5.8 (strcase 字符串 字樣) 轉(zhuǎn)換字符串大小寫 5.9 (strc
38、at 字符串1 字符串2 .) 將各字符串結(jié)合成一字符串 5.10 (strlen 字符串) 字符串構(gòu)成的字符數(shù)(即字符串長度) 5.11 (substr 字符串 起始 長度) 取出子字符串 5.12 (wcmatch 字符串 格式) T或nil,將字符串與通用字符進行比對 5.一三 (write-char 數(shù)值 檔案代碼) 將一ASCII字符寫到檔案或屏幕 5.14 (write-line 字符串 檔案代碼) 將字符串寫到檔案或屏幕上 第六類 等待輸入功能函數(shù)項目 函數(shù)語法 傳 回 6.1 (getangle 基點 提示) 請求輸入十進制角度數(shù)值,響應(yīng)一弳度值提示及參考點可有可無 6.2 (
39、getcorner 基點 提示) 請求輸入另一矩框?qū)屈c坐標 6.3 (getdist 基點 提示) 請求輸入一段距離 6.4 (getint 提示) 請求輸入一整數(shù)值 6.5 (getkword 提示) 請求輸入關(guān)鍵詞 6.6 (getorient 基點 提示) 請求輸入十進制角度,響應(yīng)一弳度值不受angbase、angdir影響 6.7 (getpoint 基點 提示) 請求輸入一個點坐標 6.8 (getreal 提示) 請求輸入一實數(shù) 6.9 (getstring 提示) 請求輸入一字符串 6.10 (initget 位 字符串) 設(shè)定下次 getxxx 函數(shù)的有效輸入 第七類 幾何運
40、算功能函數(shù)項目 函數(shù)語法 傳 回 7.1 (angle 點1 點2) 取得二點的角度弳度值 7.2 (distance 點1 點2) 取得二點的距離 7.3 (inters 點1 點2 點3 點4 模式) 取得兩條線的交點 7.4 (osnap 點 模式字符串) 依輔助抓點模式取得另一坐標點 7.5 (polar 基點 弳度 距離) 依極坐標法取得另一坐標點 7.6 (textbox 像素串行) 取得文字符串的二對角點坐標 第八類 像素處理功能函數(shù)項目 函數(shù)語法 傳 回 8.1 (entdel 像素名稱) 刪除或逆刪除像素 8.2 (entget 像素名稱 應(yīng)用程序串行) 取出像素名稱的資料串
41、行 8.3 (entlast) 取出圖形數(shù)據(jù)中的最后一個像素 8.4 (entmake 像素串行) 建立一個新的像素串行 8.5 (entmod 像素串行) 依更新的資料串行更新屏幕上元體 8.6 (entnext 像素名稱) 找尋圖面中的下一個像素 8.7 (entsel 提示) 請求選取一個像素,響應(yīng)包含像素名稱及選點坐標的串行 8.8 (entupd 像素名稱) 更新屏幕上復元體圖形 8.9 (handent 圖碼) 圖碼的元體名稱 8.10 (nentsel 提示) BLOCK所含副元體像素數(shù)據(jù)串行 8.11 (nentselp 提示 點) BLOCK所含副元體像素數(shù)據(jù)(以4 x 4矩
42、形表示) .返回單元四:快速分類瀏覽AutoLISP功能函數(shù)(二)第九類 選擇集、符號表處理功能函數(shù)項目函數(shù)語法 傳 回9.1 (ssadd 像素名稱 選擇集) 將像素加入選擇集或建立一新選擇集 9.2 (ssdel 像素名稱 選擇集) 將像素自選擇集中移出 9.3 (ssget 模式 點1 點2) 取得一個選擇集 9.4 (ssget "X" 過濾串行) 取得依過濾串行所指定范圍的選擇集 9.5 (sslenth 選擇集) 計算選擇集的像素個數(shù) 9.6 (ssmemb 像素名稱 選擇集) 響應(yīng)像素名稱是否包含于選擇集內(nèi) 9.7 (ssname 選擇集 索引值) 依索引值取
43、出選擇集中的像素名稱 9.8 (tblnext 符號表名稱 T) 檢視符號表,有效的符號表: "LAYER"、"LTYPE"、"VIEW"、"STYLE"、"BLOCK" 9.9 (tblsearch 符號表名稱 符號) 在符號表中搜尋符號 第十類 AutoCAD 相關(guān)查詢、控制功能函數(shù)項目函數(shù)語法 傳 回 10.1 (command "AutoCAD 指令" .) 呼叫執(zhí)行AutoCAD指令 10.2 (findfile 檔名) 傳回:應(yīng)該文件名的路徑及文件名 10.3 (
44、getfiled 標題 內(nèi)定檔名 擴展名 旗號) 透過標準AutoCAD檔案對話DCL交談框求得檔案 10.4 (getenv "環(huán)境變量") 取得該環(huán)境變量的設(shè)定值,以字符串表示 10.5 (getvar "系統(tǒng)變量") 取得該系統(tǒng)變量的設(shè)定值,以字符串表示 10.6 (setvar "系統(tǒng)變量" 值) 設(shè)定該系統(tǒng)變量的值 10.7 (regapp 應(yīng)用類項) 將目前的AutoCAD圖形登記為一個應(yīng)用程序名稱 第十一類 判斷式、循環(huán)相關(guān)功能函數(shù)項目函數(shù)語法 傳 回 11.1 (if <比較式> <表示式1>
45、表示式2) 檢算比較式結(jié)果,如果為真,執(zhí)行<表示式1>否則,執(zhí)行<表示式2> 11.2 (repeat 整數(shù) <表達式> <表達式> .) 重復執(zhí)行<整數(shù)>次數(shù) 11.3 (while 標題 內(nèi)定檔名 擴展名 旗號) 透過標準 AutoCAD 檔案對話DCL交談框求得檔案 11.4 (cond "環(huán)境變量") 取得該環(huán)境變量的設(shè)定值,以字符串表示 11.5 (progn 表達式1 表達式2 .) 連結(jié)其內(nèi)的表達式為一組,常用于配合if、cond等函數(shù) 第十二類 函數(shù)處理、定義、追蹤 & 錯誤處理功能函數(shù)項目
46、函數(shù)語法 傳 回 12.1 (*error* 字符串) 程序錯誤時的警示訊息 12.2 (alert 字符串) 以交談框式顯示出警告字符串 12.3 (apply 功能函數(shù) 串行) 將功能函數(shù)與串行結(jié)合后執(zhí)行 12.4 (defun 名稱 自變量串行 表示式 .) 自定函數(shù)或子程序 12.5 (eval 表示式) 傳回:表示式的執(zhí)行結(jié)果 12.6 (exit) 強制退出目前的應(yīng)用程序 12.7 (lambda 自變量 表示式) 定義未具名的函數(shù) 12.8 (progn 表達式1 表達式2 .) 連結(jié)其內(nèi)的表達式為一組,常用于配合if、cond等函數(shù) 12.9 (quit) 強制退出目前的應(yīng)用程
47、序 12.10 (tablet 代碼 列1 列2 列3 方向) 取用或建立對數(shù)字板的校調(diào) 12.11 (trace 函數(shù)) 對函數(shù)設(shè)定追蹤旗號,輔助除錯 12.12 (untrace 函數(shù)) 對函數(shù)設(shè)定解除追蹤旗號 第十三類 顯示、打印控制功能函數(shù)項目函數(shù)語法 傳 回 一三.1 (graphscr) 作圖環(huán)境切換到圖形畫面 一三.2 (grclear) 暫時清除模前的屏幕畫面 一三.3 (grdraw 起點 終點 顏色 亮顯) 暫時性的畫出一條線 一三.4 (grread 追蹤) 由輸入設(shè)備讀取追蹤值 一三.5 (grtext 位置 字符串 亮顯) 將字符串顯示在狀態(tài)列或屏幕菜單上 一三.6
48、(grvecs 向量串行 轉(zhuǎn)置矩陣) 暫時性的畫出多條線 一三.7 (menucmd 字符串) 提供在AutoLISP中呼叫各菜單 一三.8 (prin1 表示式 檔案代碼) 將表示式打印于命令區(qū)或已開啟的檔案,句柄字符則以"" 為前綴展開 一三.9 (princ 表示式 檔案代碼) 除句柄字符則不以 "" 為前綴展開外其余同prin1 一三.10 (print 表示式 檔案代碼) 除表示式會往下一新行列出,及一空格外其余同prin1 一三.11 (prompt 訊息) 將訊息顯示于屏幕的命令區(qū),并隨后響應(yīng)一個nil訊息 一三.12 (redraw 像素
49、名稱 模式) 重繪整張圖或依像素名稱重繪該圖形 一三.一三 (terpri) 在屏幕上顯示新列 一三.14 (textscr) 作圖環(huán)境切換到文字畫面 一三.一五 (textpage) 清除文字畫面文字類似DOS的cls指令 一三.16 (vports) 傳回:窗口組態(tài)串行 第十四類 符號、元素、表示式處理功能函數(shù)項目函數(shù)語法 傳 回 14.1 (atom 元素) 如果元素不是串行,響應(yīng) T,否則為 nil 14.2 (atoms-family 格式 符號串行) 傳回:一組已定義函數(shù)的符號串行 14.3 (boundp 表示式) 傳回:T或nil,響應(yīng)表示式是否有值存在 14.4 (minus
50、p 元素) 傳回:T 或 nil,元素是否為負值 14.5 (not 元素) 傳回:T 或 nil,判定元素是否為 nil 14.6 (null 元素) 傳回:T或nil判定元素是否被賦予nil值 14.7 (numberp 元素) 傳回:T或nil,元素是否為整數(shù)或?qū)崝?shù) 14.8 (. '表示式) 響應(yīng)表示式未檢算前狀態(tài) 14.9 (quote 表示式) 響應(yīng)表示式未檢算前狀態(tài),同'功能 14.10 (set 符號 表示式) 將表示式結(jié)果設(shè)定給帶單引號 ' 符號 14.11 (setq 符號1 表示式1 符號2 表示式2.) 設(shè)定表示式結(jié)果給各符號 14.12 (ty
51、pe 元素) 傳回:元素的資料型態(tài) 143.一三 (zerop 元素) 傳回:T 或 nil,元素是否為 0 值 第十五類 ADS、AutoLISP 加載與釋放函數(shù)項目函數(shù)語法 傳 回 一五.1 (ads) 傳回:目前加載ADS程序串行 一五.2 (ver) 傳回:目前AutoLISP版本字符串 一五.3 (load LSP檔名 加載失敗) 加載AutoLISP檔案(*.lsp) 一五.4 (arxload <應(yīng)用程序名稱> 錯誤響應(yīng)) 加載一個ARX應(yīng)用程序文件 一五.5 (arxunload <應(yīng)用程序名稱> 錯誤響應(yīng)) 釋放ARX應(yīng)用程序文件 一五.6 (auto
52、arxload <文件名稱> <指令定義>) 加載一個關(guān)連式的ARX檔 一五.7 (autoload ADS 定義的函數(shù) & 指令) 加載一個關(guān)連式的AutoLISP檔 一五.8 (autoxload <文件名稱> <指令定義>) 加載一個關(guān)連式的ADS檔 一五.9 (xload 應(yīng)用程序 出錯處理) 加載ADS應(yīng)用程序 一五.10 (xunload 應(yīng)用程序 出錯處理) 釋放ADS應(yīng)用程序 第十六類 內(nèi)存空間管理函數(shù)項目函數(shù)語法 傳 回 16.1 (alloc 數(shù)值) 以節(jié)點數(shù)值設(shè)定區(qū)段大小 16.2 (expand 數(shù)值) 以區(qū)段數(shù)值
53、配置節(jié)點空間 16.3 (gc) 強制收回廢內(nèi)存 16.4 (mem) 顯示目前的內(nèi)存使用狀態(tài) 16.5 (vmon) 釋放ADS應(yīng)用程序 16.6 (xdroom 像素名稱) 傳回像素延伸資料允用得內(nèi)存空間 16.7 (xdsize 串行) 傳回像素延伸資料所占用的內(nèi)存空間 第十七類 ARX 定義的函數(shù)項目函數(shù)語法 傳 回 17.1 (acad_colordlg 顏色碼 旗號) 顯示出標準AutoCAD顏色選擇交談框 17.2 (acad_helpdlg 求助文件名 主題) 顯示出標準 AutoCAD 求助交談框返回單元五:輕松快速的掌握AutoLISP設(shè)計技巧一、AutoLISP 程序設(shè)計
54、的四個步驟:1.第一步驟:產(chǎn)生寫程序的動機、預(yù)期目標2.第二步驟:構(gòu)思程序流程、所需之LISP功能函數(shù)、相關(guān)變量訂定&提示訊息3.第三步驟:利用文書軟件 (如記事本) 撰寫xxx.lsp程序4.第四步驟:回到AutoCAD下,加載AutoLISP程序以 (load"LSP主檔名") 或 (load "LSP主檔名")5.第五步驟:執(zhí)行新的 AutoLISP 指令二、透過簡單范例全程演練AutoLISP:1.第一步驟:動機、預(yù)期目標2.第二步驟:構(gòu)思程序相關(guān)變量訂定定出程序名為 pbox.lsp 構(gòu)思程序流程、相關(guān)變量:變量名稱可自行設(shè)定(如 pa
55、、ww、hh、pb、pc、pd、mp1、mp2、mp3、mp4),掌握三個原則: *不可重復*好記不會混淆 *適時的以分號;加上批注(defun c:pbox();以下 pa、ww、hh 值須由使用者輸入(setq pa (請求輸入左下角點)(setq ww (請求輸入矩形寬度實數(shù)值)(setq hh (請求輸入矩形高度實數(shù)值);以下pb、pc、pd值須由程序依據(jù)pa、ww、hh求出(setq pb (依據(jù)相對極坐標法求出pb點坐標值)(setq pc (依據(jù)相對極坐標法求出pc點坐標值)(setq pd (依據(jù)相對極坐標法求出pd點坐標值);以下依據(jù) pa、pb、pc、pd 點畫矩形(以pl
56、ine指令畫出矩形);以下mp1、mp2、mp3、mp4值須由程序依據(jù)pa、ww、hh;& pb、pc、pd 值求出(setq mp1 (求出 mp1 點坐標值)(setq mp3 (求出 mp3 點坐標值)(setq mp2 (求出 mp2 點坐標值)(setq mp4 (求出 mp4 點坐標值);以下依據(jù) mp1、mp2、mp3、mp4 點畫出二條線(以 line 指令畫出 mp1 到 mp3 的線)(以 line 指令畫出 mp2 到 mp4 的線)本程序所需的 AutoLISP功能函數(shù)及其用法(getpoint 基點 提示) <- 請求輸入一個點坐標(getreal 提示
57、) <- 請求輸入一實數(shù)(polar 基點 弳度 距離) <- 依極坐標法取得另一坐標點其中弳度值之轉(zhuǎn)換為:十進制角度弳度值十進制轉(zhuǎn)弳度公式0度0090度1/2(/ pi 2) 或 (* pi 0.5)一八0度pi270度2/3(* pi 1.5)N度*N/一八0(* pi (/ n 一八0)(command "AutoCAD 指令" .) <-呼叫執(zhí)行 AutoCAD 指令注意: 指令及其副選項皆要用雙引號處理假設(shè) pa、pb、pc、pd 皆為變量,其值為點坐標 正確: (command "pline" pa pb pc pd &qu
58、ot;c")錯誤: (command pline pa pb pc pd c)原因: 指令 pline 及其副選項 c 皆沒用雙引號括住錯誤: (command "pline" pa pb pc pd c)原因: 副選項c (代表 close) 沒用雙引號括住,會被誤認為是AutoLISP的變量名,但事實又沒有 c 這個變量錯誤:(command "pline" "pa" "pb" "pc" "pd" "c")原因:變量 pa、pb、pc、pd 不須用雙引號括住注意:副選項中,若使用 "" ,連續(xù)二個雙引號,代表按 ENTER 鍵若想畫一條 pa 到 pc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省揭陽市空港經(jīng)濟區(qū)2025屆數(shù)學五下期末達標檢測模擬試題含答案
- 2025屆湖北省武漢市市新觀察初三下學期模擬檢測試題英語試題含答案
- 浙江農(nóng)林大學暨陽學院《數(shù)學建模Ⅱ》2023-2024學年第二學期期末試卷
- 遼寧省大連市一零三中學2024-2025學年高考猜題卷(一)物理試題含解析
- 智能化流程優(yōu)化-第1篇-全面剖析
- 人工智能在CRM應(yīng)用-全面剖析
- 龍巖市資源工程學院招聘真題2024
- 國防大學國際防務(wù)學院招聘真題2024
- 2025年動畫設(shè)計師技能水平測試卷:動畫劇本改編與原創(chuàng)性試題
- 2025年安全生產(chǎn)標準化建設(shè)安全操作規(guī)程與實施實施案例分析考試題庫
- 部編版語文二年級下冊第3單元核心素養(yǎng)教案
- 基于PLC的小區(qū)排水控制系統(tǒng)設(shè)計畢業(yè)論文
- DB43-T 1712-2019 銀行業(yè)金融機構(gòu)智能預(yù)警系統(tǒng)安全防范要求
- 2023年云南省接受軍轉(zhuǎn)干部安置考試試題
- 初三英語試卷分析失分原因和改進措施
- 關(guān)于在生產(chǎn)過程中物料流轉(zhuǎn)的交接和管理規(guī)定
- 2022年高考真題及答案解析《歷史、地理、政治》(湖北卷)
- 高中數(shù)學人教A版空間幾何體(省一等獎)
- 把未來點亮歌詞打印版
- 急性白血病急性髓系白血病課件
- 寫字樓能耗評估和節(jié)能降耗措施
評論
0/150
提交評論