2 AutoLISP 基本函數(shù)
《2 AutoLISP 基本函數(shù)》由會員分享,可在線閱讀,更多相關(guān)《2 AutoLISP 基本函數(shù)(55頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、CAD 程序設(shè)計方法程序設(shè)計方法教師:李敬敏郵箱:二二AutoLISP 基本函數(shù)基本函數(shù)引言1 AutoLISP函數(shù)分為:系統(tǒng)內(nèi)部函數(shù)和用戶自定義的外部函數(shù)2 AutoLISP函數(shù)的調(diào)用:通過對標準表來實現(xiàn),一般格式:(函數(shù)名參數(shù)1參數(shù)2)3 主要學習內(nèi)容:1)函數(shù)的功能和作用2)函數(shù)的調(diào)用格式:函數(shù)名,參數(shù)個數(shù)及要求和類型3)函數(shù)參數(shù)的求值情況4)函數(shù)求值結(jié)果的返回類型2.1賦值與求值函數(shù)賦值與求值函數(shù)1 賦值函數(shù)(setqsetq )2.1賦值與求值函數(shù)賦值與求值函數(shù)1 賦值函數(shù)(setqsetq )功能:賦值函數(shù),把表達式的值賦給前一個變量格式:必須成對出現(xiàn)參數(shù)類型及求值:其奇數(shù)位上的參
2、數(shù)不被求值,并且必須是符號原子。偶數(shù)位上的參數(shù),可為整數(shù)、實數(shù)、表、字符串、文件描述符、內(nèi)部函數(shù)名等內(nèi)容,要被求值,并把求值結(jié)果賦給前一個變量返回:最后一個表達式的求值結(jié)果2.1賦值與求值函數(shù)賦值與求值函數(shù)1 賦值函數(shù)(setqsetq )注意:注意:1、setq采用串行賦值,總是把偶數(shù)位的值賦給奇數(shù)位上的變量2、表達式求值規(guī)則:整型數(shù)、實型數(shù)和字符串其本身的值就是求值結(jié)果;表根據(jù)第一個元素進行求值3、最好不要給AutoLISP一些內(nèi)置函數(shù)名及符號賦值。雖然是有效的,但保留符號和函數(shù)將被重新定義2.1 2.1 賦值與求值函數(shù)賦值與求值函數(shù)2 再賦值函數(shù)(setset )功能:再賦值函數(shù),給變量
3、的值賦值的函數(shù)格式:只能有兩個參數(shù),且對都要求值,把各個參數(shù)均當成表達式來看待,對各個參數(shù)分別進行求值運算后,再進行賦值運算參數(shù)類型及求值:的值賦給 的值,的值也必須為變量返回:的值2.1 2.1 賦值與求值函數(shù)賦值與求值函數(shù)3 禁止求值函數(shù)(quotequote )作用:禁止對緊跟其后的表達式求值格式:只有一個,還可以用 來表示參數(shù)類型及求值:對 禁止求值返回:(quote(+5 5)實例:引用表在使用時,必引用表在使用時,必須使用須使用quote函數(shù)函數(shù)(command“l(fā)ine”(1 1)(3 3)“”)(+5 5)2.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù)1 算術(shù)運算函數(shù)(+)返回所有的
4、和。其中,可以 是整型數(shù),實型數(shù),表達式 (-)返回第一個與后面所有數(shù)的差 (*)返回所有的乘積(/)返回依次除以其他數(shù)后的商 (1+)返回加1后的值 (注意:(注意:1與與+號之間不能有空格)號之間不能有空格)(1-)返回減1后的值 (注意:(注意:1與與-號之間不能有空格)號之間不能有空格)(abs )返回的絕對值 2.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù)1 算術(shù)運算函數(shù)(sqrt)求的平方根,返回值為實型數(shù)(max )返回中的最大值(min)返回中的最小值(exp )返回e的次方的值(expt )返回的次方的值 (log )是exp函數(shù)的反函數(shù),返回的自 然對數(shù)值,其數(shù)據(jù)類型為實型數(shù)。(
5、gcd )求兩個數(shù)的最大公約數(shù)(rem )求除以的余數(shù),若 多于兩個,則余數(shù)依次除以下一個2.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù)返回值類型規(guī)則 1、參數(shù)表中的所有參數(shù)都為整型數(shù),結(jié)果返回整型數(shù) (/25 3/25 3)返回 82、兩參數(shù)中有一個為實型數(shù),結(jié)果返回實型數(shù) (/25 3.0/25 3.0)返回 8.3333、參數(shù)表中的參數(shù)多于兩個,則從前至后按規(guī)則1,2 依次運算,結(jié)果與下一個參數(shù)再進行運算 (/25 3.0 2/25 3.0 2)返回 4.1666 (/25 3 2/25 3 2)返回返回 4 4 2.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù)2 三角函數(shù)(sinsin)該弧度角的S
6、IN正弦值(coscos)該弧度角的COS余弦值(atanatan )該數(shù)值的反正切弧度值2.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù)2 三角函數(shù)(sin sin )返回:的正弦值,返回值總是實型數(shù)參數(shù)類型:的單位為弧度,PI為專用符號(sin(*30(/PI 180);返回0.5;返回0.707107(sin(*45(/PI 180)(sin PI);返回0.0(sin 0);返回0.02.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù) 2 三角函數(shù)(cos cos )返回:的余弦值,返回值總是實型數(shù)參數(shù)類型:的單位為弧度,PI為專用符號(cos(*30(/PI 180);返回0.866025;返回0.7
7、07107(cos(*45(/PI 180)(cos PI);返回-1.0(cos 0);返回1.02.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù)2 三角函數(shù)(atan atan )返回:計算的反正切值,返回角度以弧度表示(atan 1.0);返回0.785398;返回0.463648(atan 0.5)(atan-1);返回-0.7853982.2 2.2 數(shù)值計算函數(shù)數(shù)值計算函數(shù) 三角函數(shù)(atan atan )返回:計算 除以的反正切值,返回角以弧度表示(atan 2.0 3.0);返回0.588002;返回1.570796(atan 2.0 0)(atan-0.5 0);返回-1.57079
8、6注意:如果 為零,則根據(jù)的符號,返回+(-)90度的弧度二、二、AutoLISP 基本函數(shù)基本函數(shù)討論與練習(Setq y(+(expt x 3)(*a x x)(*b x)c)(/(*x y)(+(/sinx cosx)(*a sin(*2 y)二、二、AutoLISP 基本函數(shù)基本函數(shù)討論與練習(setq x 4)(1+(expt x 3)(*x x)x)?(+(cos(*2.0 x)(*x sin(/x 2)思考思考2.3 2.3 字符串處理函數(shù)字符串處理函數(shù)(strcatstrcat)將各個順序連接起來,組成一個新的字符串 (strlen 求長度 (substr substr )返回
9、中的一個子串,從位置起,連續(xù)個字符(strcasestrcase)根據(jù)的值把串轉(zhuǎn)換成小寫或大寫字符串 (readread)返回中第一個原子或表 2.4 2.4 關(guān)系運算函數(shù)關(guān)系運算函數(shù)(=)如果所有如果所有在數(shù)值上相等,返回在數(shù)值上相等,返回T,否則返回,否則返回nil(/=)前兩個前兩個在數(shù)值上不相等,返回在數(shù)值上不相等,返回T,否則返回,否則返回nil ()()(=2)(=)第一個第一個值是否都小于、大于、大于等于或小于等于右邊的表達式的值,若是返回T,否則返回NIL 2.4 2.4 關(guān)系運算函數(shù)關(guān)系運算函數(shù)等值函數(shù)(equal equal )作用:與的值相等就返回T,否則返回NIL。(s
10、etq q1(x y z)(setq q3 q2)(equal q1 q3)注意:指定兩個表達式的最大誤差,值在誤差范圍內(nèi),也認為相等(setq q2(x y z)(equal q2 q3)(equal 1.123456 1.123457 0.000001)2.5 2.5 邏輯運算函數(shù)邏輯運算函數(shù)(and (and 1 )返回所有的邏輯與:只要有一個的結(jié)果為nil,返回nil,否則返回T (or or 1 )返回所有的邏輯或:如果所有的結(jié)果為nil,返回nil,有一個為T,返回T (not not )返回的邏輯非:如果的結(jié)果為nil,返回T,否則返回nil (and 5.0(setq a 2)
11、“X5”)(and 5.0(setq a nil)“X5”)(or nil()“X5”)(not(setq a 10)2.6 2.6 幾何函數(shù)幾何函數(shù) (angle angle 1)求兩點的角度弧度值求兩點的角度弧度值 (distance distance 1)求兩點間的距離求兩點間的距離(polar polar )按極坐標法取得另一點坐標按極坐標法取得另一點坐標 (intersinters 4 )取得兩條線的交點取得兩條線的交點 (osnap osnap )按捕捉模式取得另一坐標點按捕捉模式取得另一坐標點2.6 幾何函數(shù)幾何函數(shù)1 求角度函數(shù)(angleangle )功能:求與之間連線的方位
12、角單位:為弧度(angle(1.0 1.0)(1.0 5.0)(setq a(/(*180(angle(1.0 1.0)(1.0 5.0)PI)函數(shù)的參數(shù):的坐標2.6 幾何函數(shù)幾何函數(shù)2 求距離函數(shù)(distancedistance )功能:求與之間距離注意:可以是二維,也可以是三維(distance(1.0 2.5 3.0)(7.7 2.5 8.0)(distance(1.0 2.5)(7.7 2.5)(返回:8.36)(返回:6.70)2.6 幾何函數(shù)幾何函數(shù)3 求坐標點函數(shù)(polarpolar )功能:以為參考點,指定和 點的坐標X、Y(polar(1.0 1.0)(/PI 4)(s
13、qrt 2.0)(返回(2.0 2.0)2.6 幾何函數(shù)幾何函數(shù)2.6 幾何函數(shù)幾何函數(shù)2.6 幾何函數(shù)幾何函數(shù)4 求交點函數(shù)(intersinters 方式)功能:檢查兩條直線是否相交,如果相交,返回交點坐標,如果不相交,返回NIL。注意:若方式存在,且值為NIL,認為直線是無限長的,交點可以在延長線上;若方式不存在,或值為非NIL,認為直線是不可延長的,交點只在兩線段上才能返回,否則為NIL2.6 幾何函數(shù)幾何函數(shù)5 目標捕捉函數(shù)(osnaposnap )功能:基于給定的,按的方式,捕捉圖形的特征點注意:可以是”nea”,”Mid”,“endp”,“cen”等(setq Pb(osnap
14、Pa Mid)二、二、AutoLISP 基本函數(shù)基本函數(shù)目標1:希望能在輸入左下角點后,只給直角三角形的底邊與斜邊長后,自動繪出該直角三角形,并求出Pb,Pc的角度。步驟一:定出程序名稱:B-1 r-a-triangle.lsp步驟二:構(gòu)思程序流程,相關(guān)變量已知:Pa,ww,kkhh二、二、AutoLISP 基本函數(shù)基本函數(shù)目標1:希望能在輸入左下角點后,只給直角三角形的底邊與斜邊長后,自動繪出該直角三角形,并求出各角的角度。步驟三:編寫程序步驟四:執(zhí)行程序二、二、AutoLISP 基本函數(shù)基本函數(shù)目標1:希望能在輸入左下角點后,只給直角三角形的底邊與斜邊長后,自動繪出該直角三角形,并求出各角
15、的角度。步驟五:程序改進及注意重點lAutoLISP中,沒有反正弦與反余弦函數(shù),所以無法通過kk和ww求出PB反正弦夾角,也無法通過kk和hh求出PC反余弦角 (setq ang_pb(atan(/hh ww)(setq ang_pb(*ang_pb(/180 pi)(setq ang_pc(-90 ang_pb)l(setq ang_pb(atan(/hh ww)也可以改寫成 (setq ang_pb(atan hh ww),結(jié)果一樣二、二、AutoLISP 基本函數(shù)基本函數(shù)目標1:希望能在輸入左下角點后,只給直角三角形的底邊與斜邊長后,自動繪出該直角三角形,并求出各角的角度。步驟五:程序改
16、進及注意重點(princ n PB夾角=)(princ ang_pb)(princ 度)(princ n PC夾角=)(princ ang_pc)(princ 度)這兩句也可以用下面將介紹的字符串鏈接函數(shù)strcat合并為一個字符串,如下(princ(strcat n PB夾角=“(rtos ang_pb)”度)(princ(strcat n PC夾角=“(rtos ang_pc)”度)二、二、AutoLISP 基本函數(shù)基本函數(shù)目標2:希望能自動畫出多個等半徑圓相切步驟一:定出程序名稱:B-2 t-circle.lsp步驟二:構(gòu)思程序流程,相關(guān)變量已知:輸入基準點baspt;輸入小圓半徑rad
17、;輸入欲相切的圓的數(shù)量num二、二、AutoLISP 基本函數(shù)基本函數(shù)目標2:希望能自動畫出多個等半徑圓相切步驟二:程序準備二、二、AutoLISP 基本函數(shù)基本函數(shù)目標2:希望能自動畫出多個等半徑圓相切步驟三:編寫程序步驟四:執(zhí)行程序二、二、AutoLISP 基本函數(shù)基本函數(shù)目標2:希望能自動畫出多個等半徑圓相切。步驟五:程序改進及注意重點(setq kk(/rad(sin ang1)可推算如下 sin(ang1)=對邊/斜邊=rad/kk kk=rad/sin(ang1)改成LISP表達式:(setq kk(/rad(sin ang1)lArray命令后的七個自變量必須配合正常執(zhí)行的順序輸
18、入 思考與練習思考與練習目標3:已知三角形左下角點與三邊長已知三角形左下角點與三邊長A、B、C,請設(shè)計程序自動畫出該三角形請設(shè)計程序自動畫出該三角形 目標目標4:已知該圖形的已知該圖形的Baspt 與與W1,W2,A,B,D五個尺寸,請設(shè)計程序自動畫出該圖形五個尺寸,請設(shè)計程序自動畫出該圖形2.7 數(shù)字、字符串轉(zhuǎn)換函數(shù)數(shù)字、字符串轉(zhuǎn)換函數(shù)(ascii )將字符串中的第一個字符轉(zhuǎn)換成將字符串中的第一個字符轉(zhuǎn)換成ASCII碼碼 (atof )將數(shù)字開頭的字符串的數(shù)字轉(zhuǎn)換為實型數(shù)將數(shù)字開頭的字符串的數(shù)字轉(zhuǎn)換為實型數(shù)(atoi )將數(shù)字開頭的字符串的數(shù)字轉(zhuǎn)換為整數(shù)將數(shù)字開頭的字符串的數(shù)字轉(zhuǎn)換為整數(shù) (
19、chr )將代表將代表ASCII碼的整型數(shù)轉(zhuǎn)換成字符串碼的整型數(shù)轉(zhuǎn)換成字符串(itoa )將整型數(shù)轉(zhuǎn)換為字符串將整型數(shù)轉(zhuǎn)換為字符串(float )將將轉(zhuǎn)換為實型數(shù)轉(zhuǎn)換為實型數(shù)(fix)截尾取整函數(shù)截尾取整函數(shù)(angtos )根據(jù)根據(jù) 對對進進行行單單位位換換算,返回以字符串方式的算,返回以字符串方式的結(jié)結(jié)果果(rtos )根據(jù)根據(jù) 對對進進行行單單位位換換算,返回以字符串方式的算,返回以字符串方式的結(jié)結(jié)果果(princ n PB夾角=)(princ ang_pb)(princ 度)(princ(strcat n PB夾角=“(rtos ang_pb)”度)2.8 表處理函數(shù)表處理函數(shù)(lis
20、t )構(gòu)造新表函數(shù)構(gòu)造新表函數(shù) (append )構(gòu)造新表函數(shù)構(gòu)造新表函數(shù)(cons 2)新元素加入表函數(shù)新元素加入表函數(shù) (car )取表頭函數(shù)取表頭函數(shù) (cdr )取表尾函數(shù)取表尾函數(shù)(cadr)取表第二個元素取表第二個元素(last)取表最后一個元素取表最后一個元素(nth)取表第取表第n個元素個元素 (lengthlength)求表元素個數(shù)求表元素個數(shù)(reverse reverse)顛倒表元素順序顛倒表元素順序(subst )替替換換表中的元素表中的元素(assoc(assoc )檢索表中的元素檢索表中的元素2.8 表處理函數(shù)表處理函數(shù)1 構(gòu)造新表函數(shù)(listlist )功能:所
21、有的值構(gòu)成表,參數(shù)是表達式,返回的是各個表達式的值構(gòu)成的表(list(b c)a(+5 6)返回:(B C)A 11)(list (+5 6)c d)返回:(11 C D)2.8 表處理函數(shù)表處理函數(shù)2 構(gòu)造新表函數(shù)(appendappend )功能:將所有中元素組成一個新表返回,參數(shù)必須是表,返回的是表(append (a b)(c d)返回:(A B C D)(append (a)(b)(c)(d)返回:(A)(B)(C)(D)2.8 表處理函數(shù)表處理函數(shù)3 新元素加入表函數(shù)(conscons )功能:自變量是表達式,將的值加到而構(gòu)成一個新表,返回的是表(cons a(b c)返回:(A
22、B C)(cons (a)(b d)返回:(A)B D)(cons (+5 6)(b d)返回:(11 B D)2.8 表處理函數(shù)表處理函數(shù)討論與練習List、append、cons用法和區(qū)別(list(a b)(c d)返回:(a b)(c d)(append(a b)(c d)返回:(a b c d)(cons(a b)(c d)返回:(a b)c d)(list l l)返回:(L(c d)(append l l)返回:?(cons l l)返回:(L c d)(setq l(c d)2.8 表處理函數(shù)表處理函數(shù)(carcar )返回:取表頭函數(shù),返回的第一個元素(可以是原子,也可以是表
23、),若表為空,則返回NIL(car(a b c)返回:取表尾函數(shù),求除第一個元素外的所有元素(以表的形式返回);返回(B C)(cdrcdr )(cdr(a b)c);返回 A;返回(A B)(cdr(a b c);返回(C)(car(a b)c)2.8 表處理函數(shù)表處理函數(shù)(cadrcadr )返回:取表第二元素函數(shù),先執(zhí)行cdr,再執(zhí)行carAutoLISP支持car 和cdr的組合深度可達四級,作用的順序為從右到左;返回D(cadar(a b c d)e f);返回(3.0 5.0)(cadddr(a b c d e f);返回B(setq p1(3.0 6.0)p2(4.0 5.0)(
24、setq p3(list(car p1)(cadr p2)(cadr (a b c);返回B(cadar(a b)(c);返回B2.8 表處理函數(shù)表處理函數(shù)(lastlast )返回:取中最后一個元素,返回的最后一個元素(必須不為空)(last(a b c d e f)返回:檢索中頂層第 號元素,為正整數(shù)。(表中元素是有序的,序號是從0開始);返回(D E)(nthnth )(nth 4(a(b c)(d e)f);返回 F;返回(E F)(nth 2(a(b c)(d e)f);返回nil(last(a b c d(e f)2.8 表處理函數(shù)表處理函數(shù)討論與練習car、cdr、cadr、la
25、st、nth 函數(shù)的用法和區(qū)別(car(a b c d e f g)返回:A返回:(b c d e f g)返回:B返回:D(cdr(a b c d e f g)(cadr(a b c d e f g)(last(a b c d e f g)返回:G(nth 3(a b c d e f g)2.8 表處理函數(shù)表處理函數(shù) 顛倒表元素順序函數(shù)(reversereverse )功能:返回的頂層元素顛倒排列后的新表,返回的是表(reverse (a(b c)(d e)f)返回:(F(D E)(B C)A)(lengthlength )功能:求中頂層元素個數(shù)(length (a(b c)(d e)f)返
26、回:4(length (cadr(a b)(c d(e f)返回:3 求表元素個數(shù)函數(shù)2.8 表處理函數(shù)表處理函數(shù) 替換表中元素函數(shù)(substsubst )功能:將中頂層元素的用替換,返回替換后的表。若沒有找到,則返回沒有更換的(subst a b(a b c)返回:(A A C)(setq example(one(two1 two2)one two)(subst x one example)返回:(x(two1 two2)x two)(subst(x2 y2)two2 example)返回:(one(two1 two2)one two)2.8 表處理函數(shù)表處理函數(shù) 檢索表中元素函數(shù)(ass
27、ocassoc )功能:返回中與相同的第一個子表或點對,如果沒有找到包含有子表或點對,則返回NIL。(setq yesterday(T 39)(P(120 60)(pu 72)(setq today(T 38)(P(120 65)(pu 70)(-(cadr(assoc T today)(cadr(assoc T yesterday)(assoc (+3 2)(5.FIRST)(4.SECOND)(5.THIRD)2.8 表處理函數(shù)表處理函數(shù)討論與練習(setq LLL(1“A”)(2“B”)(3“C”)(4“D”)(assoc 2 LLL)返回:(2 B)返回:(1 A)返回:(2 B)返回:4(car LLL)(cadr LLL)(nth 3 LLL)返回:(4 D)(length LLL)(cadr(assoc 3 LLL)返回:C2.8 表處理函數(shù)表處理函數(shù)討論與練習設(shè)(setq La(A B)(C)(D E)從La表中取出元素A、B、C、D、E 比較LIST、APPEND、CONS用法的區(qū)別(LIST(a b c)(x y z)(a b c)(x y z)(APPEND(a b c)(x y z)(a b c x y z)(CONS(a b c)(x y z)(a b c)x y z)
- 溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習題含答案
- 2煤礦爆破工考試復(fù)習題含答案
- 1 各種煤礦安全考試試題含答案