第三章autolisp函数学习与应用1讲_第1页
第三章autolisp函数学习与应用1讲_第2页
第三章autolisp函数学习与应用1讲_第3页
第三章autolisp函数学习与应用1讲_第4页
第三章autolisp函数学习与应用1讲_第5页
已阅读5页,还剩33页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AutoLISP函数学习与应用11本节目标2了解AutoLISP函数的调用方法掌握AutoLISP常用函数的使用方法赋值与数值计算函数逻辑运算函数字符串处理函数类型转换函数表处理函数交互数据输入函数及相关函数主要内容3赋值与数值计算函数逻辑运算函数字符串处理函数类型转换函数表处理函数交互数据输入函数及相关函数1

赋值与数值计算函数4赋值函数

(setq

符号1

表达式1……)加函数

(+

数 数

……)减函数

(-

数 数

……)乘函数

(*

数 数

……)除函数

(/

数 数

……)加1函数

(1+

数)减1函数

(1-

数)求绝对值函数

(abs

数)求最大值函数

(max

数 数

……)求最小值函数

(min

数 数

……)1

赋值与数值计算函数5平方根函数

(sqrt

数)乘方函数

(expt

数 数)求e的任意次方函数(exp

幂)自然对数函数(log

数)正弦函数(sin

角)余弦函数(cos

角)反正切函数(atan求余数函数(rem数1 [数2])数1

数2)求最大公约数函数(gcd

数1

数2

……)1

赋值与数值计算函数6赋值函数(setq

符号1

表达式1……)例如:(setq

x

3.4) (setq

a

3.0

b

15)加函数(+

数 数

……)例如:(+

2

9) (+

2

9

8

1)减函数(-

数 数

……)例如:(-

29) (-

2

9

8

1

)乘函数(*

数 数

……)例如:(*

29) (*

2

9

8

1)除函数(/

数 数

……)例如:(/

8

4) (/

24

42)加1函数(1+

数)(1+

-7)例如:(1+

3)减1函数(1-

数)例如:(1-

3)(1-

-7)1

赋值与数值计算函数7求绝对值函数(abs

数)例如:(abs

-7)数 数

……)求最大值函数(max例如:(max

-7

16)求最小值函数(min数 数

……)例如:(min

-7

16)平方根函数(sqrt

数)例如:

(sqrt

16)乘方函数(expt

数)例如:

(expt

2

4)求e的任意次方函数(exp

幂)例如:

(exp

2.2)1

赋值与数值计算函数8自然对数函数(log

数)例如:

(log

4.5)正弦函数(sin

角)

注:角度为弧度值例如:

(sin

pi)

(sin

(/ pi

2))余弦函数(cos

角)

注:角度为弧度值例如:

(cos

pi)反正切函数(atan(cos

(/ pi

2))数1

[数2])注:返回值为弧度值例如:

(atan

0.5)(atan 1.0

2.0)数2)求余数函数(rem

数1例如:(rem

8

3)(rem

3

4.0)求最大公约数函数(gcd

数1

数2

……)例如:

(gcd

12

20) (gcd

81

57)2

逻辑运算函数9AutoLISP用T表示逻辑真,用NIL表示逻辑假。逻辑“与”函数(and

表达式

……)逻辑“或”函数(or

表达式

……)逻辑“非”函数(not

表达式

……)等于函数(=

原子 原子

……)不等于函数(/=

原子 原子

……)小于函数(<

原子 原子

……)小于等于函数(<=

原子 原子

……)大于函数(>

原子 原子

……)大于等于函数(>=

原子 原子

……)原子测试函数(atom

项)2

逻辑运算函数10表测试函数(listp

项)原子值测试函数(boundp

项)空测试函数(null

项)数值测试函数(numberp

项)负值测试函数(minusp

项)零值测试函数(zerop

项)相同表达式测试函数(eq

式1

式2)相等测试函数(equal

式1

式2)字符匹配测试函数(wcmatch

字符串 模式)2

逻辑运算函数11逻辑“与”函数(and

表达式

……)例如:(setq

a

5)(and

a

c)(setq

b

nil) (setq

c

"st")返回T(and

b

c)

返回NIL逻辑“或”函数(or

表达式

……)例如,仍采用上例中赋值:(or

b

c)

返回T(or

0 '()

b)

返回T逻辑“非”函数(not

表达式

……)例如,仍采用上例中赋值:(not

b)(not

c)(not

a)返回T返回NIL返回NIL2

逻辑运算函数12原子

原子

……)等于函数(=例如:(=

4

4.0)返回T

(=

"me"返回NIL

(=

"me""me")"you")返回T返回NIL(=

4

4

3)不等于函数(/=例如:(/=

10

20)原子

原子

……)返回T(/=

"me"

"me")

返回NIL小于函数(<

原子

原子

……)例如:(<

10

20)(<

2

3

4

4)返回T(<

"b" "c"

)

返回T返回NIL2

逻辑运算函数13小于等于函数(<=

原子

原子

……)例如:(<=2344)返回T(<=243)返回NIL原子

原子

……)大于函数(>例如:返回T返回T原子

原子

……)(>

20

10)(>

"c" "b"

)大于等于函数(>=例如:(>=8544)返回T(>=243)返回NIL2

逻辑运算函数14原子测试函数(atom

项)若“项”为表,则返回NIL,否则返回T。任何不是表的元素都被认为是原子。例如:(setq

a '(x

yz))

(setq

b 'a

)(atom

a)(atom

b)返回NIL返回T(atom

'a)

返回T表测试函数(listp

项)若“项”为表,则函数返回T;否则返回NIL。例如,仍采用上例中赋值:(listp

a)

返回T(listp

'a)

返回NIL(listp '(x

y))

返回T2

逻辑运算函数15原子值测试函数(boundp

项)若原子有约束值,则返回T,否则返回NIL。若某原子的值为表,则被认为该原子无值。例如:(setq

a '(x

yz))

(setq

b 'a

)(boundp

b)

返回T(boundp

'a)

返回T(boundp

a)

返回NIL空测试函数(null

项)若“项”的约束值为空,则函数返回T;否则返回NIL。例如,仍采用上例中赋值:(null

a)

返回T(null'a)返回NIL(null'())返回T2

逻辑运算函数16数值测试函数(numberp

项)若“项”为数值,则函数返回T;否则返回NIL。例如:(setq

a

123)(numberp

a)(setq

b

'a)返回T

(numberp

b)

返回NIL负值测试函数(minusp

项)若“项”的值为数值且为负数,则函数返回T;否则返回NIL。例如:(minusp -1)

返回T

(minusp

32.1)

返回NIL零值测试函数(zerop

项)若“项”的值为数值且为零,则函数返回T;否则返回NIL。例如:(zerop -0.1)

返回NIL

(zerop

0.0)

返回T2

逻辑运算函数17相同表达式测试函数(eq

式1

式2)若“式1”与“式2”完全相同,则函数返回T;否则返回NIL。例如:(setq

f1

'(a

b)) (setq

f2

'(a

b)) (setq

f3

f2)(eq f1

f2)

返回NIL

(eq

f2

f3)

返回T相等测试函数(equal

式1

式2)该函数测试两个表达式的值是否相等,相等返回T;否则返回NIL。例如,仍采用上例中赋值:(equal

f1

f2)

返回T (equal

f2

f3)

返回T字符匹配测试函数(wcmatch

字符串

模式)该函数按通配符的匹配模式测试字符串与模式是否相同,若相同该函数返回T;否则返回NIL。例如:(wcmatch"Name""N*")返回T(wcmatch"Name

""*b*")返回NIL3

字符串处理函数18ASCII码转换函数(ascii

字符串)字符转换函数(chr

整数)字符串长度函数(strlen

字符串

……)字符串连接函数(strcat

字符串

……)求子字符串函数(substr

字符串

起点

[长度])字符串大小写函数(strcase

字符串

[方式])3

字符串处理函数19ASCII码转换函数(ascii

字符串)例如:返回66返回65

(ascii

"Big")整数)(ascii

"A")字符转换函数(chr例如:(chr

65)

返回“A”

(chr

66)

返回“B”字符串长度函数(strlen

字符串

……)例如:(strlen"about")返回5(strlen"a"

"b""c")返回3(strlen"")返回03

字符串处理函数20例如:字符串连接函数(strcat

字符串

……)(strcat

"a"

"bout")

返回“about”(strcat

"a"

"b"

"c")

返回“abc”求子字符串函数(substr

字符串

起点

[长度])例如:(substr

"abcde"

2

1)

返回“b”(substr"abcde"32)返回“cd”(substr"abcde"2)返回“bcde”例如:字符串大小写函数(strcase(strcase

"Sample"

T)字符串

[方式])返回“sample”(strcase"Sample"

)返回“SAMPLE”4

类型转换函数21整型变实型函数(float

数)实型变整型函数(fix

数)整型变字符串函数(itoa

数)字符串变整型函数(atoi

字符串)字符串变实型函数(atof

字符串)4

类型转换函数22整型变实型函数(float

数)例如:(float

3)

返回3.0实型变整型函数(fix

数)例如:(fix(fix6.5)

返回6-6.5)

返回-6整型变字符串函数(itoa

数)例如:(itoa

65)

返回“65”4

类型转换函数23字符串变整型函数(atoi

字符串)例如:(atoi(atoi"1998")"19.98")返回1998返回19字符串变实型函数(atof

字符串)例如:(atof

"19.98")(atof

“1998”)返回19.98返回1998.05

表处理函数24该类函数对表进行取原子、测表长和替换元素等多种操作。引用函数(quote

表达式)取表中第一个元素的函数(car

)取子表函数(cdr

)取表中最后一个元素函数(last

)取表中第n个元素函数(nth

n

)测表长函数(length

表)建立表的函数(list

表达式……

)连接表的函数(append

表1

表2

……)表倒置函数(reverse

)向表中添加元素的函数(cons

新元素 表

)5

表处理函数25引用函数(quote

表达式)例如:(quote (x

yz))

返回(x

y

z)(quote

a)

返回A取表中第一个元素的函数(car

)例如:返回A返回(A

B)返回NIL(car

'(a

b

c))(car

'((a

b)

c))(car

'())取子表函数(cdr

)例如:(cdr '((a

b)

c))返回(C)(cdr

'())

返回NIL注:car和cdr函数可以结合起来使用,最多可达四级。5

表处理函数26取表中最后一个元素函数(last

)例如:返回C返回(D

E)n

注:第一个元素序号为0(last

'(a

b

c))(last

'((a b)

c (d

e)))取表第n个元素函数(nth例如:(nth 2

'(a

b

c

d

e))返回C返回(A

B)(nth 0

'((a

b)

c

(d

e)))测表长函数(length

表)例如:(length

'(a

b

c))

返回

3(length

'((a b)

c (d

e)))

返回

35

表处理函数27建立表的函数(list

表达式……

)例如:返回(A

B)返回(46)返回(A

(B

C)D))表1

表2

……)(list 'a

'b

)(list (+

1

3)

6)(last

'a '(b

c)

'd)连接表的函数(append例如:(append

'(a

b)

'(c

d))(append

'((a) (b))

'((c)

(d)))返回(A

B

CD)返回((A)

(B)

(C)

(D))表倒置函数(reverse

)例如:(reverse '(a

bc))返回(C

B

A)5

表处理函数28向表中添加元素的函数(cons

新元素 表

)例如:(cons

'a

'(c

d))(cons

'(a

b)

'(c

d))返回(A

C

D)返回((A

B)C

D)6

交互数据输入函数及相关函数29整型数输入函数(getint [提示])实型数输入函数(getreal

[提示])字符串输入函数(getstring

[cr] [提示])点输入函数(getpoint [基点]

[提示])距离输入函数(getdist

[基点]

[提示])矩形对角点输入函数(getcorner

基点

[提示])角度输入函数(getangle [基点]

[提示])方位角输入函数(getorient

[基点]

[提示])输入控制函数(initget

[位置]

[关键字符串])关键字输入函数(getkword

[提示])求方位角输入函数(angle

点1

点2)求两点间距离函数(distance

点1

点2)求另一点坐标函数(polar

点 角度 距离)求交点函数(inters

点1

点2

点3

点4

[方式])6

交互数据输入函数及相关函数30整型数输入函数(getint

[提示])该函数等待用户输入一个整型数,并返回该整型数。提示部分可有可无。例如:(setqnum(getint))(setqnum (getint"Enteranumber:"))实型数输入函数(getreal

[提示])该函数等待用户输入一个实型数,并返回该实型数。字符串输入函数(getstring

[cr]

[提示])例如:(setq

s

(getstring

"What’s

yourname?"))用户输入:Xiaoming

返回

“Xiaoming”(setq

s

(getstring

T

"What’s

yourname?:"))用户输入:Zhang

Xiaoming

返回

“Zhang

Xiaoming”6

交互数据输入函数及相关函数31点输入函数(getpoint

[基点]

[提示])该函数等待用户输入一个点。若有基点,则AutoCAD会从该点向当前的光标位置画一条可拖动的直线。例如:(setq

p (getpoint"Where?"))(setq

p (getpoint

'(2.03.6)

"Secondpoint:"))距离输入函数(getdist

[基点]

[提示])该函数等待用户输入一个距离值或用光标输入两个点,函数将返回两点间的距离值。例如:(setq

dist (getdist

'(3.5 5.1)"请输入距离值:"))矩形对角点输入函数(getcorner

基点

[提示])该函数等待用户输入一个点,并将该点返回。与getpoint函数不同的是它必须有基点,且当用户移动光标时,屏幕上画一个由基点和当前光标点为两个对角点的矩形。6

交互数据输入函数及相关函数32角度输入函数(getangle

[基点]

[提示])该函数等待用户输入一个角度,并将该角度以弧度值返回。getangle在度量角度时,以变量ANGBASE设置的当前角度为零弧度,角度按逆时针方向为正。用户可以用键盘输入一个数值来指定一个角度。也可用指定屏幕上两个点的方式输入一个角度,此时两点间连线与零度基准线的夹角就是输入的角度。若指定了“基点”,则可用输入一个点的方式来获取角度。后两种方式中屏幕上都会出现拖动线。方位角输入函数(getorient

[基点]

[提示])该函数与getangle非常类似,唯一不同的是getorient度量角度的零度基准方向是水平向右的。在需要知道相对角度(如点转过的角度)的情况下应使用getangle,而在需要知道绝对角度(如直线的方位)的情况下应用getorient。6

交互数据输入函数及相关函数33输入控制函数(initget

[位置]

[关键字符串])该函数为其后使用的get×××函数建立各种选项。“位置”控制允许的输入方式可以是以任何组合方式累加成的一个0~255之间的整数。位置“1”代表“不允许空输入”,位置“2”代表“不接受零值”,位置“4”代表“不接受负值”,位置“8”代表“不检查屏幕限定范围”,位置“16”代表“目前未使用”,位置“32”代表“用虚线画拖动线和

矩形框”,位置“64”代表“忽略三维点的Z坐标(仅用于getdist)”,位置“128”代表“不允许空输入”等。“关键字符串”定义了一个关键字表,用于对其后get×××函数的输入值进行检查,以判断用户的输入是否与表中规定的输入类型相符。使用关键字表的目的是使用户可以以缩写的方式输入关键字。关键字表达形式必须是“关键字1

关键字2

关键字3,缩写…”6

交互数据输入函数及相关函数34输入控制函数(initget

[位置]

[关键字符串])例子:(defun

getnum(

/

x)(initget

1

"Pi

Two-pi")(setq

x

(getreal

"Pi/Two-pi/<number>:"))(cond

((eq x

"Pi")

pi)((eq

x

"Two-pi")

(*

2.0

pi))(T

x)))

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论