2024年3月29日发(作者:)

AutoLISP详细讲解

关于AutoLISP

AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是ListProcessor的缩

写)。第一篇关于LISP的参考文献是由JohnMcCarthy在1960年4月的《ACM通讯》

中发表的。

除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP

却生下来,并且已经成为人工智能(AI)的首选程序序言。AutoLISP解释程序位于AutoCAD

软件包中,然而AutoCADR2.17及更低版本中并不包含AutoLISP解释程序,这样,只

有通过AutoCADR2.18及更高版本才可以使用AutoLISP语言。

AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。例如,

AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。通过AutoLISP,你可

以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程

序。事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统

会取得更高的效率。

现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件

包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图

形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐

顶。目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。

在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。但是,在开

始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。同时,本章还假定读者

并无编程方面的知识。如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。

对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。本章讨论常用的

AutoLISP函数以及它们S程序编制中的应用。对于本章中未涉及的函数,请参阅Autodesk

公司的《AutoLISP程序员参考手册》。AutoLISP对硬件没有任何特殊要求。如果系统能

够运行AutoCAD,那么同样也可以运行AutoLISP。AutoLISP程序可以使用任何文本编

辑器进行编制。

数学运算

任何编程语言都提供数学函数。在AutoLISP中,同样提供了编程以及数学计算所需的大

部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧

度表示的角度的正弦值、余弦值及反正切值等。使用AutoLISP还可以进行许多其他计算。

这一节主要讨论AutoLISP程序语言支持的常用数学函数。

1.加法

格式(+num1num2num3…)

此函数(+)计算加号(+)右边所有数字的和(+num1num2num3…)。这些数字可

以是整数或实数。如果均为整数,则和为整数;如果均为实数,则和为实数。但是如果既有

整数又有实数,则和为实数。如下所示,在前两个例子中,所有数字均为整数,所以结果是

整数。在第三个例子中,一个是实数(50.0),故结果为实数。

示例:

Command:(+25)返回7

Command:(+230450)返回86

Command:(+230450.0)返回86.0

2.减法

格式(-num1num2num3…)

此函数(-)从第一个数中减去第二个数(num1-num2)。如果多于两个数,就用第一

个数字减去其后所有数字的和[num1-(num2+num3…)]。在下面的第一个例子中,28

减去14后返回14。因为两个数均为整数,结果亦为整数。在第三个例子中20与10.0相

加,并用50减去两数的和(30.0),返回一个实数20.0。

示例:

Command:(-2814)返回14

Command:(-25711)返回7

Command:(-502010.0)返回20.0

Command:(-2030)返回河0

Command:(-20.030.0)返回-10.0

3.乘法

格式(*num1num2num3…)

此函数(*)计算乘号右边所有数字的乘积(num1×num2×num3…)。若均为整数,它

们的乘积亦为整数;若其中含有一个实数,乘积即为实数。

示例:

Command:(*25)返回10

Command:(*253)返回30

Command:(*2532.0)返回60.0

Command:(*2-5.5)返回-11.0

Command:(*2.0-5.5-2)返回22.0

4.除法

格式(/num1num2num3…)

此函数(/)用第一个数除以第二个数。如果多于两个数,就用第一个数除以其后所有数的

乘积[num1/(num2×num3×…)]。在下面的第四个例子中,用200除以5.0与4

的乘积[200/(5.0×4)]。

示例:

Command:(/30)返回30

Command:(/32)返回1

Command:(/3.02)返回1.5