CADLISP函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CADLISP语言
数据类型
1.表
2.文件描述符
3.实体名
4.选择集
5.内部函数(Auto LISP子程序)
赋值与数值计算函数
1.(1+ 数) 加1函数
2.(1- 数) 减1函数
3.(abs 数)求绝对值
4.(max数数……)求最大数
5.(min数数……)求最小数
6.(sqrt数)求平方根
7.(expt数幂)乘方
8.(exp 幂)e的任意次方
9.(log数)对数
10.(sin 角)正弦函数
11.(cos角)余弦
12.(atan数1[数2])反正切函数
13.(rem数1 数2)求余数
14.(gcd数数……)最大公约数
15.(~ 整数)求补注:用pi表示圆周率π
16.(logand数数……)按位逻辑”与”函数
17.(logior数数……)按位逻辑”或”函数
18.(~ 数)按位逻辑”非”函数
19.(and 表达式……)逻辑”与”函数
20.(or 表达式……)逻辑”或”函数
21.(not 表达式)逻辑”非”函数
22.(lsh 数位数)位移函数
23.(boole 方式数1 数2……)布尔运算。方式有16种,如1为and,6为xor(异或),7为or,8为not等。
24.(= 原子原子……)等于函数
25.(/= 原子原子)不等于函数
26.(< 原子原子)小于函数
27.(<= 原子原子)小于等于函数
28.(> 原子原子)大于函数
29.(>= 原子原子)大于等于函数
30.(atom 项)原子测试
31.(listp 项)表测试
32.(boundp 原子)原子值测试
33.(null 项)空测试
34.(numberp 项)数值测试
35.(minusp 项)负值测试
36.(zerop 项)零测试
37.(eq 式1 式2)相同表达式测试
38.(equal式1 式2)相等测试
39.(wcmatch 字符串模式)字符匹配测试
分支与循环
1.(if 条件式1[式2])若条件为真,则执行式1;否则执行式2。
2.(cond(条件1 式1……)(条件2 式2……)……)分支函数。如:(cond((minusp a)(- a))(T a))求a的
绝对值。注:cond是AutoLISP中最基本的条件函数,由它为核心构成的自定义函数可以实现循环和递归等功能。
3.(repeat 次数式1 式2 ……)重复函数。将多个表达式重复执行多次。
4.(while 条件式1 式2 ……)循环函数。条件为真,执行表达式。否则结束循环。如:(setq s 0 a 1)(while(<
a 101)(setq s(+ s a))(setq a(1+ a)))(print s) 计算0~100之间所有整数的和。
5.(progn 式1 式2 ……)求多个表达式值函数。在只能用一个表达式的地方,使用他可完成多个表达式的计算。
如if 语句中
字符串与类型转换函数
1.(ascii 字符串)ASCII码转换
2.(chr 整数)字符转换
3.(strcat 字符串……)字符串连接
4.(strlen 字符串……)字符串长度测试
5.(substr 字符串起点 [长度])取子字符串。如果不设置长度,则取到最后一个字符。
6.(strcase 字符串 [方式])字符串大小写转换。若指定了方式且非空(NIL),则把所有的字母转换为小写;
否则转换为大写。
7.(float 数)整型变实型
8.(fix 数)实型变整型
9.(itoa 整型数)整型变字符串
10.(atoi 字符串)字符串变整型
11.(atof 字符串)字符串变实型
12.(angtos 角方式精度)角度单位转换。“角”是以弧度为单位的实数,转换为其它单位,返回一个字符串。
该字符串是以“方式”和“精度”的要求,按AutoCAD的系统变量UNITMODE(单位模式)对“角”进行处理得到的,“精度”为小数点后的位数。“方式”有:0为度,1为度/分/秒,2为梯度,3为弧度等。
13.(rtos 数方式精度)实数计数制转换。方式:1为科学计数法,2为十进制,3为工程制(英寸与小数英寸),
4为建筑制(英寸与分数英寸)
14.(cvunit 值旧单位新单位)单位制转换。单位名称可以是acad.unt文件中给出的任意单位格式,否则返回
NIL
(trans 点旧坐标系新坐标系)坐标转换。坐标:0为WCS(世界坐标系),1为UCS(用户坐标系),2为DCS(显示坐标系)
表处理函数
1.(quote 表达式)引用函数。作用:告诉程序不要对后面的表达式求值。如:(quote(x y z))可简写为’
(x y z)
2.(car 表)取表中的第一个元素
3.(cdr 表)取子表函数。返回除第一个元素以外的所有元素组成的新表
4.由car与cdr组合而成的函数
car与cdr是取表元素的基本函数。这两个函数可以组合起来使用,从而获得表中的其它元素,例如 cadr。
这种组合最多可达四级,即最多六个字符,如 caddar。AutoLISP执行这组合函数时先从后面做起。例如:(caddr ’(1 2 3))返回3
(caddr ’(a (b c) d))返回(c)
也就是说,若L为一张表,则有:
(cadr ’L)〈=〉(car(cdr L))
(cdadar ’L)〈=〉(cdr(car(cdr(car ’L))))
5.(last 表)取表中最后一个元素
6.(nth n 表)取表中第n个元素(第一个元素的序号为0)
7.(list 表达式……)建立表函数
8.(length 表)测量表长
9.(append 表1 表2 ……)连接表函数
10.(cons 新元素表)向表中添加元素
11. (subst 新项旧项表)元素替换函数
12.(reverse 表)表倒置函数
13.(assoc 关键字关联表)assoc 函数。该函数在“关联表”中搜索“关键字”,并返回关联表中对应元素。搜
索无结果,则返回NIL
14.(member 表达式表)member函数。该函数在“表”中搜索“表达式”,并返回一张由第一次出现的“表达式”
及其后面所有元素构成的新表。
15.(foreach 变量名表表达式……)foreach函数。该函数依次将“表”中的每个元素的值赋给“变量名”对
表中的每个元素计算每个表达式的值。函数返回最后一个表达式的计算结果。
16.(apply 函数表)Apply函数。以表为变元,执行“函数”给定的函数。如:
(apply ’+’(1 2 3))返回 6
(apply ’strcat’(“a”“b”))返回“ab”
Apply既可用于内部函数,也可用于用户定义的函数。
17.(mapcar 函数表1 表2……)mapcar 函数。它执行“函数”给定的函数,并以后面各表中的每个元素作为
函数的变元。如:
(mapcar ’1+’(10 20 30))返回(11 21 31)
(mapcar ’+’(10 20 30)’(4 3 2))返回(14 23 32)
▲Apply函数的操作对象是单个表中的所有元素;mapcar函数则每次只处理多个表中的对应元素,依次处理,直到结束。
自定义函数
1.defun函数
格式:(defun 函数名变量表表达式……)
其中变量表被一个前后均有空格的斜杠符号“ / ”分成两部分(形参 / 局部变量):形参在调用函数时接受参数传递而转换为实参;局部变量仅用于函数内部
1)变量表可以是空格,此时调用函数时无参数传递。
2)变量表中的形参与局部变量均只在所定义的函数中起作用,甚至可以与某外部变量同名,而不会对
外部变量造成任何影响
2.defun函数定义AutoCAD新命令
格式:(defun C:命令名()表达式……)
其中:“命令名”前必须有“C:”,后面必须带一张没有形参的变元表。
mbda函数
格式:(lambda 变元表表达式……)
该函数定义一个无名函数。在经常需要使用某一表达式,而又没必要用defun将它定义为一个新函数时,可使用lambda来完成这个任务。它返回最后一个表达式的值,且经常与apply和mapcar一起使用。如:(apply ’(lambda (x y z )(* x(- y z)))’(5 20 14))
返回30,即5*(20-14)。又如:
(mapcar ’(lambda (x)(* x 5))’(2 4 -6 10.2))