AutoLISP從入門(mén)到精通初級(jí)教程(新手必備)_第1頁(yè)
AutoLISP從入門(mén)到精通初級(jí)教程(新手必備)_第2頁(yè)
AutoLISP從入門(mén)到精通初級(jí)教程(新手必備)_第3頁(yè)
AutoLISP從入門(mén)到精通初級(jí)教程(新手必備)_第4頁(yè)
AutoLISP從入門(mén)到精通初級(jí)教程(新手必備)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、AutoLISP 入門(mén)之遲辟智美創(chuàng)作單位一: AutoLISP 主角退場(chǎng)一 . AutoLISP 是何方神圣?1、AutoLISP是AutoCAD的最佳拍槽!2、 AutoLISP 內(nèi)含于 AutoCAD 軟件內(nèi) ,不用另外花錢(qián)買(mǎi)!3、 AutoLISP 是強(qiáng)化 AutoCAD 最好、最直接的法式語(yǔ)言 !4、 AutoLISP 易學(xué)、易用,即使不會(huì)法式設(shè)計(jì)的AutoCAD 使用者,都能在最短的時(shí)間內(nèi) ,寫(xiě)出令人驚訝、贊嘆的功能 !若說(shuō) AutoLISP 的呈現(xiàn) ,是替 AutoCAD 締造一片天的最年夜功臣 ,實(shí)不為過(guò)一點(diǎn)也不夸張!5、 AutoLISP 希望您去學(xué)習(xí)它、改善它、發(fā)揮它、享受它

2、 .真的 !它的威力、魅力無(wú)窮!二 . AutoLISP 法式語(yǔ)言的特質(zhì)分析 :學(xué)習(xí)AutoLISP 是非常容易的 ,對(duì)初學(xué)者而言,即使沒(méi)有學(xué)習(xí)過(guò)任何的法式語(yǔ)言 ,都能很快的上手,寫(xiě)出精彩漂亮的 AutoLISP 法式 !語(yǔ)法簡(jiǎn)單:不用特殊的變量宣告,非常富有彈性,比起其它的法式語(yǔ)言,它的語(yǔ)法可說(shuō)是非常簡(jiǎn)單而有其共同的風(fēng)格!功能函數(shù)強(qiáng)年夜:除一般性的功能函數(shù)外,又擁有為數(shù)很多控制配合AutoCAD 的特殊函數(shù),再加上AutoLISP 可直接呼叫執(zhí)行所有 AutoCAD的指令, 以及掌握運(yùn)用所有的AutoCAD 系統(tǒng)變量 ,功能之強(qiáng)年夜令人欣喜不已!撰寫(xiě)的環(huán)境不挑剔:只要是一般的文書(shū)編纂軟件都適

3、用 ! 如 :Windows 的記事本、PE2、 PE3、 DW3 、書(shū)中仙、漢書(shū)、 EDIT 等直譯式法式:不用再作編譯, 即寫(xiě)即測(cè)、即測(cè)即用 ,馬上可以在AutoCAD 中響應(yīng)效果,馬上就有成績(jī)感!橫跨各作業(yè)平臺(tái):悠然自得,雖然AutoCAD 有 DOS 、 Windows 版本之分可是 AutoLISP 卻可在不改寫(xiě)的原貌下,加載與執(zhí)行!三 .撰寫(xiě)AutoLISP 的念頭 ?1、欲強(qiáng)化 AutoCAD 原有指令時(shí).2、欲締造更有用的AutoCAD 新指令 .3、欲簡(jiǎn)化繁瑣的環(huán)境設(shè)定或繪圖步伐時(shí).4、欲處置參數(shù)式繪圖時(shí) .5、欲做圖面資料讀文件、寫(xiě)文件.6、欲做 AutoCAD 簡(jiǎn)報(bào)展示時(shí)

4、.7、欲到達(dá)真正靈活掌控 AutoCAD 時(shí).8、欲提升自己跨上AutoCAD 高手列車(chē)時(shí).四 .AutoLISP 的效益評(píng)估?1. 對(duì)公司負(fù)責(zé)人或設(shè)計(jì)主管而言 :A. 也許某員工或干部花了 20 個(gè)小時(shí)撰寫(xiě)一個(gè)AutoLISP 法式 ,概況上,這將近三天的時(shí)間 ,他連一張圖都沒(méi)有畫(huà),甚至可能偶有發(fā)呆、沈思,若此法式一天可以替公司繪圖部份節(jié)省 1 小時(shí)繪圖時(shí)間,那算一算,只要20 天就抵銷(xiāo)開(kāi)發(fā)本錢(qián),而 20天以后都是賺的, 用的愈久,省的愈多!B. 若員工皆有此動(dòng)力,在不影響正常工作,鼓勵(lì)都來(lái)不及,那有壓抑的事理,甚至還要派遣優(yōu)秀人員出去受訓(xùn),學(xué)習(xí)更好的設(shè)計(jì)技巧與創(chuàng)意呢?!C.千萬(wàn)不要因?yàn)槟?/p>

5、不懂或壓抑,SHOW您的權(quán)威與POWER,如此,不單對(duì)員工造成沖擊,甚至您可能成為阻礙了公司計(jì)算機(jī)化進(jìn)步的罪魁禍?zhǔn)譊. 固然 ,若要撰寫(xiě)的法式很多 , 內(nèi)部設(shè)計(jì)人員的法式功力距離太遠(yuǎn),告竣需求的時(shí)間反而變得遙遙無(wú)期 ,那倒不如求助于市面上已有的相關(guān) AutoCAD 支持軟件 . 2. 對(duì)設(shè)計(jì)人員而言 :A. 獲得一筆提升績(jī)效獎(jiǎng)金呢 ? 固然 ,無(wú)形中, AutoCAD 高手的封號(hào)也將功力又往前邁出了一年夜步 ,對(duì)個(gè)人的生長(zhǎng)幫手匪淺,幸運(yùn)的話,搞欠好還可以黃袍加身,不亦樂(lè)乎!B. 半桶水、響叮當(dāng) ,千萬(wàn)不要因?yàn)闀?huì)寫(xiě) AutoLISP 法式而自傲、孤 僻、囂張起來(lái),功力的增長(zhǎng),只是讓您有更多服務(wù)他

6、人、服務(wù)公司的機(jī)會(huì) ,若自恃過(guò)重,寧可不要!C. AutoLISP 法式功力的累進(jìn),是無(wú)遠(yuǎn)弗屆的 ,千萬(wàn)不要孤芳自賞 ,人外有人,天外有天 ,也許您覺(jué)得是寶物加三級(jí)的法式,只是其它設(shè)計(jì)師基本法式中的一部份而已 !D. 既然 AutoLISP 是 AutoCAD 的最年夜功臣, 固然不會(huì)輕易被舍棄,如此 ,您的學(xué)習(xí),保證不會(huì)白費(fèi)!E. 精益求精、虛心求教、用心學(xué)習(xí)、觀摩、決心成為 高手 3.對(duì)法式自己而言 : A. 少少的幾行,卻可能有年夜年夜?jié)M意的時(shí)候!B. 充份掌握了控制、締造AutoCAD 的尚方寶劍 ,讓您在 AutoCAD的設(shè)計(jì)運(yùn)作中駕輕就熟 ,享受無(wú)比的快樂(lè)與成績(jī)感!五 .如何有效的

7、學(xué)習(xí)AutoLISP ?1、先由小法式著手,認(rèn)識(shí)AutoLISP 語(yǔ)法規(guī)定 !2、瀏覽所有的 AutoLISP 功能函數(shù),重要的功能函數(shù)要熟記腦海,俗語(yǔ)說(shuō)的好一回生,二回熟,除非您不用心,否則沒(méi)有學(xué)欠好的事理!3、要理解偷懶:不要認(rèn)為在繪圖的過(guò)程中,繁瑣的步伐是合理的 , 困難的繪圖過(guò)程是必需忍耐的 ,試著用 AutoLISP 解決看看 !4、多觀摩他人的法式設(shè)計(jì),吸取精華 ,像海棉一樣= 吸、吸、吸 !5、入手寫(xiě)法式比用眼睛看法式 ,更能夠領(lǐng)略深記腦海!6、隨時(shí)隨地整理您的法式,并加以批注,以免因時(shí)間的飛逝,那時(shí)用心的功效也煙消云散,忘的一乾二凈!7、決心是學(xué)好AutoLISP 最重要的關(guān)鍵

8、!8、期許自己,要由把持者釀成締造者!單位二: AutoLISP 的關(guān)鍵、基本結(jié)構(gòu)及語(yǔ)法 一、學(xué)好 AutoLISP 的關(guān)鍵、基本結(jié)構(gòu)與語(yǔ)法:1. AutoLISP 法式語(yǔ)言的特質(zhì)A. 語(yǔ)法簡(jiǎn)單B.功能函數(shù)強(qiáng)年夜C.撰寫(xiě)的環(huán)境不挑剃D.直譯式法式,即寫(xiě)即測(cè)、即測(cè)即用E橫跨AutoCAD各作業(yè)平臺(tái),悠然自得(注:以上五點(diǎn),讀者可以參考上一章的剖析 !)2 .學(xué)好 AutoLISP 的關(guān)鍵:充份掌握語(yǔ)法結(jié)構(gòu) & 功能函數(shù)的搭配!3 .重要的 AutoLISP 的基本語(yǔ)法結(jié)構(gòu)規(guī)則 1:以括號(hào)組成表達(dá)式 ,、相對(duì)稱(chēng)左右括號(hào)數(shù)一定要成雙成對(duì)規(guī)則 2:表達(dá)式型態(tài):(把持?jǐn)?shù)運(yùn)算子運(yùn)算子運(yùn)算子)1.1 把持?jǐn)?shù)

9、包括功能函數(shù) & 自定函式1.2 運(yùn)算子 (自變量)包括:A.整數(shù)(Integer)如 8,-17,500,9999 .B.實(shí)數(shù)(Real)如 8.5,-17.456 .C.字符串(String)如AutoCAD,123D.串行(List)如(a b c),(x y)E.圖元名稱(chēng)代碼如 entity name: 6000f262F.檔案代碼如.G.選擇群集代碼如 規(guī)則3:表達(dá)式中的運(yùn)算子,可以是另一表達(dá)式或子法式規(guī)則 4 :多重的括號(hào)表達(dá)式,運(yùn)算的先后順序是由內(nèi)而外、由左而右規(guī)則5:以檔案型態(tài)存在的AutoLISP 法式 (ASCII 檔案),其擴(kuò)展名必需是.lsp規(guī)則 6 :撰寫(xiě)的環(huán)境,只要

10、是一般的文書(shū)編纂軟件、記事本,可編纂ASCII 檔案者都適用規(guī)則 7:以 defun 功能函數(shù)界說(shuō)新的指令或新的功能函式規(guī)則8:新界說(shuō)的功能函式名稱(chēng),若為C:函式名,則此函式可為AutoCAD 新指令規(guī)則9:加載AutoLISP 法式的作法: = 指令 :后直接鍵入(load LISP主槽名)規(guī)則 10 : AutoLISP 法式中,在分號(hào);后的內(nèi)容均為批注,法式不處置適時(shí)的增加批注,將使法式更具可看性、學(xué)習(xí)性及完整性規(guī)則 11 : AutoLISP 最經(jīng)常使用的變量型態(tài)是整數(shù)、實(shí)數(shù)、字符串、點(diǎn)串行四種,變量的型態(tài)依據(jù)設(shè)定值而自動(dòng)界說(shuō),變量會(huì)一直貯存該值,直到被重新設(shè)定值或繪圖結(jié)束自動(dòng)消失規(guī)則

11、 12 :以 setq 功能函數(shù)設(shè)定變量值(setq 變量名稱(chēng)設(shè)定值)規(guī)則 13 :欲在 AutoCAD 的環(huán)境中 ,檢查一變量值,指令 :下鍵入!變量名即可規(guī)則14:以(defun C:函式名(自變量/變數(shù))法式中,法式中的變量若在 /右邊變量?jī)?nèi) ,則稱(chēng)為區(qū)域變量 ,否則為整體變量二、學(xué)好 AutoLISP 的關(guān)鍵:充份掌握語(yǔ)法結(jié)構(gòu) & 功能函數(shù)的搭配! 其時(shí)這個(gè)關(guān)鍵亦是學(xué)習(xí)其它法式語(yǔ)言的關(guān)鍵.* 語(yǔ)法結(jié)構(gòu) AutoLISP 的語(yǔ)法結(jié)構(gòu)規(guī)定的其實(shí)未幾 ,變量不用事先界說(shuō)及宣告,讀者可熟記下一單位有關(guān)重要的 AutoLISP 基本語(yǔ)法結(jié)構(gòu) ,十四條設(shè)計(jì)上要求的規(guī)則* 功能函數(shù)AutoLISP

12、之所以能功能如此強(qiáng)年夜 ,都有賴(lài)功能函數(shù),其成員共約200 個(gè) :1、一般性函數(shù)170 個(gè)2、 ADS 界說(shuō)特殊函數(shù)9 個(gè)3、配合 DCL 交談框設(shè)計(jì)函數(shù)22 個(gè)各功能函數(shù)在使用上要求配合的運(yùn)算子 ( 自變量 )型態(tài) ,均有其規(guī)定,固然 ,您可不能亂給!例如 :指令 :(+ 1 2 3 ABC)傳回: error : bad argument type ( 自變量型態(tài)毛病)因?yàn)?+ 函數(shù)不接受字符串,而 abc 正是字符串指令 :(rtos abc)傳回: error : bad argument type ( 自變量型態(tài)毛病)因?yàn)閞tos 函數(shù)只接受實(shí)數(shù)轉(zhuǎn)字符串詳細(xì)內(nèi)容可參考下一章快速瀏覽

13、AutoLISP 功能函數(shù)至于各功能函數(shù)詳細(xì)的語(yǔ)法與實(shí)例應(yīng)用,讀者請(qǐng)參閱本書(shū)第三篇AutoLISP 功能函數(shù)詳解三、重要的AutoLISP 的基本語(yǔ)法結(jié)構(gòu):規(guī)則 1:以括號(hào)組成表達(dá)式 ,左右括號(hào)數(shù)一定要成雙成對(duì)、相對(duì)稱(chēng)請(qǐng)依序在指令: 列(或指令:) 后面直接鍵入以下表達(dá)式指令 :(+ 1 2 3 4 5) 傳回加總和 15指令 :(max 14.5 8.9 35) 傳回最年夜值35指令 :(menucmd p1=*) 顯示拉下 POP1指令:(getint Enter Real:)傳回Enter Real:要求輸入一個(gè)實(shí)數(shù)指令 :(setq a (* 12.5 4) 傳回相乘值50,同時(shí)設(shè)定給

14、變量a指令 :!a 回應(yīng) 50 (注 :! 號(hào)可用來(lái)查詢變數(shù)值)指令:(min 75 a 63)響應(yīng)最小值50 (因?yàn)樽兞恐礱代表50)毛病的范例:指令 :(setq a (* 12.5 4)1 傳回1暗示少了一個(gè)括號(hào)1 ) 此時(shí),只要再補(bǔ)上一個(gè)) 即可指令 :(setq a (* 12.5 42 傳回 2 暗示少了二個(gè)括號(hào)2 ) 此時(shí) ,只要再補(bǔ)上二個(gè)) 即可規(guī)則 2:表達(dá)式型態(tài)(把持?jǐn)?shù)運(yùn)算子運(yùn)算子運(yùn)算子.)或 (函數(shù)(式) 自變量自變量自變量.)或 (函數(shù)(式) 元素元素元素.)1.1 把持?jǐn)?shù)包括功能函數(shù) & 自定函式功能函數(shù) : 如上練習(xí)中的 +、 max、 menucmd、 getin

15、t、 setq、 * 、 min ,詳細(xì)內(nèi)容可參考下一章快速瀏覽 AutoLISP 功能函數(shù) & 第三篇AutoLISP 功能函數(shù)詳解自定函式 : 由設(shè)計(jì)者自行界說(shuō)的新函式或子法式1.2 運(yùn)算子 (又稱(chēng)自變量或元素 )包括 :A.整數(shù)(Integer):如 8,-17,500,9999 正常范圍: 2 的 16 次方 ,介于-32768 與 +32767 之間特殊范圍: 若以 float 函數(shù)將其轉(zhuǎn)為實(shí)數(shù),則范圍2 的 32 次方 , 介于 -2147483648與+2147483647 之間B.實(shí)數(shù)(Real):如 8.5,-17.456正常范圍 : 帶有小數(shù)點(diǎn)的數(shù),精度可達(dá)14 位有效數(shù)字

16、C.字符串(String):如AutoCAD,123,Enter Real:,7.5,正常范圍 : 以雙引號(hào)內(nèi)夾字符為認(rèn)定,字符數(shù)不受限制D.串行(List):如(a b c),(x y),(x y z),(a 8 3.5),.正常范圍: 以左右括號(hào)內(nèi)夾元素為認(rèn)定,元素型態(tài)非常彈性使用頻率: 在 AutoLISP 法式設(shè)計(jì)中應(yīng)用非常高范例說(shuō)明 : (a 8 3.5 kk (1 2)暗示此串行內(nèi)有五個(gè)元素a 暗示字符串a(chǎn)、 8 暗示整數(shù) 8、 3.5 暗示實(shí)數(shù) 3.5 、 kk 暗示變量 kk 、 (1 2) 暗示串行 (1 2)2D 點(diǎn)坐標(biāo) (x y) 暗示法 = 以二實(shí)數(shù)形成串行3D 點(diǎn)坐標(biāo)

17、 (x y z) 暗示法 = 以三實(shí)數(shù)形成串行E.圖元名稱(chēng)代碼:如entity name: 6000f262使用范圍: AutoCAD 會(huì)自動(dòng)賦予圖元指向代碼,透過(guò)此代碼可找到圖元的數(shù)據(jù)庫(kù)記錄范例說(shuō)明: (setq en (entlast)傳回 (entget en)可找到圖元的數(shù)據(jù)庫(kù)串行F.檔案代碼:如使用范圍:開(kāi)啟(open)檔案作讀檔()、寫(xiě)檔(w)使用時(shí),所發(fā)生的代碼,如 下:范例說(shuō)明 :(setq ffr (open test.txt r) 回應(yīng) (setq ffw (open abc.txt w) 回應(yīng) G.選擇群集代碼:如Selection set:1、Selection set

18、:1 使用范圍:一個(gè)或數(shù)個(gè)圖元所形成的選擇集范例說(shuō)明:(setq ss (ssget)選取對(duì)象:(可選擇物體)選取對(duì)象:(可選擇物體)選取對(duì)象 : (按 ENTER 鍵 )回應(yīng)Selection set:1規(guī)則 3 :表達(dá)式中的運(yùn)算子 ,可以是另一表達(dá)式或子法式功能函數(shù)使用語(yǔ)法 :(strcat 字符串 1 字符串 2 字符串 3 ) 字符串結(jié)合功能函數(shù)(getstring 提示 ) 要求鍵入一個(gè)字符串(rtos 實(shí)數(shù) ) 將實(shí)數(shù)轉(zhuǎn)換成字符串范例說(shuō)明 1: (strcat abc 123 LISP) 傳回: abc123LISP范例說(shuō)明 2: (strcat abc (getstring En

19、ter String: ) (rtos 123.45)執(zhí)行結(jié)果 : Enter String: 鍵入任一字符串 ,假設(shè)是鍵入*HELLO*回應(yīng) abc*HELLO*123.45本例中的strcat 函數(shù)在語(yǔ)法中要求的運(yùn)算子必需是字符串型態(tài)運(yùn)算子1 = abc 是正常的字符串運(yùn)算子運(yùn)算子 2 = 表達(dá)式 (getstring Enter String:) 傳回結(jié)果是一字符串*HELLO*運(yùn)算子 3 = 表達(dá)式 (rtos 123.45) 傳回結(jié)果是一字符串 123.45規(guī)則 4 :多重的括號(hào)表達(dá)式,運(yùn)算的先后順序是由內(nèi)而外、由左而右范例說(shuō)明:請(qǐng)將10.25 + 17 - 13.2 / 7的結(jié)果,

20、設(shè)定給變量kk,并轉(zhuǎn)換成AutoLISP 的表達(dá)式解法技巧 A :1:運(yùn)用二分法、加括號(hào): (10.25 + 17) - (13.2 / 7)2:把持?jǐn)?shù)往前提: kk = (- (10.25 + 17) (13.2 / 7)3:把持?jǐn)?shù)再往前提: kk = (- (+ 10.25 17) (/ 13.2 7)4:轉(zhuǎn)換完成: (setq kk (- (+ 10.25 17) (/ 13.2 7)解法技巧 B :1:運(yùn)用二分法、加括號(hào): (10.25 + (17 - (13.2 / 7)2:把持?jǐn)?shù)往前提: kk = (+ 10.25 (17 - (13.2 / 7)3:把持?jǐn)?shù)再往前提: kk = (

21、+ 10.25 (- 17 (/ 13.2 7)4:轉(zhuǎn)換完成: (setq kk (+ 10.25 (- 17 (/ 13.2 7)規(guī)則5:以檔案型態(tài)存在的AutoLISP 法式 (ASCII 檔案 ),其擴(kuò)展名必需是.LSP規(guī)則6:撰寫(xiě)的環(huán)境,只要是一般的文書(shū)編纂軟件,可編纂 ASCII 檔案者都適用如:PE2、PE3、DW3、書(shū)中仙、漢書(shū)、 EDIT、記事本.等規(guī)則 7:以 defun 功能函數(shù)界說(shuō)新的指令或新的功能函式(注 : 自變量及區(qū)域變量可省略)法式結(jié)構(gòu)型態(tài):(defun 函式名稱(chēng) ( 自變量 /區(qū)域變量)法式內(nèi)容)規(guī)則8:新界說(shuō)的功能函式名稱(chēng),若為C:函式名,則此函式可為Auto

22、CAD 新指令(注 : 自變量及區(qū)域變量可省略)法式結(jié)構(gòu)型態(tài): (defun C:KK( 自變量/區(qū)域變量): : 法式內(nèi)容)則加載此 LISP 法式后,可在指令: 后直接鍵入新界說(shuō)的 KK 指令規(guī)則9:加載AutoLISP法式的作法:指令:后直接鍵入(load LISP主槽 名)注 :load 與字符串間的空格,可有可無(wú)注:load與雙引號(hào)間的空格,可有可無(wú)(loadLISP主槽名)范例:在c:lsptools目錄下有一 LISP法式tt.lsp,而您目前的工作目錄在 c:dwg 下若環(huán)境設(shè)定之支持檔案搜尋路徑有指定到c:lsptools 目錄,則欲使用加載tt.lsp &指令:后鍵入(lo

23、ad tt)即可若環(huán)境設(shè)定之支持檔案搜尋路徑無(wú)指定到c:lsptools 目錄,則鍵入 (loadtt) 后 ,會(huì)呈現(xiàn)毛病訊息如下:無(wú)法開(kāi)啟 tt.lsp 做輸入毛病: 載入失敗 (LOAD tt)* 取消 *此時(shí)您可鍵入:指令 :(load c:lsptoolstt) 或指令 :(load c:/lsptools/tt)不成鍵入 : (load c:lsptoolstt)因?yàn)樵?AutoLISP 結(jié)構(gòu)語(yǔ)法中已經(jīng)用于跳脫碼控制了規(guī)則 10 : AutoLISP 法式中 ,在分號(hào) ;后的內(nèi)容均為批注,法式不處置,適時(shí)的增加批注,將使法式更具可看性、學(xué)習(xí)性及完整性范例 : pp.lsp 內(nèi)容如下

24、:;本法式功能可快速畫(huà)門(mén)、窗;設(shè)計(jì)者:QQ 博士;版權(quán)所有,歡迎使用(defun c:pp(); 以下為畫(huà)門(mén)子法式:; 以下為畫(huà)窗子法式:)規(guī)則 11 : AutoLISP 最經(jīng)常使用的變量型態(tài)是整數(shù)、實(shí)數(shù)、字符串、點(diǎn)串行四種,變量的型態(tài)依據(jù)設(shè)定值而自動(dòng)界說(shuō),變量會(huì)一直貯存該值,直到被重新設(shè)定值或繪圖結(jié)束自動(dòng)消失規(guī)則 12 :以 setq 功能函數(shù)設(shè)定變量值(setq 變量名稱(chēng)設(shè)定值)范例 :(setq a 100)變量a值設(shè)定成整數(shù) 100(setq b 123.56);變量b值設(shè)定成實(shí)數(shù) 123.56(setq c Good morning!) ; 變量 c 值設(shè)定成字符串(setq pt

25、1 (getpoint Enter POINT:) ; 變量 pt1 值設(shè)定成點(diǎn)串行(setq pt2 (list a b);此時(shí),a值是100,b值是123.56變量pt2值設(shè)定成點(diǎn)串行(100 123.56)(setq pt3 (297 210) ; 變量 pt3 值設(shè)定成點(diǎn)串行(297 210)注意 : 直接設(shè)定成點(diǎn)串行時(shí) ,不能省略單引號(hào) 否則會(huì)被誤認(rèn)(297 210)又是一個(gè)表達(dá)式 , 297 是把持?jǐn)?shù)而犯錯(cuò)!規(guī)則 13 :欲在 AutoCAD 的環(huán)境中,檢查一變量值,指令 :下鍵入 !變量名即可范例:指令:(setq aa (+ 10075) 傳回: 175指令:!aa 傳回:17

26、5指令 :(setq pp (list 90 50) 傳回: (90 50)指令:!pp 傳回:(9050)指令:!ww 傳回:nil空值無(wú)設(shè)定規(guī)則14:以(defun C:函式名(自變量/變數(shù))法式中,法式中的變量若在/右邊變量?jī)?nèi),則稱(chēng)為區(qū)域變量 ,否則為整體變量(注 :在AutoLISP 中,未賦予值的變量,其值皆響應(yīng)nil)區(qū)域變量于此法式執(zhí)行完畢后,其值自動(dòng)消失整體變量于此法式執(zhí)行完畢后,其值仍然存在范例 : test.lsp 內(nèi)容如下(defun c:tt(/ sa sb sc)(setq sa 100)(setq sb 20)(setq sc 10)(setq sd (+ sa s

27、b sc)回到:指令:鍵入(loadtt) 傳回: c:tt指令:tt 傳回:130指令:!sa傳回:nil(屬區(qū)域變量)指令:!sb傳回:nil( 屬區(qū)域變量)指令:!sc傳回:nil(屬區(qū)域變量)指令 :!sd 傳回:130 (屬整體變量)單位三:快速分類(lèi)瀏覽 AutoLISP 功能函數(shù)(一)一、看到以下那么多的 AutoLISP 功能函數(shù) ,洋洋灑灑 17年夜類(lèi) :1、您第一個(gè)念頭,一定驚訝怎么會(huì)那么多,您可能快嚇壞了!2、您第二個(gè)念頭,一定會(huì)想那么多 ,怎么記得下來(lái) ,您可能快放棄了 !二、其實(shí),您應(yīng)該要很興奮而布滿信心的,怎么說(shuō)呢 ?1、您有那么多的年夜將協(xié)助您撰寫(xiě) AutoLISP

28、 法式,固然左右又逢源 ,不單輕松, 而且要快樂(lè)的不得了 !2、這些函數(shù)只要您先瀏覽有印象, 要用時(shí) ,再翻查該函數(shù),了解用途語(yǔ)法再加入到您的法式中就可以了 !3、經(jīng)常使用的函數(shù),寫(xiě)久、用久后, 自然會(huì)深深牢記腦海,想忘都很難 ,不經(jīng)常使用的函數(shù), 若硬要您記下來(lái),相信連高手都很困難 ,更何況是初學(xué)的您 !4、您不用再摸不著頭緒了,因?yàn)槟疫\(yùn)的擁有了本書(shū),就是您勝利的開(kāi)始!第一類(lèi)數(shù)學(xué)運(yùn)算功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回1.1 (+ 數(shù)值數(shù)值.) 累計(jì)實(shí)數(shù)或整數(shù)數(shù)值1.2 (- 數(shù)值數(shù)值.) 減去數(shù)值1.3 (* 數(shù)值數(shù)值.) 所有數(shù)值乘積1.4 (/ 數(shù)值數(shù)值 .) 第一個(gè)數(shù)值除以第二個(gè)以后數(shù)值的商1

29、.5 (1+ 數(shù)值 ) 數(shù)值 +11.6 (1- 數(shù)值 ) 數(shù)值 -11.7 (abs 數(shù)值 ) 數(shù)值的絕對(duì)值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.13 (float 數(shù)值 ) 將數(shù)值轉(zhuǎn)換為實(shí)數(shù)值1.14 (gcd 數(shù)值 1 數(shù)值 2) 二數(shù)值的最年夜公因子 ( greatest common divisor)1.15 (log 數(shù) 值 ) 數(shù) 值 的 自 然 對(duì) 數(shù) 值 ( 相 當(dāng) 于 l

30、n , e=2.71828182845904523 )1.16 (max 數(shù)值數(shù)值.) 數(shù)值中的最年夜值1.17 (min 數(shù)值數(shù)值.) 數(shù)值中的最小值1.18 pi 常數(shù)p ,其值約為3.14159261.19 (rem 數(shù)值 1 數(shù)值 2) 二數(shù)值的相除的余數(shù)(remainder)1.20 (sin角度)角度的正旋值,角度值為驍度1.21 (sqrt 數(shù)值 ) 數(shù)值的平方根第二類(lèi)檢驗(yàn)& 邏輯運(yùn)算功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回2.1 (= 暗示式 1 暗示式 2) 比力暗示式1 是否即是暗示式2 適用數(shù)值及字符串2.2 (/= 暗示式 1 暗示式 2) 比力暗示式1 是否不即是暗示式22.3 (

31、暗示式 1 暗示式 2) 比力暗示式1 是否 小于暗示式22.4 (= 暗示式 1 暗示式 2) 比力暗示式1 是否 =小于即是暗示式22.5 ( 暗示式 1 暗示式 2) 比力暗示式1 是否 年夜于暗示式22.6 (= 暗示式 1 暗示式 2) 比力暗示式1 是否年夜于即是暗示式22.7 ( 數(shù)值 ) 傳回:數(shù)值的位not 值,(1 的補(bǔ)碼 )2.8 (and暗示式1暗示式2)邏輯and的結(jié)果2.9 (boole函數(shù)整數(shù)整數(shù)一)位式布爾運(yùn)算2.10 (eq 暗示式 1 暗示式 2) 比力暗示式1 與暗示式 2 是否相同 , 適用串行比力(實(shí)際相同)2.11 (equal 暗示式 1 暗示式

32、2 差量 ) 比力暗示式1 與暗示式 2是否相同 ,差量可省略(內(nèi)容相同 )第三類(lèi)轉(zhuǎn)換運(yùn)算功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回3.1 (angtof 字符串 模式 ) 角度值(單位為度)的字符串轉(zhuǎn)成實(shí)數(shù)3.2 (angtos 角度模式精度 ) 角度(單位為弧度)轉(zhuǎn)成的字符串值3.3 (atof 字符串 ) 字符串轉(zhuǎn)成實(shí)數(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í)數(shù)值3.7 (itoa 整數(shù) ) 整數(shù)轉(zhuǎn)成字符串3.8 (rtos 數(shù)值模式精度 )

33、實(shí)數(shù)轉(zhuǎn)成字符串3.9 (trans點(diǎn)原位置新位置位移)轉(zhuǎn)換坐標(biāo)系統(tǒng)值第四類(lèi)串行處置功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回4.1 (append 串行串行.) 結(jié)合所有串行成一個(gè)串行4.2 (assoc關(guān)鍵元素聯(lián)合串行)依關(guān)鍵元素找尋聯(lián)合串行中關(guān)系數(shù)據(jù)4.3 (car 串行 ) 串行中的第一個(gè)元素通經(jīng)常使用來(lái)求x 坐標(biāo)4.4 (cadr 串行 ) 串行中的第二個(gè)元素通經(jīng)常使用來(lái)求y 坐標(biāo)4.5 (caddr串行)串行中的第三個(gè)元素通經(jīng)常使用來(lái)求z坐標(biāo)4.6 (cdr 串行 ) 除去第一個(gè)元素后的串行4.7 (cons 新元素串行) 將新元素結(jié)合到串行4.8 (foreach 名稱(chēng)串行暗示式) 將串行的每一元素

34、對(duì)應(yīng)至名稱(chēng)再依暗示式執(zhí)行響應(yīng)4.9 (length 串行 ) 串行內(nèi)的元素?cái)?shù)量4.10 (list元素元素)將所有元素結(jié)合成一串行4.11 (listp 元素 ) 判斷元素是否為一串4.12 (mapcar函數(shù)串行1串行2)將串行1、串行2、等串行的元素配合函數(shù),求得新串行4.13 (member 關(guān)鍵元素串行) 取關(guān)鍵元素 (含 )以后的串行4.14 (nth n 串行 ) 串行的第 n 個(gè)元素 (串行中的元素是從0 開(kāi)始編號(hào)的)4.15 (reverse 串行 ) 將串行元素依順序倒置過(guò)來(lái)的串行4.16 (subst新項(xiàng)舊項(xiàng)串行)用新項(xiàng)替換串行中的舊項(xiàng)(substitute,替換)第五類(lèi)字

35、符串、字符、檔案處置功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回5.1 (ascii 字 符 串 ) 字 符 串 第 一 個(gè) 字 符 的 ASCII 碼 (az:97122;AZ:6590 )5.2 (chr 整數(shù) ) 整數(shù)所對(duì)應(yīng)的 ASCII 單一字符串5.3 (close 文件名稱(chēng) ) 關(guān)閉檔案5.4 (open 文件名模式) 開(kāi)啟檔案代碼,準(zhǔn)備讀取或?qū)懭霐?shù)據(jù)5.5 (read 字符串 ) 串行中的字符串的第一組元素5.6 (read-char 檔案代碼) 經(jīng)由鍵盤(pán)或檔案中讀取單一字符5.7 (read-line 檔案代碼 ) 經(jīng)由鍵盤(pán)或檔案中讀取一行字符串5.8 (strcase 字符串字樣 ) 轉(zhuǎn)換字符串

36、年夜小寫(xiě)5.9 (strcat字符串1字符串2)將各字符串結(jié)合成一字符串5.10 (strlen 字符串 ) 字符串構(gòu)成的字符數(shù)(即字符串長(zhǎng)度)5.11 (substr 字符串起始長(zhǎng)度) 取出子字符串5.12 (wcmatch字符串格式)T或nil,將字符串與通用字符進(jìn)行比對(duì)5.13 (write-char 數(shù)值 檔案代碼 ) 將一 ASCII 字符寫(xiě)到檔案或屏幕5.14 (write-line 字符串 檔案代碼 ) 將字符串寫(xiě)到檔案或屏幕上第六類(lèi)等候輸入功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回6.1 (getangle 基點(diǎn) 提示 ) 請(qǐng)求輸入十進(jìn)制角度數(shù)值,響應(yīng)一弧度值提示及參考點(diǎn)可有可無(wú)6.2 (get

37、corner 基點(diǎn) 提示 ) 請(qǐng)求輸入另一矩框?qū)屈c(diǎn)坐標(biāo)6.3 (getdist 基點(diǎn) 提示 ) 請(qǐng)求輸入一段距離6.4 (getint 提示 ) 請(qǐng)求輸入一整數(shù)值6.5 (getkword 提示 ) 請(qǐng)求輸入關(guān)鍵詞6.6 (getorient 基點(diǎn) 提示 ) 請(qǐng)求輸入十進(jìn)制角度,響應(yīng)一弧度值不受angbase、 angdir 影響6.7 (getpoint 基點(diǎn) 提示 ) 請(qǐng)求輸入一個(gè)點(diǎn)坐標(biāo)6.8 (getreal 提示 ) 請(qǐng)求輸入一實(shí)數(shù)6.9 (getstring 提示 ) 請(qǐng)求輸入一字符串6.10 (initget 位 字符串 ) 設(shè)定下次 getxxx 函數(shù)的有效輸入第七類(lèi)幾何運(yùn)算功

38、能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回7.1 (angle 點(diǎn) 1 點(diǎn) 2) 取得二點(diǎn)的角度弧度值7.2 (distance 點(diǎn) 1 點(diǎn) 2) 取得二點(diǎn)的距離7.3 (inters 點(diǎn) 1 點(diǎn) 2 點(diǎn) 3 點(diǎn) 4 模式 ) 取得兩條線的交點(diǎn)7.4 (osnap點(diǎn)模式字符串)依輔助抓點(diǎn)模式取得另一坐標(biāo)點(diǎn)7.5 (polar 基點(diǎn)弧度距離) 依極坐標(biāo)法取得另一坐標(biāo)點(diǎn)7.6 (textbox 圖元串行 ) 取得文字符串的二對(duì)角點(diǎn)坐標(biāo)第八類(lèi)圖元處置功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回8.1 (entdel 圖元名稱(chēng) ) 刪除或逆刪除圖元8.2 (entget 圖元名稱(chēng) 應(yīng)用法式串行) 取出圖元名稱(chēng)的 數(shù)據(jù)串行8.3 (entla

39、st) 取出圖形數(shù)據(jù)中的最后一個(gè)圖元8.4 (entmake 圖元串行) 建立一個(gè)新的圖元串行8.5 (entmod 圖元串行 ) 依更新的數(shù)據(jù)串行更新屏幕上元體8.6 (entnext 圖元名稱(chēng)) 找尋圖面中的下一個(gè)圖元8.7 (entsel 提示 ) 請(qǐng)求選取一個(gè)圖元,響應(yīng)包括圖元名稱(chēng)及選點(diǎn)坐標(biāo)的串行8.8 (entupd 圖元名稱(chēng) ) 更新屏幕上復(fù)元體圖形8.9 (handent 圖碼 ) 圖碼的元體名稱(chēng)8.10 (nentsel 提示 ) BLOCK 所含副元體圖元數(shù)據(jù)串行8.11 (nentselp 提示 點(diǎn)) BLOCK 所含副元體圖元數(shù)據(jù)(以 4 x 4 矩形暗示)單位四:快速分

40、類(lèi)瀏覽 AutoLISP 功能函數(shù)(二)第九類(lèi)選擇集、符號(hào)表處置功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回9.1 (ssadd 圖元名稱(chēng) 選擇集 ) 將圖元加入選擇集或建立一新選擇集9.2 (ssdel 圖元名稱(chēng)選擇集) 將圖元自選擇集中移出9.3 (ssget 模式 點(diǎn) 1 點(diǎn) 2) 取得一個(gè)選擇集9.4 (ssget X 過(guò)濾串行 ) 取得依過(guò)濾串行所指定范圍的選擇集9.5 (sslenth 選擇集 ) 計(jì)算選擇集的圖元個(gè)數(shù)9.6 (ssmemb圖元名稱(chēng)選擇集)響應(yīng)圖元名稱(chēng)是否包括于選擇集內(nèi)9.7 (ssname選擇集索引值)依索引值取由選擇集中的圖元名稱(chēng)9.8 (tblnext 符號(hào)表名稱(chēng)T) 檢視符號(hào)表

41、,有效的符號(hào)表: LAYER 、LTYPE 、 VIEW 、 STYLE 、 BLOCK9.9 (tblsearch 符號(hào)表名稱(chēng)符號(hào)) 在符號(hào)表中搜尋符號(hào)第十類(lèi) AutoCAD 相關(guān)查詢、控制功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回10.1 (command AutoCAD 指令 .) 呼叫執(zhí)行 AutoCAD 指令10.2 (findfile槽名)傳回:應(yīng)該文件名的路徑及文件名10.3 (getfiled 題目?jī)?nèi)定檔名擴(kuò)展名旗號(hào)) 透過(guò)標(biāo)準(zhǔn) AutoCAD 檔案對(duì)話DCL 交談框求得檔案10.4 (getenv 環(huán)境變量) 取得該環(huán)境變量的設(shè)定值,以字符串暗示10.5 (getvar 系統(tǒng)變量) 取得該系統(tǒng)

42、變量的設(shè)定值,以字符串暗示10.6 (setvar 系統(tǒng)變量 值) 設(shè)定該系統(tǒng)變量的值10.7 (regapp 應(yīng)用類(lèi)項(xiàng) ) 將目前的 AutoCAD 圖形掛號(hào)為一個(gè)應(yīng)用法式名稱(chēng)第十一類(lèi)判斷式、循環(huán)相關(guān)功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回11.1 (if 暗示式 2) 檢算比力式結(jié)果,如果為真,執(zhí)行 否則,執(zhí)行11.2 (repeat 整數(shù) .) 重復(fù)執(zhí)行 次數(shù)11.3 (while 題目?jī)?nèi)定檔名擴(kuò)展名旗號(hào)) 透過(guò)標(biāo)準(zhǔn) AutoCAD 檔案對(duì)話DCL 交談框求得檔案11.4 (cond 環(huán)境變量 ) 取得該環(huán)境變量的設(shè)定值,以字符串暗示11.5 (progn 表達(dá)式 1 表達(dá)式 2 .) 連結(jié)其內(nèi)的表達(dá)式

43、為一組,經(jīng)常使用于配合if、cond等函數(shù)第十二類(lèi)函數(shù)處置、界說(shuō)、追蹤 & 毛病處置功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回12.1 (*error* 字符串 ) 法式毛病時(shí)的警示訊息12.2 (alert 字符串 ) 以交談框式顯示出警告字符串12.3 (apply 功能函數(shù)串行) 將功能函數(shù)與串行結(jié)合后執(zhí)行12.4 (defun 名稱(chēng)自變量串行暗示式.) 自定函數(shù)或子法式12.5 (eval 暗示式 ) 傳回 :暗示式的執(zhí)行結(jié)果12.6 (exit) 強(qiáng)制退出目前的應(yīng)用法式12.7 (lambda 自變量暗示式) 界說(shuō)未具名的函數(shù)12.8 (progn 表達(dá)式 1 表達(dá)式 2 .) 連結(jié)其內(nèi)的表達(dá)式為一組

44、,經(jīng)常使用于配合if、cond等函數(shù)12.9 (quit) 強(qiáng)制退出目前的應(yīng)用法式12.10 (tablet 代碼 列 1 列 2 列 3方向 ) 取用或建立對(duì)數(shù)字板的校調(diào)12.11 (trace函數(shù)一)對(duì)函數(shù)設(shè)定追蹤旗號(hào),輔助除錯(cuò)12.12 (untrace函數(shù))對(duì)函數(shù)設(shè)定解除追蹤旗號(hào)第十三類(lèi)顯示、打印控制功能函數(shù)項(xiàng)目函數(shù)語(yǔ)法傳回13.1 (graphscr) 作圖環(huán)境切換到圖形畫(huà)面13.2 (grclear) 暫時(shí)清除模前的屏幕畫(huà)面13.3 (grdraw 起點(diǎn)終點(diǎn)顏色亮顯 ) 暫時(shí)性的畫(huà)出一條線13.4 (grread 追蹤) 由輸入設(shè)備讀取追蹤值13.5 (grtext 位置字符串 亮

45、顯 ) 將字符串顯示在狀態(tài)列或屏幕菜單上13.6 (grvecs 向量串行 轉(zhuǎn)置矩陣 ) 暫時(shí)性的畫(huà)出多條線13.7 (menucmd 字符串 ) 提供在 AutoLISP 中呼叫各菜單13.8 (prin1 暗示式 檔案代碼 ) 將暗示式打印于命令區(qū)或已開(kāi)啟的檔案 ,句柄字符則以 為前綴展開(kāi)13.9 (princ 暗示式檔案代碼 ) 除句柄字符則不以 為前綴展開(kāi)外其余同 prin113.10 (print 暗示式 檔案代碼 ) 除暗示式會(huì)往下一新行列出 ,及一空格外其余同 prin113.11 (prompt 訊息 ) 將訊息顯示于屏幕的命令區(qū) ,并隨后響應(yīng)一個(gè)nil 訊息13.12 (redraw 圖元名稱(chēng)模式) 重繪整張圖或依圖元名稱(chēng)重繪

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論