当前位置:
文档之家› AutoLISP语言的基本函数
AutoLISP语言的基本函数
quote eval
对变量和表达式分别求值,且 变量的求值结果仍为变量,再 将表达式的值赋给该变量。
阻止求值器对[表达式]求值,返 回的是[表达式]。 即禁止求值。 对表达式的求值结果再求值。 返回最后的求值结果。
赋值、求值与禁止求值函数举例:
• • • • • • • • (setq x1 2.5 y1 (+ x1 3.2)) 返回:5.700 (setq x 2 y 4.0 pt (list x y)) 返回:(2 4.000) (setq d „c) 返回:C 表明变量d的值为变量C (set d 2) 返回:2 表明变量C的值为2 (quote (+ 6 5)) 返回: (+ 6 5) (eval d) 返回:2 (eval “(+ 3 4)”) 返回:“(+ 3 4)” (eval (+ 3 4)) 返回:7
函数应用举例:
(car „(x y z)) 返回:X ; (car „((a b (c) ) (d) 5)) 返回:(A B (C)) • (cdr „(x y z)) 返回:(Y Z);(cdr „(0 . “LINE”)) 返回:“LINE” • (cadr „( 5 8 12)) 返回:8 ; (caddr „(5 8 12)) 返回:12 • (last „(a b c d)) 返回:D • (nth 2 „(a b c d)) 返回:C; • (nth 0 „(10 13 25 34 46)) 返回:10
[方式]及其含义 1 2 3 科学计数格式 十进制格式 工程计数格式 如:2.83E+12, 1.55E+08 如:283.000 ,15.500 如:1‘-3.5“ 整数英尺和十进制英
寸
4
5 0 1 2 3
建筑计数格式
分数单位格式 十进制度数格式 度/分/秒格式 梯度格式 弧度
如:1‘-3 ½ “
strcas (strcase [字符串] e [方式])
举 例 (ascii “A”) 返回:65 (chr 65) 返回:“A” (strlen “CAD”) 返回:3 (substr “AutoCAD” 5) 返回:“CAD” (strcase “AutoLisp” ) 返回:“AUTOLISP”
[新项] [旧项] [表]) 用[新项]取代[表]中的[旧项]。 返回将[表]的顶层元素进行倒排 后的新表。
reverse (reverse [表])
举例:
• • • • • • • (cons „(a b) „(c d)) 返回:((A B) C D) (list „(a b) „(c d)) 返回:((A B) (C D)) (append „(a b) „(c d)) 返回:(A B C D) (subst „a „x „(x y z)) 返回:(A Y Z) (reverse „(a b c d)) 返回: (D C B A) (cons „x „a) 返回:(X . A) (cons „x „(a b c)) 返回:(X A B C)
10.5 常用程序实例
• • • • • • • • • • • • • • 1). 替换任意联结表中的某个关键字的值 (defun sublist (/ pold new lnew lold) (setq ldata „((p 20) (n 1200) (I 3.5) (a 200) (d1 30))) (setq pold (getstring “\nInput a keyword:”) new (getreal “\n New Value:”) lnew (list (read pold) new) lold (assoc (read pold) ldata));setq (subst lnew lold ldata) ); end defun 程序运行如下: Command: (sublist ) Input a keyword: a New Value: 400 ((p 20) (n 1200) (I 3.5) (a 400) (d1 30))
log sqrt
abs
(log [数] ) (sqrt [数])
(abs [数] )
返回[数]的自然对数 返回[数]的平方根
返回[数]的绝对值
2. 三角函数
三角函数参数值的类型可为实型数或整型数,返回值的类型总 是实型数。参数[角度]必须用弧度,如(/ pi 6) 或 (* 0.017453 30) 表示角度为30度时的弧度值。
1. 算术运算函数
函数名 + * / 1+ 格 式 (+ [数1] [数2] …) (- [数1] [数2] …) (* [数1] [数2] …) (/ [数1] [数2] …) (1+ [数]) 功 能
返回所有被加数之和 返回所有被减数之差 返回所有数的积 返回首数除以其余数的商 返回该数加1的结果
函数名
格
式
功
能
float
fix
(float [数])
(fix [数])
返回将一个[数]转换 成实型数的结果。 截尾取整。
4. 字符串处理函数
4.1 字符与ASCII码互换函数 (A~Z 65~90 a~z 97~122)
函数名 格式 ascii (ascii [字符串]) chr (chr [整数]) strlen (strlen [字符串]) substr (substr [字符串] [start] [length])
1rem
(1- [数])
返回该数减1的结果
(rem [数1] [数2] …) 返回首数除以其余数的余数
续前表
max (max [数1] [数2] …) 返回其中最大数
min gcd
exp expt
(min [数1] [数2] …)
返回其中最小数
(gcd [整数1] [整数2] ) 返回最大公约数
(exp [n] ) (expt [数] [n] ) 返回e的n次幂的值 返回[数]的n次幂的值
10.4 AutoLISP的基本函数
• 本节主要介绍AutoLISP基本函数的功能及其使用方 法,基本函数主要包括数值函数、赋值函数、求值 函数与禁止求值函数,表处理函数、字符串处理函 数、交互式输入函数和屏幕操作函数等,并针对所 讲述的函数介绍一些程序设计的基本方法和技巧。
•
A.
学习要求:
了解函数的调用格式,即函数名、函数参数的个数 及其类型; 了解函数的功能; 了解函数参数的求值情况,即哪些要被求值,哪些 不被求值; 了解函数求值结果的返回值类型。
(angtos (* 0.25 pi) 0 3) 返回:“45.000” (angtos (* 0.25 pi) 1 3) 返回:“45d0‟0\”” (angtos (* 0.25 pi) 2 3) 返回:“50.000g”
• 4.3 其它字符串函数
1. 实现字符串连接的strcat函数 调用格式: (strcat [字符串1] [字符串2]…) Command: (strcat “I am” “ a” “ student”) “I am a student” 2. 字符串转换成表或原子的read函数 调用格式:(read [字符串]) Command: (read “hello”) HELLO Command: (read (rtos (* 8 7) 2 3)) 56.000
4.2 数字与字符串互换函数
函数名
格
式
功能ຫໍສະໝຸດ itoa(itoa [整形数])
整形数转换成数字串
atoi
atof
(atoi [数字串])
(atof [数字串])
数字串转换成整形数
数字串转换成实形数
rtos
(rtos [数字] [方式][精度]) 数字转换成实数串
angto (angtos [角度][方式][精度]) 角度转换成字符串 s
寸
整数英尺和分数英
如:15 1/2 如:45.000 如:45d0‟0” 如:50.0000g 如:0.7854r
• 举例:
(itoa (atoi (atof (rtos (rtos 33) 返回:“33” “-12.986”) 返回:-12 “46”) 返回:46.000 17.5 2 3) 返回:“17.500” 17.5 1 3) 返回:“1.75E+01”
10.4.2 赋值函数、禁止求值函数和再求值函数
函数名
setq
格 式
(setq [变量1][表达式1] [变量2][表达式2]…) (set [变量] [表达式]) (quote [表达式]) 或 ‘([表达式]) (eval [表达式])
功 能
仅对表达式求值,并将表达式 的值赋给前面相应的变量
set
2.表的构造与修改函数
函数名 格 式 功 能
把[表达式1]加到[表达式2上]而 构成一个新表。
将所有[表达式]的求值结果按原 位置构成表返回。 将任意多个[表]中的元素按照原 顺序串在一起组成一个新表。
cons
list
(cons [表达式1][表达式2])
(list [表达式]…)
append (append [表]…) subst (subst
10.4.3 表处理函数
表(LIST)是AutoLISP语言中最基本的的数据类型,表处理正是LISP 所具有的特性。
1. 取表中部分内容的函数
函数名 格式 car cdr (car [表]) (cdr [表]) 功能
提取表中首元素并返回其值 除去表中首元素并返回剩余的表 提取表中末元素并返回其值 提取表中第(n+1)个元素并返回其值
B. C. D.
10.4.1 数值函数
• 数值函数用于处理整型数和实型数,数值函 数包括:基本算术函数、三角函数、位操作 布尔函数。数值函数的返回值类型取决于参 数表中参数的数据类型。