AutoLISP教程.docx
- 文档编号:9878301
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:9
- 大小:17.65KB
AutoLISP教程.docx
《AutoLISP教程.docx》由会员分享,可在线阅读,更多相关《AutoLISP教程.docx(9页珍藏版)》请在冰豆网上搜索。
AutoLISP教程
AutoLISP教程
14.1关于AutoLISP
AutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是ListProcessor的缩写)。
第一篇关于LISP的参考文献是由JohnMcCarthy在1960年4月的《ACM通讯》中发表的。
除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP却生下来,并且已经成为人工智能(AI)的首选程序序言。
AutoLISP解释程序位于AutoCAD软件包中,然而AutoCADR2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD,2.18及更高版本才可以使用AutoLISP语言。
AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供。
例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令。
通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序。
事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。
现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶。
目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问。
在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量。
但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家。
同时,本章还假定读者并无编程方面的知识。
如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易。
对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣。
本章讨论常用的AutoLISP函数以及它们,程序编制中的应用。
对于本章中未涉及的函数,请参阅Autodesk公司的《AutoLISP程序员参考手册》。
AutoLISP对硬件没有任何特殊要求。
如果系统能够运行AutoCAD,那么同样也可以运行AutoLISP。
AutoLISP程序可以使用任何文本编辑器进行编制。
14.2数学运算
任何编程语言都提供数学函数。
在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)返回,
Command:
(,502010.0)返回20.0Command:
(,2030)返回河0
Command:
(,20.030.0)返回-10.03.乘法
格式(*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.04.除法
格式(/num1num2num3…)
此函数(,)用第一个数除以第二个数。
如果多于两个数,就用第一个数除以其后所有数的乘积,num1/
(num2×num3×...),。
在下面的第四个例子中,用200除以5.0与4的乘积,200/(5.0×4),。
示例:
Command:
(/30)返回30
Command:
(/32)返回1
Command:
(/3.02)返回1.5
Command:
(/200.05.04)返回10.0Command:
(/200-5)返回-40
Command:
(/-200-5.0)返回40.014.3增量、减量与绝对数字
1.增量数字
格式(1+number)
此函数(,,)使数字与1(整数)相加,返回一个增加1的数。
在下面的第二个例子中,1与-10.5相加
返回-9.5。
示例:
(1+20)返回21
(1+-10.5)返回-9.5
2.减量数字
格式(1-number)
此函数(1-)从数字中减去1(整数),并返回一个减去1的数。
在下面的第二个例子中-10.5减去1返
回-11.5。
示例:
(1-10)返回9
(1-10.5)返回-11.5
3.绝对数字
格式(absnum)
abs函数返回一个数的绝对值。
该数可以是整数或者实数。
在下面的第二个例子中,由于-20的绝对值为
20,故函数返回20。
(abs20)返回20
(abs-20)返回20
(abs-20.5)返回20.5
三角函数14.4
1.sin函数
格式(sinangle)
sin函数计算一个角(以弧度表示)的正弦值。
在下面的第二个例子中,sin函数计算Pi(180度)的正
弦值并返回0。
示例:
Command:
(sin0)返回0.0
Command:
(sinPi)返回0.0
Command:
(sin1.0472)返回0.8660272.cos函数
格式(cosangle)
cos函数计算一个角(以弧度表示)的余弦值。
在下面的第三个例子中,cos函数计算Pi(180度)的
余弦值并返回-1.0。
示例:
Command:
(cos0)返回,.0
Command:
(cos0.0)返回1.0
Command:
(cosPi)返回-1.0
Command:
(cos1.0)返回0.5403023.atan函数
格式(atannum1)
atan函数计算数的反正切值,返回角度以弧度表示。
下面的第二个atan函数计算1.0的反正切值并返回
0.785398(弧度)。
示例:
Command:
(atan0.5)返回0.463648
Command:
(atan1.0)返回0.785398
Command:
(atan-1.0)返回-0.7853984.具有两个参数的atan函数
格式(atannum1num2)
还可以在atan函数中再指定一个数。
若指定了第二个数,函数将以弧度形式返回(num1/num2)的反正
切值。
在下面的第一个例子中,第一个数(0.5)除以第二个数(1.0),atan函数计算商(0.5/1=0.5)的反正
切值。
示例:
Command:
(atan0.51.0)返回0.463648弧度
Command:
(atan203.0)返回0.588003弧度
Command:
(atan2.0-3.0)返回2.55359弧度
Command:
(atan-2.03.00)返回-0.5880033弧度
Command:
(atan-2.0-3.0)返回-2.55359弧度
Command:
(atan1.00.0)返回1.5708弧度
Command:
(atan-0.50.0)返回-1.5708弧度
5.angtos函数
格式(angtosangle,made,precision,,)
angtos函数以字符串格式返回以弧度表示的角度值。
字符串格式由made和precision的设置决定。
示例:
Command:
(angtos0.58800304)返回“33.6901"
Command:
(angtos2.5535904)返回“145.3099"
Command:
(angtos1.570804)返回“90.0000"
Command:
(angtos-1.570802)返回“270.00"
注意在(angtosangle,mode,precision,,)中:
angle是以弧度表示的角度值。
mode是与AutoCAD系统变量AUNITS相对应的angtos模式。
AutoCAD中可用模式如下:
,,,,,模式编辑格式
0十进制角度
1度,分,秒
2梯度
3弧度
4测量单位
precision是一个整数,用于控制小数的位数,与AutoCAD系统变量AUPREC相对应。
其最小值为0,
最大值为4。
在上面的第一个例子中,angle为0.588003弧度,,,,,为0(十进制角度),precision为4(小数点
后有四位)。
函数返回33.6901。
14.5关系表达式
在程序中,通常都需要测试某些特定的条件。
若条件为真,程序执行某些功能,若不为真,执行另外
一些功能。
例如,条件表达式(if( 编程过程中经常要用到 这种类型的测试条件。 本节讨论在AutoLISP编程中要用到的各种关系表达式。 1.等于 格式(=atom1atom2…) 该函数(=)检查两个元素是否相等。 若相等,条件为真,函数返回,。 同样,若指定的元素不相等, 条件为假,函数返回nil。 示例: (=55)返回, (=549)返回nil (=5.55.55.5)返回, (=",,,"“,,,”)返回, (=“,,s"",,,"“,,”)返回nil 2.不等于 格式(,=atom1atom2…) 该函数(,=)检查两个元素是否不相等。 若不相等,条件为真,函数返回,。 同样,若指定的元素相 等,条件为假,函数返回nil。 示例: (,=504)返回, (,=5050)返回nil (,=50-50)返回, (,=“yes”“no”)返回, 3.小于 格式(,atom1atom2…) 该函数(,)检查第一个元素(atom,)是否小于第,个元素(atom,)。 若为真,函数返回,,否则 返回nil。 示例: (,35)返回T (,534)返回nil (,“x”“y”)返回T 4.小于等于 格式(,=atom1atom2...) 该函数(<=)检查第一个元素(atom1)是否小于等于第二个元素(atom2),若是,函数返回,,否则返回nil。 示例: (,=1015)返回T (,=“c”“,”)返回nil (,=2.00)返回T 5.大于 格式(,atom1atom2…) 该函数(,)检查第一个元素(atom1)是否大于第二个元素(atom2)。 若是,函数返回,,否则返回 nil。 在下面第一个例子中,15大于10,因此,关系表达式为真,且函数返回,。 在第二个例子中,10大 于9,但9并不大于其后的9,因此函数返回nil。 示例: (>1510)返回, (,1099)返回nil (,“c”“,”)返回, 6.大于等于 格式(,=atom1atom2…) 该函数(>=)检查第一个元素(atom1)的值是否大于等于第二个元素(atom2)。 若是,函数返回,,否 则返回nil。 在下面第一个例子中,78大于但木等于50,因此,函数返回,。 示例: (,=7850)返回, (,="x"“y")返回nil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AutoLISP 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)