文档详情

Autolisp编程

ni****g
实名认证
店铺
DOC
446KB
约46页
文档ID:467020751
Autolisp编程_第1页
1/46

第十四章 AutoLISP初步第十四章 AutoLISP14.1 关于AutoLISPAutoLISP是由Autodesk公司开发的一种LISP程序语言(LISP是List Processor的缩写)第一篇关于LISP的参考文献是由John McCarthy 在1960年4月的《ACM通讯》中发表的除了FORTRAN和COBOL,大多数在六十年代早期开发出来的语言都过时了,可是LISP却生下来,并且已经成为人工智能(AI)的首选程序序言AutoLISP解释程序位于AutoCAD软件包中,然而AutoCAD R2.17及更低版本中并不包含AutoLISP解释程序,这样,只有通过AutoCAD R2.18及更高版本才可以使用AutoLISP语言AutoCAD软件包中包含大多数用于产生图形的命令,但仍有某些命令末被提供例如,AutoCAD中没有在图形文本对象内绘制矩形及作全局改变的命令通过AutoLISP,你可以使用AutoLISP程序语言编制能够在图形文本对象内绘制矩形或作全局选择性改变的程序事实上,可以用AutoLISP编制任何程序,或把它嵌入到菜单中,这样定制你的系统会取得更高的效率。

现在,已经有数以百计的第三方软件开发人员使用AutoLISP语言编制各种应用程序软件包,例如,本文作者开发了一个名为SMLayout的软件包,用它可以产生各种复杂几何图形的平面布局图,这些几何图形包括管道的交叉部、过渡都、圆柱、弯管接头、圆锥以及罐顶目前社会上非常需要AutoLISP程序员为应用软件及客户菜单的开发提供顾问在本章中,我们假定读者已经熟悉了AutoCAD命令及AutoCAD的系统变量但是,在开始学习AutoLISP时,却并不需要你是一位AutoCAD或编程专家同时,本章还假定读者并无编程方面的知识如果你熟悉任何一种编程语言,那么学习AutoLISP就会很容易对各种函数的评细探讨以及对例题的逐步讲解会使你学起来很有兴趣本章讨论常用的AutoLISP函数以及它们S程序编制中的应用对于本章中未涉及的函数,请参阅Autodesk公司的《AutoLISP程序员参考手册》AutoLISP对硬件没有任何特殊要求如果系统能够运行AutoCAD,那么同样也可以运行AutoLISPAutoLISP程序可以使用任何文本编辑器进行编制14.2 数学运算任何编程语言都提供数学函数在AutoLISP中,同样提供了编程以及数学计算所需的大部分数学函数,你可以使用AutoLISP对数字进行加、减、乘、除运算,还可以得到以弧度表示的角度的正弦值、余弦值及反正切值等。

使用AutoLISP还可以进行许多其他计算这一节主要讨论AutoLISP程序语言支持的常用数学函数1.加法格式(+ num1 num2 num3…)此函数(+)计算加号(+)右边所有数字的和(+ num1 num2 num3…)这些数字可以是整数或实数如果均为整数,则和为整数;如果均为实数,则和为实数但是如果既有整数又有实数,则和为实数如下所示,在前两个例子中,所有数字均为整数,所以结果是整数在第三个例子中,一个是实数(50.0),故结果为实数 示例: Command:(+2 5)返回 7 Command:(+2 30 4 50)返回86 Command:(+2 30 4 50.0)返回 86.02. 减法格式(- num1 num2 num3…)此函数(-)从第一个数中减去第二个数(num1-num2)如果多于两个数,就用第一个数字减去其后所有数字的和[num1-(num2+num3…)]在下面的第一个例子中,28减去14后返回14因为两个数均为整数,结果亦为整数在第三个例子中20与10.0相加,并用50减去两数的和(30.0),返回一个实数20.0 示例:Command:(- 28 14) 返回14Command:(- 25 7 11)返回7 Command:(- 50 20 10.0)返回20.0Command:(- 20 30)返回河0Command:(- 20.0 30.0)返回-10.03.乘法 格式(* num1 num2 num3…) 此函数(*)计算乘号右边所有数字的乘积( num1×num2×num3…)。

若均为整数,它们的乘积亦为整数;若其中含有一个实数,乘积即为实数 示例: Command:(* 2 5) 返回10 Command:(* 2 5 3) 返回30 Command:(* 25 3 2.0) 返回60.0 Command: (* 2 -5.5) 返回-11.0 Command: (* 2.0 -5.5 -2) 返回22.04.除法格式( / num1 num2 num3…)此函数(/)用第一个数除以第二个数如果多于两个数,就用第一个数除以其后所有数的乘积[num1/(num2 × num3 ×…)]在下面的第四个例子中,用200除以5.0与4的乘积[200/(5.0×4)]示例:Command:(/ 30)返回 30Command:(/ 3 2)返回1Command:(/3.0 2) 返回 1.5Command:(/ 200.0 5.0 4)返回 10.0Command:(/ 200 -5)返回-40Command:(/ -200 -5.0)返回40.014.3 增量、减量与绝对数字1.增量数字格式(1+ number)此函数(l+)使数字与1(整数)相加,返回一个增加1的数。

在下面的第二个例子中,1与-10.5相加返回-9.5 示例: (1+ 20)返回 21 (1+ -10.5)返回-9.52.减量数字格式(1- number)此函数(1-)从数字中减去1(整数),并返回一个减去1的数在下面的第二个例子中-10.5减去1返回-11.5示例: (1- 10)返回9 (1- 10.5)返回-11.53.绝对数字 格式(abs num) abs函数返回一个数的绝对值该数可以是整数或者实数在下面的第二个例子中,由于-20的绝对值为20,故函数返回20 (abs 20)返回 20 (abs -20)返回20 (abs -20.5)返回20.514.4 三角函数1.sin函数 格式( sin angle) sin函数计算一个角(以弧度表示)的正弦值在下面的第二个例子中,sin函数计算Pi(180度)的正弦值并返回0 示例: Command:(sin 0)返回0.0 Command:(sin Pi)返回0.0 Command:(sin 1.0472)返回0.8660272.cos函数 格式(cos angle) cos函数计算一个角(以弧度表示)的余弦值。

在下面的第三个例子中,cos函数计算Pi(180度)的余弦值并返回-1.0 示例: Command:(cos 0)返回l.0 Command:(cos 0.0)返回1.0 Command:(cos Pi)返回-1.0 Command:(cos 1.0)返回0.5403023.atan函数 格式( atan num1) atan函数计算数的反正切值,返回角度以弧度表示下面的第二个atan函数计算1.0的反正切值并返回0.785398(弧度) 示例: Command:(atan 0.5)返回0.463648 Command:(atan 1.0)返回0.785398 Command:(atan -1.0)返回-0.7853984.具有两个参数的atan函数 格式( atan num1 num2) 还可以在atan函数中再指定一个数若指定了第二个数,函数将以弧度形式返回(num1/num2)的反正切值在下面的第一个例子中,第一个数(0.5)除以第二个数(1.0),atan函数计算商(0.5/1=0.5)的反正切值。

示例: Command:(atan 0.5 1.0)返回0.463648弧度 Command:(atan 20 3.0)返回0.588003弧度 Command:(atan 2.0 -3.0)返回2.55359弧度 Command:(atan -2.0 3.00)返回-0.5880033弧度 Command:(atan -2.0 -3.0)返回-2.55359弧度 Command:(atan 1.0 0.0)返回1.5708弧度 Command:(atan -0.5 0.0)返回-1.5708弧度5.angtos函数 格式(angtos angle[made[precision]]) angtos函数以字符串格式返回以弧度表示的角度值字符串格式由made和 precision的设置决定 示例:Command:(angtos 0.588003 0 4)返回“33.6901”Command:(angtos 2.55359 0 4)返回“145.3099”Command:(angtos 1.5708 0 4)返回“90.0000”Command:(angtos -1.5708 0 2)返回“270.00” 注意 在(angtos angle[mode[precision]])中: angle是以弧度表示的角度值。

mode是与AutoCAD系统变量AUNITS相对应的angtos模式 AutoCAD中可用模式如下: ANGTOS模式 编辑格式 0 十进制角度 1 度/分/秒 2 梯度 3 弧度 4 测量单位 precision是一个整数,用于控制小数的位数,与AutoCAD系统变量AUPREC相对应 其最小值为0,最大值为4 在上面的第一个例子中,angle为0.588003弧度,mode为0(十进制角度),precision为4(小数点后有四位)函数返回33.690114.5关系表达式在程序中,通常都需要测试某些特定的条件若条件为真,程序执行某些功能,若不为真,执行另外一些功能例如,条件表达式(if(< X 5)),若变量x的值小于5,测试结果为真编程过程中经常要用到这种类型的测试条件本节讨论在AutoLISP编程中要用到的各种关系表达式。

1.等于格式(= atom1 atom2…)该函数(=)检查两个元素是否相等若相等,条件为真,函数返回T同样,若指定的元素不相等,条件为假,函数返回nil 示例: (= 5 5)返回T (= 5 49)返回nil (= 5.5 5.5 5.5)返回T (= “yes”“yes”)返回T (=“yes” “yes” “no”)返回nil2.不等于 格式(/= atom1 atom2…) 该函数(。

下载提示
相似文档
正为您匹配相似的精品文档