AUTOLISP函数参考.docx

上传人:b****6 文档编号:8671588 上传时间:2023-02-01 格式:DOCX 页数:60 大小:67.03KB
下载 相关 举报
AUTOLISP函数参考.docx_第1页
第1页 / 共60页
AUTOLISP函数参考.docx_第2页
第2页 / 共60页
AUTOLISP函数参考.docx_第3页
第3页 / 共60页
AUTOLISP函数参考.docx_第4页
第4页 / 共60页
AUTOLISP函数参考.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

AUTOLISP函数参考.docx

《AUTOLISP函数参考.docx》由会员分享,可在线阅读,更多相关《AUTOLISP函数参考.docx(60页珍藏版)》请在冰豆网上搜索。

AUTOLISP函数参考.docx

AUTOLISP函数参考

AUTOLISP函数参考1(10版本)

  以下为十年前纯手工录入的函数参考手册,以分享给爱好LISP这方面的朋友参考!

AutoLISP提供了大量的预定义函数。

若将函数名(大小写都可)作为表中的第一个元素函数变元(若有的话)作为表中后面的元素,就可以调用那个函数。

本章按字母顺序列出AutoLISP所有基本函数。

用户会发现其中许多函数都是标准函数,可在LISP程序设计语言中找到。

还有一些函数是由AutoCAD提供的且专用于交互图形环境。

1FLATLAND系统变量--与老版本的兼容性

   AutoLISP版本10支持AutoCAD的最新增强型三维图形功能,则时继续保证与AutoCAD

老版本的兼容性。

FLATLAND系统变量就是用来控制该兼容性的。

当FLATLAND为零时,实

现新三维功能;否则各函数操作与AutoLISP版本9的一样。

FLATLANDR的设置作用于下列

AutoLISP函数:

    DISTANCE      GRREAD      POLAR

    ENTGET        INITGET     TBLNEXT

    GETDIST       INTERS      TBLSEARCH

    GETPOINT      OSNAP

在各函数说明中,已注明FLATLAND对上述函数起作用的方式。

2(+<数><数>...)

   这个函数返回所有<数>的总和。

其中的<数>可以是整型或实型的。

如果所有的<数>

都是整数,其结果也是整数;如果其中有一个是实型的,那么其它整型数将转换为实型

数结果将是实型数。

例如:

    (+12)         returns3

    (+1234.5)   returns10.5

    (+1234.0)   returns10.0

3(-<数><数>  ...)

   这个函数把第一个<数>减去第二个<数>,返回它们的差。

如果给定的<数>多于两个,

那么将第一个<数>减去其后所有数之和,并返回最后的结果。

如果只给了一个<数>,即返

回零减这个<数>的结果。

此函数中的<数>可以是实型或整型,按标准规则进行类型转换。

例如:

    (-5040)       returns10

    (-5040.02)   returns8.0

    (-5040.02.5)returns7.5

    (-8)           returns-8

4(*<数><数>...)

  这个函数返回所有<数>的乘积.其中<数>可以是实型或整型.按标准规则进行类型转换

例如:

    (*23)         returns6

    (*234.0)     returns24.0

    (*3-4.5)      returns-13.5

5(/<数><数>...)

  这个函数将第一个<数>除以第二个<数>,返回其商.如果给出的<数>多于两个,则把第

一个<数>除以其它所有<数>的乘积,并返回最后的商.此函数中的<数>可以是实型或整型,

类型的转换按标准规则进行.例如:

    (/1002)       returns50

    (/1002.0)     returns50.0

    (/10020.02)  returns2.5

    (/135360)     returns0

    (/135360.0)   returns0.375

6(=<原子><原子>...)

  这是"等于"关系函数.如果所有指定的<原子>在数值上是相等的,则返回T;否则返回

空(nil).这个函数适用于数和字符串.例如:

    (=44.0)       returnsT

    (=20388)      returnsnil

    (=2.42.42.4)returnsT

    (=499499500)returnsnil

    (="me""me")   returnsT

    (="me""you")  returnsnil

7(/=<原子1><原子2>...)

  这是一个"不等于"关系函数.如果<原子1>数值上不等于<原子2>,则返回T;否则返回

nil.如果提供的<变元>多于两个,则函数无定义.例如:

    (/=1020)      returnsT

    (/="you""you")returnsnil

    (/=5.435.44)  returnsT

8(<<原子><原子>...)

  这是一个"小于"关系函数.如果第一个<原子>值小于第二个,则返回T;否则返回nil.

如果所给的<原子>多于两个,那么当每个<原子>都小于其右边的<原子>时,则返回T.

例如:

    (<1020)       returnsT

    (<"b""c")     returnsT

    (<35733.2)    returnsnil

    (<2388)      returnsT

    (<2344)     returnsnil

9  (<=<原子><原子>...)

  这是一个"小于或等于"关系函数.如果第一个<原子>值大于或等于第二个原子,则返

回T;否则返回nil.如果所给的<原子>多于两个,则当每一个<原子>都小于或等于其右边

的<原子>时,才返回T.例如:

    (<=1020)      returnsT

    (<="b""b")    returnsT

    (<=35733.2)   returnsnil

    (<=299)      returnsT

    (<=2945)    returnsnil

10  (><原子><原子>...)

  这是一个"大于"关系函数.如果第一个<原子>值大于第二个,则返回T;否则返回nil.

若所给定的<原子>多于两个,当每个<原子>都大于其右边的<原子>时,则返回T.例如:

    (>12017)      returnsT

    (>"c""b")     returnsT

    (>3.51792)    returnsnil

    (>7742)      returnsT

    (>7744)      returnsnil

11  (>=<原子><原子>...)

  这是一个"大于或等于"关系函数.如果第一个<原子>值大于或等于第二个,则返回T;

否则返回nil.如果给出的<原子>多于两个,当每一个<原子>都大于或等于其右边的<原子>

时才返回T.例如:

    (>=12017)     returnsT

    (>="c""c")    returnsT

    (>=3.51792)   returnsnil

    (>=7744)     returnsT

    (>=7749)     returnsnil

12  (~<数>)

  这个函数返回<数>的按位非(NOT),即补码.<数>必须为整数.例如:

    (~3)           returns-4

    (~100)         returns-101

    (~-4)          returns3

13  (1+<数>)

  这个函数返回<数>加1(增量)的结果.<数>可以是实数或整数.例如:

    (1+5)          returns6

    (1+-17.5)      returns-16.5

14  (1-<数>)

  这个函数返回<数>加1(增量)的结果.<数>可以是实型或整型数.例如:

    (1-5)          returns4

    (1--17.5)      returns-18.5

15  (abs<数>)

  这个函数返回<数>的绝对值.<数>可以是实型数或整型的.例如:

    (abs100)       returns100

    (abs-100)      returns100

    (abs-99.25)    returns99.25

16  (and<表达式>...)

  这个函数返回所列出的表达式的逻辑"与"(AND).如果其中任何一个表达式的结果等

于nil,则停止求值并返回;否则返回T.例如,对于下面给定的赋值:

    (setqa103)

    (setqbnil)

    (setqc"string")

那么

    (and1.4ac)   returnsT

    (and1.4abc)returnsnil

17  (angle<点1><点2>)

  这个函数返回从UCS坐标系统点到UCS坐标系统的一直线的角度,该角度从

当前作图平面的X轴开始反时针方向计算(以弧度为单位).如果提供了三维点,则将其投

影至当前作图平面.例如:

    (angle'(1.01.0)'(1.04.0))   return1.5708

    (angle'(5.01.33)'(2.41.33))  return3.14159

18  (angtos<角>[<方式>[<精度>]])

  这个函数处理<角>(实型数,单位为弧度),返回一个对应于<角>的字符串.该字符串是

根据所设置的<方式>、<精度>及AutoCADDIMZIN变量,对<角>编辑后所得.其中<方式>变

元是一个整型数,它指示完成什么类型的编辑,如下所示:

      ANGTOS方式       编辑格式

     -----------------------------------------

  0               度

  1               度/分/秒

  2               梯度

  3               弧度

  4               测地单位

其中<精度>变元是一个整型数,它选择所需要的十进制精度的小数位数.<方式>和<精度>

与AutoCAD系统变量AUNITS和AUPREC相对应,如果没有指明<方式>和<精度>,则使用AUNITS

和AUPREC的当前值.

   例如,已知DIMZIN=0和下面的赋值:

     (setqpt1'(5.01.33))

     (setqpt2'(2.41.33))

     (setqa  (anglept1pt2))

那么,

     (angtosa00)    returns"180"

     (angtosa04)    returns"180.0000"

     (angtosa14)    returns"180d0'0""

     (angtosa34)    returns"3.1416r"

     (angtosa42)    returns"W"

   ANGTOS可接受一负<角>变元,但总是先将其化为相当的正值(在0~2π弧度间),

然后再执行指定的变换.例如:

     (angtos0.78539804)  returns"45.0000"

     (angtos-0.78539804)returns"315.0000"

19  (append<表达式>...)

  这个函数将所有的表(<表达式>)放置在一起,作为一个表.例如:

     (append'(ab)'(cd))       returns(abcd)

     (append'((a)(b))'((c)(d)))returns((a)(b)(c)(d))

   APPEND需要的变元必须是表.

20  (apply<函数><表>)

  它执行由<函数>给定的函数,<表>指定了函数的变元.例如:

    (apply'+'(123))              return6

    (apply'strcat'("a""b""c"))    return"abc"

  APPLY既可用于内部函数(子程序),也可用于用户定义的函数(即那些用DEFUN或者

  LAMBDA产生的函数).

21  (ascii<字符串>)

  这个函数返回<字符串>中第一个字符的ASCII字符码(整数).它和BASIC语言中的ASC函

数相似.例如:

    (ascii"A")    return65

    (ascii"a")    return97

    (ascii"BIG")  return66

22  (assoc<项><关联表>)

  这个函数在<关联表中>以<项>作为关键字进行搜索,返回<关联表>中对应元素的值.如

果在关联表中找不到作为关键字的<项>,ASSOC返回nil.例如,假设表"al"定义为:

    ((namebox)(width3)(size4.7263)(depth5))

那么,

    (assoc'sizea1)    returns(size4.7263)

    (assoc'weighta1)   returnsnil

关联表常用于储存数据,这些数据可通过"关键字"存取.它和程序设计语言的数组或结构

相似.本章后面描述的SUBST函数提供了一种方便的方法可把关联表中与关键字关联的值

进行替换.

23  (atan<数1>[<数2>])

  如果没有给出<数2>,ATAN将返回<数1>的反正切值,其单位为弧度.<数1>可以为负值;

返回的角度的范围为:

-pi到+pi弧度.例如:

    (atan0.5)               returns0.463648

    (atan1.0)               returns0.785398

    (atan-1.0)              returns-0.785398

    (angtos(atan-1.0)04)returns"315.0000"

如果给出<数1>和<数2>,则返回<数1>/<数2>的反正切值,其单位为弧度.如果<数2>为零,

即返回的角度值为1.570796弧度(90度或-90度),这取决于<数1>是正数还是负数.例如:

    (atan2.03.0)                returns0.588003

    (angtos(atan2.03.0)04)   returns"33.6901"

    (atan2.0-3.0)               returns2.55359

    (angtos(atan2.0-3.0)04)  returns"146.3099"

    (atan-2.03.0)               returns-0.588003

    (atan-2.0-3.0)              returns-2.55359

    (atan1.00.0)                returns1.5708

    (angtos(atan1.00.0)04)   returns"90.0000"

    (atan-0.50.0)               returns-1.5708

    (angtos(atan-0.50.0)02)  returns"270.00"

24  (atof<字符串>)

  这个函数将字符串换为实型数.并返回此值.例如:

    (atof"97.1")   returns97.1

    (atof"3")      returns3.0

25  (atoi<字符串>)

  这个函数将字符串转换为整数,并返回此值.例如:

    (atoi"97")     returns97

    (atoi"3")      returns3

    (atoi"3.9")    returns3

26  (atom<项>)

  如果<项>是一个表,此函数返回nil;否则返回T.任何不是表的东西都被认为是一个原

子(atom).例如,对于以下的赋值:

    (setqa'(xyz))

    (setqb'a)

那么,

    (atom'a)       returnsT

    (atom  a)       returnsnil

    (atom'b)       returnsT

    (atom  b)       returnsT

    (atom'(abc))  returnsnil

有些LISP对ATOM的解释有差异,因此在使用互相移植的程序时要加以注意.

27  (Boole<函数><整型1><整型2>)

  这是一个通用的位方式boolean函数.其中是一个0到15之间的整数,它表示16种

可能的双变量Boolean函数中的一种.后面的整型变元根据这个函数和下列的真值表进行

方式(即逻辑)组合:

    <整数1>       <整数2>      

  -----------------------------------------------------

      0             0             8

      0             1             4

      1             0             2

      1             1             1

<整数1>的每一位和<整数2>的相应位配对,选择真值表中的一水平行.其结果位是0或1,

将取决于对应真值表中这一行中位的设置情况.如果中位的设置适当,结果

位就为1,否则结果位为0.

     的一些值等效于标准的Boolean操作:

AND,OR,XOR和NOT,如下所示:

  func       操作        结果位为1时的条件

  --------------------------------------------------------

   1         AND          两个输入位都为1

   6         XOR          只有其中一个输入位为1

   7         OR           有一个或两个输入位为1

   8         NOT          两个输入位都为0(即补码)

例如:

    (Boole1125)

  指定了数12和5的逻辑"与"(AND).其结果为4.同样:

    (Boole665)

  指定了数6和5的逻辑"异或"(XOR),返回结果为3

  可以使用的其他值来完成其它的Boolean操作,这些操作可能没有标准名称.例

如,如果为4,那么当<整数2>中的位是1而<整数1>中的相应位是零时,其结果位才为

1.因此:

    (Boole4314)

将返回结果12.

28  (boundp<原子>)

  如果<原子>有一个值约束它(不管值的范围),那么此函数返回T;若没有值约束<原子>

(或受nil约束),则返回nil.例如,对于下列赋值:

    (setqa2)

    (setqbnil)

那么:

    (boundp'a)   returnsT

    (boundp'b)   returnsnil

29  caar,cadr,cddr,cadar等等

  AutoLISP支持CAR和CDR的连接,其深度可达四级.例如,已知赋值:

    (setqx'((ab)cd))

那么:

    (caarx)  isequivalentto   (car(carx))       returning  a

    (cdarx)  isequivalentto   (cdr(carx))       returning  (b)

    (cadarx)isequivalentto   (car(cdr(carx)))returning  b

    (cadrx)  isequivalentto   (car(cdrx))       returning  c

    (cddrx)  isequivalentto   (cdr(cdrx))       returning  (d)

    (caddrx)isequivalentto   (car(cdr(cdrx)))returning  d

  在AutoLISP中常使用CADR来取得二维点或三维点的Y坐标(即由两个或三个实数组成

的表中第二个元素).同样,使用CADDR可取得三维点的Z坐标.例如,已知赋值:

    (setqpt2'(5.251.0))     (a2Dpoint)

    (setqpt3'(5.251.03.0))(a3Dpoint)

那么:

    (carpt2)    returns5.25

    (cadrpt2)   returns1.0

    (caddrpt2)  returnsnil

    (carpt3)    returns5.25

    (cadrpt3)   returns1.0

    (ca

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1