CADLISP函数

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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))

相关文档
最新文档