Auto CAD 二次开发 Lisp 字典解读.docx
- 文档编号:5404113
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:173
- 大小:112.92KB
Auto CAD 二次开发 Lisp 字典解读.docx
《Auto CAD 二次开发 Lisp 字典解读.docx》由会员分享,可在线阅读,更多相关《Auto CAD 二次开发 Lisp 字典解读.docx(173页珍藏版)》请在冰豆网上搜索。
AutoCAD二次开发Lisp字典解读
AutoCAD
Lisp函数及例题大全
一,基本函数:
1,算术运算
+
一.功能
返回所有被加数之和。
二.格式
(+ [numbernumber]...)
三.说明
如果在调用本函数时仅提供了一个变元number,本函数会返回变元number与0相加的结果。
本函数的运行结果是一个数。
若不提供变元,则返回0。
四.实例
(+32) ;;;返回5
(+1034.5);;;返回8.5
(+12) ;;;返回3
(+1234.5);;;返回10.5
(+1234.0);;;返回10.0
-
一.功能
从第一个数减去第二个数和随后的那些数,并返回差值。
二.格式
(- [numbernumber]...)
三.说明
调用函数时,如果提供的变元多于两个,则本函数返回从第一个数减去第二个数到最后一个数的和的差值。
如果仅提供一个number变元,本函数返回0减去number差值。
本函数的返回结果是一个数。
若不提供变元,则返回0。
四.实例
(-5030) ;;;返回20
(-5040.02) ;;;返回8.0
(-5040) ;;;返回10
(-5040.0) ;;;返回10.0
(-5040.02.5);;;返回7.5
(-8) ;;;返回-8
*
一.功能
返回所有数的积。
二.格式
(* [numbernumber]...)
三.说明
如果调用本函数时提供了一个number变元,本函数则返加这个变元与1相乘的结果。
本函数的返回结果是一个数。
不提供变元则返回0。
四.实例
(*24) ;;;返回8
(*224.0);;;返回16.0
(*23) ;;;返回6
(*23.0) ;;;返回6.0
(*234.0);;;返回24.0
(*3-4.5) ;;;返回-13.5
(*3) ;;;返回3
/
一.功能
第一个数除以其余数的积,返回商。
二.格式
(/ [numbernumber]...)
三.说明
调用本函数时,如果提供的变元多于2个,本函数用第一个数作为被除数,除以第二个数到最后一个数的积,返回最后得到的商。
如果仅提供了一个变元number,本函数返回number除以1的结果。
本函数的运算结果是一个数。
若不提供变元,则返回0。
四.实例
(/1002) ;;;返回50
(/1002.0) ;;;返回50
(/10020.02);;;返回2.5
(/100202) ;;;返回2
(/4) ;;;返回4
~
一.功能
返回变元的按位非(即1的补码)。
二.格式
(~ int )
三.说明
变元int必须为整型数。
四.实例
(~3) ;;;返回-4
(~100);;;返回-101
(~-4) ;;;返回3
1+
一.功能
返回变元增1后的结果。
二.格式
(1+ number)
三.说明
四.实例
(1+4);;;返回5
(1+-17.5);;;返回-16.5
1-
一.功能
返回变元减1后的结果。
二.格式
(1- number)
三.说明
四.实例
(1-4);;;返回3
(1--17.5;;;返回-18.5
abs
一.功能
返回变元的绝对值
二.格式
(abs number)
三.说明
四.实例
(abs10) ;;;返回 10
(abs -50) ;;;返回 50
(abs-15) ;;;返回 15
atan
一.功能
返回一个数的反正切值,单位为弧度。
二.格式
(atan num1[num2])
三.说明
调用atan函数时,若仅提供变元num1,则本函数返回数num1的反正切值,单位为弧度。
如果提供了num1和num2这两个变元,atan函数返回num1/num2的反正切值,单位为弧度。
如果num2是零,则返回的角度为正或为负的1.570796弧度(+90度或-90度),取决于num1是正还是负。
所返回的角度范围是-Pi/2至+Pi/2弧度。
四.实例
例1.(atan 0.5);;;返回0.463648
(atan 1.0);;;返回0.785398
(atan -1.0);;;返回-0.785398
(atan 2.03.0);;;返回0.588003
(atan 2.0-3.0);;;返回2.55359
(atan 1.00.0);;;返回1.5708
例2. angtos函数可以将atan函数所返回弧度值转换成一个字符串值。
(angtos(atan -1.0)04);;;返回"315.0000"
(angtos(atan 2.03.0)04);;;返回"33.6901"
(angtos(atan 2.0-3.0)04);;;返回"146.3099"
(angtos(atan 1.00.0)04);;;返回"90.0000"
cos
一.功能
返回以弧度表示的一个角度的余弦值。
二.格式
(cosangle)
三.说明
四. 实例
(cos0.0)返回1.0
(cospi)返回-1.0
exp
一.功能
该函数返回e的次幂num的值﹐e为自然对数的底数﹐即e=2.718282…。
exp函数总是返回一个实型数。
二.格式
(expnum)
三.实例
(exp1.0)返回2.71828
(exp2.0)返回9.02501
(exp-0.4)返回0.67032
expt
一.功能
该函数返回以数number为底数的power次幂的值。
二.格式
(exptnumberpower)
三.说明
调用此函数时﹐如果提供的两个变元都是整数﹐结果也是整数;否则﹐结果是实数。
四.实例
(expt24)返回16
(expt3.02.0)返回9.0
fix
一.功能
截尾取整函数。
二.格式
(fixnum)
三.说明
fix截去数num的小数部分﹐而返回它的整数部分。
如果num大于最大可能的整数(在32位平台上最大可能整数是+2147483647或-214748648)﹐fix函数返回num被截去尾数后面而得到的一个实数(尽管AutoLISP和AutoCAD之间的整数传送被限制在16位值范围内)。
四.实例
(fix3)返回3
(fix3.7)返回3
(fix-3.999)返回-3
float
一.功能
将一个数转换成实型数后返回。
二.格式
(floatnum)
三.说明
这个函数在某些场合是非常有用的﹐如在除法函数中﹐通过float函数强制把数转换为实型数﹐从而使可能为整除的运算变为浮点除运算。
四.实例
(fix3)返回3.0
(fix3.75)返回3.75
(fix2.65)返回2.65
gcd
一.功能
返回两个整型数的最大公约数。
二.格式
(gcdint1int2)
三.说明
变元In1和in2必须是大于0的整型数。
四.实例
(gcd8157)返回3
(gcd1220)返回4
log
一.功能
返回一个实型数的自然对数。
二.格式
(log num)
三. 实例
(log 4.5) ;;; 返回 1.50408
(log 1.22);;; 返回 0.198851
logand
一.功能
返回一个整型数表的各数按位逻辑与(AND)的结果。
二.格式
(logand 7153);;;返回 3
(logand 2315);;;返回 2
(logand 83 4);;;返回 0
logior
一.功能
返回一个整型数表的各数按位逻辑或(OR)的结果。
二.格式
(logior int int....)
三.说明
(logior 124);;;返回 7
(logior 93) ;;;返回 11
lsh
一.功能
该函数实现的逻辑移位。
它返回数int按位方式作整数numbits次逻辑移位的结果(整型数)。
二.格式
(1sh int numbits)
三.说明
如果numbits是正数,则数int向左移位numbits次;如果numbits是负数,则数int向右移位numbit次。
在这两种情况下,移入位为0,移出位丢弃。
如果移位运算之后符号位包含的是0(即位号31),则返回的值是正数;否则,返回的值是数。
执行一次逻辑左移操作,数int的绝对值增大一倍(即相当乘以2);执行一次逻辑右移,数int的绝对值减少一半(即相当于除以2)。
四. 实例
(1sh 21) ;;;返回 4
(1sh 2-1) ;;;返回 1
(1sh 401) ;;;返回 160
(1sh -21) ;;;返回 -4
max
一.功能
返回给定的各个数中的最大者。
二.格式
(max number number...)
三.说明
(max 4.07-144) ;;;返回 4.07
(max -881952);;;返回 19
(max 2.148) ;;;返回 8.0
min
一.功能
返回给定的各个数中的最小者。
二.格式
(min number number...)
三.实例
(min 683-10.0);;;返回 -10.0
(min 732485);;;返回 2
(min 246.7) ;;;返回 2.0
minusp
一.功能
检查一个数是否是负数。
二.格式
(minusp num)
三.说明
如果num负数,本函数调用结果返回T;否则,返回nil。
四. 实例
(minusp -1) ;;;返回 T
(minusp -4.293);;;返回 T
(minusp 830.2) ;;;返回 nil
rem
一.功能
将第一个数除以第二个数,并返回余数。
二.格式
(rem number number...)
三.说明
如果调用rem函数时,给出的数多于二个,则它返回
(rem...(rem (rem num1 num2) num3)...)的结果
四. 实例
(rem 4212) ;;;返回 6
(rem 12.016);;;返回 12.0
(rem 267) ;;;返回 5
(rem 52) ;;;返回 1
(rem 2672) ;;;返回 1
sin
一.功能
返回以弧度为单位的一个角度的正弧度。
二.格式
(sinangle)
三.说明
angle变元必须是以弧度表示的一个角度。
四. 实例
(sin 1.0) ;;;返回 0.841471
(sin 0.0) ;;;返回 0.0
sqrt
一.功能
返回一个实型数的平方根。
二.格式
(sqrt num)
三.实例
(sqrt 4) ;;;返回2
(sqrt 2.0);;;返回1.41421
zerop
一.功能
检查一个数的求值是否为零。
二.格式
(zerop number)
三.说明
如果number的求值为零,zerop函数返回T,否则,返回nil。
四.实例
(zerop 0) ;;;返回T
(zerop 0.0) ;;;返回T
(zerop 0.0001) ;;;返回nil
2,字符串处理
strcase
strcat
一.功能
将多个字符串拼接成一个长字符串后返回。
二.格式
(strcat string1[string2]...)
三.实例
(strcat "a""bout");;;返回"about"
(strcat "a""b""c");;;返回"abc"
(strcat "a""""c");;;返回"ac"
strlen
一.功能
求出一个字符串中字符的个数,并将这个数以整型数形式返回。
二.格式
(strlen[string] ...)
三.说明
调用strlen函数时如果提供了多个string变元,则返回所有字符串的长度之和的整型数。
若省略变元或为函数提供一个空字符串变元,Strlen函数返回零。
四.实例
(strlen "abcd");;;返回4
(strlen "ab");;;返回2
(strlen "one""two""four");;;返回10
(strlen);;;返回0
(strlen "");;;返回0
substr
一.功能
返回一个字符串的一个子字符串。
二.格式
(substr string start [length])
三.说明
Substr函数从字符string中取出一个子字符串并返回,截取的子字符串的起点由start变元指定,长度由length变元指定。
同有提供length变元,则子字符串的结束处在母字符串string的端点,start和length变元都必须是正整数。
四.实例
例1.(substr "abcde"2) ;;;返回"bcde"
(substr "abcde"21);;;返回"b"
(substr "abcde"32);;;返回"cd"
例2.下面的程序将一个字符串的一个子串替换成一个新的子串,并返回替换后的结果。
(defun instr (olds news estr)
(setq temp1 nil)
(setq temp2 nil)
(setq nold (strlen olds))
(setq nnew (strlen news))
(setq nest (strlen estr))
(setq ct 1)
(setq e 1)
(while e
(setq tststr (substr estr ct nold))
(setq ct (+ ct 1))
(if (=tststr"")(setq e nil))
(if (=strcase tststr)(strcase olds))
(progn
(setq e nil)
(setq ct (- ct 1))
(setq temp1(substr estr 1(-ct1))
(setq temp2(substr estr (+ ct mold) nest))
(setq estr (strcat temp1 news temp2))
)
)
)
若设置如下初值:
(setq a "abcxyzghi")
则:
(setq a (instr "XYZ""def" a));;;返回"abcdefghi"
wcmatch
一.功能
将一个通配样本与一个字符串进行匹配比较。
二.格式
(wcmatch string pattern)
三.说明
wcmatch函数将一个字符串string与一个通配样本进行比较,看它们是否匹配。
如果匹配,本函数返回T;否则返回nil。
String和pattern这两个变元既可以是由双引号引起来的字符串,也可以是变量。
pattern变元中可以包含通配字符,我们将这些通配字符全部列出在下表中。
仅对string和pattern中最前面的500个字符进行比较,超过500个字符之后的那些字符会被忽略。
通配字符表
_______________________________________________
通配字符 含义
_______________________________________________
# 匹配任意单个数字字符
_______________________________________________
@ 匹配任意单个字母字符
_______________________________________________
.(圆点) 匹配任意单个非字母数字字符
_______________________________________________
*(星号) 匹配任意字符序列,包括一个空字符串,
该字符串可以用在搜索样本中的任意位
置,包括开头,中间和结尾处。
_______________________________________________
?
(问号) 匹配任意单个字符
_______________________________________________
~(波浪) 如果该字符是匹配样本中的第一个字符,
则匹配除此样本之外的任何东西。
_______________________________________________
{---} 匹配括号中的任意一个字符
_______________________________________________
{~---} 匹配不在括号中的任意单个字符
_______________________________________________
-(连字符) 用在括符之间,指明单一字符的取值范围_______________________________________________
,(逗号) 分开两个样本
_______________________________________________
’(反引号) 特殊转义字符(按字义读取随后的字符)_______________________________________________
四.实例
例1.(wcmatch "Name "N *");;;返回T
这个实例测试字符串Name是否是用N打头的。
例2.在测试样本中可以使用逗号分隔多个测试条件,如;
wcmatch "Name"",~*m*,N*");;;返回T
如果上述三个测试样本中的任何一个满足条件,wcmatch函数返回T。
Name中有一个字符这一条件不成立(为假);Name中不包含字符m不成立(为假);Name是由字符N打开的(为真),所以表达式最后的返回值为T。
样本的匹配是大小写敏感的,因此,它的大写和小写都必须匹配。
在string和pattern中,使用由AutoLISP函数中返回的变量和值也是有效的。
例3.为了测试一个字符串中的一个通配符,您可以使用单个反引号来转义字符,转义的意思是指跟在单个反引号(’)后面的字符不当作通配符读取,而按其表面值进行比较。
例如,为了测试在字符串Name中的任何位置是否有逗号,可以使用如下表达式:
(wcmatch "Name""*',*");;;返回nil
由于其它的通配符可能在将来的AutoLISP版本中会加入,所以在样本中最好给所有的非字母数字字符换码,这样可确保其向上的兼容性。
例4.由于C和AutoLISP程序设计语言都使用反作斜杠(\)作为换码字符,所以在字符串中需要使用两个反斜杠(\\)才能产生一个反斜杠(\)。
为了测试字符串Name中的任何位置上是否有一个反杠(\),可以使用如下表达式:
(wcmatch "Name""*'\\*");;;返回nil
所有包含在括符[...]中的字符按字义读取,所以不必它们换码。
但有一个例外,即波浪符(~)只有在括号中非第一个字符是(如:
[A~BC]才按字义读取;否则,作为一个“非”字符读取,这意味着wcmatch函数将匹配所有字符,除跟随在波浪符之后的那些字符之外(如:
“[~ABC]”。
连字字符(-)仅当它是括符中的第一个字符(如:
:
“[-ABC]”)或是括符中的最后一个字符(如:
“[ABC-]”时,才按字义读取;否则,在括符中的连字符用于指定一个专用字符的取值范围,该范围仅限于单个字符的取值,因此,“STR[1-38]”与STR1、STR2、STR3和STR8匹配,而“[A-Z]”与任意单个大写字母匹配。
如果闭括符内的首字符(如:
“[]ABC]”)或者它跟随在一个波浪符之后(如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Auto CAD 二次开发 Lisp 字典解读 字典 解读