您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > AutoLISP的基本函数
第八讲:AutoLISP的基本函数AutoLISP程序可看作是一个一个函数的调用。函数的调用格式:(函数名[参数1][参数2][参数n])2.1赋值函数与求值函数1赋值函数格式:(setqsym1expr1[sym2expr2])依次将每个表达式expr的值赋给符号sym,要求参数必须成对出现,返回最后一个表达式的值。例如:command:(setqa5.0)5.0000command:!a5.0000command:(setqx122.5y12(+x122.0))4.5000相当于(setqx122.5)(setqy12(+x122.0))2禁止求值函数格式:(quoteexpr)阻止求值器对其参数expr求值,返回没被求值的表达式。’(+65)简写形式,等效的表达形式是(quote(+65))作用:可以“保护”一些表达式作为数据使用,而不是作为AutoLISP函数调用被求值。例如:command:(car‘(123))等效于(car(list123))取表中第一个元素1返回结果2.2数值函数数的运算遵循以下规则:(1)若参数表中的所有参数都为整型数,则AutoLISP求值器对参数表做整型运算,返回整型数值。(2)若参数表中有一个实型数,则对表中的参数进行浮点数学运算,返回实型数。2.2.1算术运算函数1(+numbernumber)返回所有number的和(+20513)返回38(+-205.5)返回-14.5000(+(setqx2)(+x3.0)6.5)返回13.5000注意:多个整数相加时,要防止总和超出范围而出错。2(-number1number2)返回number1-〈number2〉-〈number3〉-的结果,若只有一个参数,则返回0-number1的结果。(-214)返回-12(-(+804.0)(-240))返回122.00084.0-38(setqx6)返回6(-x)返回-6,用于给坐标镜像。3(1+〈number〉)返回〈number〉+1的结果(1-〈number〉)返回〈number〉-1的结果例如:(setqx–6.52)返回-6.5200(1+x)返回-5.5200(1-x)返回-7.52004(*numbernumber)返回各数乘积的结果(*234)返回245(/number1number2)返回number1除以number2,再除以number3运算的结果(/10032)返回16(/1003.02)返回16.66676(remnumber1number2)返回number1/number2整除之后的余数。(rem415–4)返回1相当于(rem(rem415)–4)若除数非0,则其符号与number1的符号相同。如(rem–64)返回-2(rem64)返回27(maxnumber1number2)返回最大值(minnumber1number2)返回最小值例如:(max(setqa683)(setqb(-a580.0))–25.0)返回683.00683103.0-25.08(expnumber)返回enumber的值(exp1)返回2.71828;(exp0)返回1;(exp3)返回20.08559(exptbasepower)返回basepower的值(expt23)=8;10(lognumber)是(expnumber)的反函数,返回值是实数(log2.71828)返回0.99999;(log1)返回0;(log20.0855)返回3.011(sqrtnumber)返回平方根,返回值是实数。例如:(sqrt(/42.0))返回1.414;编程:已知直角三角形的两边长a,b,求其斜边长。(setqa3.0b4.0)(setqc(sqrt(+(expta2)(exptb2))))返回5.012(absnumber)返回number的绝对值2.2.2三角函数三角函数的参数可以是整型或实型,返回值总是实型数。1(sinangle)返回angle的sin值,angle是以弧度为单位。Forexample:(sin(/pi6))返回0.5;(sin(/pi2))返回1.0(sin(/pi4))返回0.7071072(cosangle)返回angle的cos值,angle是以弧度为单位。Forexample:(cos(/pi6))返回0.866025;(cos0)返回1.0(cos(/pi4))返回0.707107Forexample:(setqtan45(/(sin(/pi4))(cos(/pi4))))返回1.0(setqtan30(/(sin(/pi6))(cos(/pi6))))返回0.577353(atannumber1[number2])若只有参数number1,返回其反正切值。否则,返回(atannumber1/number2)的反正切弧度值。Forexample:(atan1)返回0.785398弧度转化为:(setqarctodgree(*180(/0.785398pi)))返回45度2.2.3数的类型转换函数1(floatnumber)返回将number转换为实型数的结果。(float2)返回2.0000(float2.65)返回2.65002(fixnumber)返回截尾取整的结果(fix3.999)返回3(fix-3.999)返回-32.2.4表处理函数1(carlist)返回表list的第一个顶层元素若list为NIL,返回NIL;若list为点对,返回左元素。(car‘(xyz))=(car(listxyz))返回x(car‘((ab(c))(d)5))返回(ab(c))(car‘(0.“line”))返回0(car‘())返回nil2(cdrlist)返回表list中去掉第一个元素剩下的元素组成的表若list为NIL,返回NIL;若list为点对,返回右元素(可以是非表)。(cdr‘(xyz))返回(yz)(cdr‘((ab(c))(d)5))返回((d)5)(cdr‘(0.“line”))返回“line”(cdr‘())返回nil(cdr‘(a))只有一个元素的表,返回nil注意:car和cdr并不毁坏或改变表的结构和值,如:(setqL‘(5“ok”abc))返回(5“ok”abc)(carL)返回5(cdrL)返回(“ok”abc)!L返回(5“ok”abc)3car和cdr的组合函数形式:cxrcxxrcxxxrx表示a或d,作用的先后顺序是“从右到左”(cadr‘((ab)(c)))返回(c)等效于(car(cdr‘((ab)(c))))在AutoLISP语言中,图形中的点是用两个(二维点)或三个(三维点)实型数组成的表来表示的。一般用car获取x坐标,cadr获取y坐标,caddr获取z坐标。如(setqpt2‘(5.21.0))返回(5.21.0)(setqpt3‘(5.21.03.0))返回(5.21.03.0)(carpt2)返回5.2(cadrpt2)返回1.0(caddrpt3)返回3.04(lastlist)返回表list顶层的最后一个元素,若list为nil,则返回nil。(last‘(ab(c(de))))返回(c(de))5(nthnlist)返回list中的顶层第n个元素,n0,第一个元素是0号,如果n大于最后元素的序号,返回nil。(nth3‘(abcd))返回d(nth2‘(a(ab)(cd)e))返回(cd)(nth4‘(a(ab)(cd)e))返回nil6(consexpr1expr2)把第一个元素expr1加到第二个元素〈expr2〉构成一个新表。若expr2为表,返回把expr1加到expr2表头构成新表;若expr2为原子,返回一个点对,左元素为expr1,右元素为expr2。(cons‘x‘(abc))返回(xabc)(cons‘x(car‘(abc)))返回(xa)(cons‘anil)返回(a)(cons‘(abc)‘x)返回((abc)x)7(listexpr)返回所有expr的值构成的表(list(+56)‘c‘d)返回(11cd)(list(setqa10.0)(-a5)(+a3.0))返回(10.05.013.0)list,quote和polar函数是用来给点变量赋值的三个主要函数。当给一个点变量赋一个常量表时,可用quote函数,(quote(4.05.0))或(setqpt‘(4.05.0))返回(4.05.0)二维点当给一个点变量赋一个变量表时,用list,首先对表中参数求值,然后返回结果值。(setqx4.0y5.0)返回5.0(setqpt(listxy))返回(4.05.0)例:以点(23)为左下角,在屏幕上画一个2X2单位的方框。Box.lsp(setqbp'(23))(setqpt1(list(+(carbp)2)(cadrbp)))(setqpt2(list(carpt1)(+2(cadrpt1))))(setqpt3(list(carbp)(+2(cadrbp))))(commandlinebppt1pt2pt3c)(commandlinept1pt3)(commandlinebppt2)8(appendlist)把所有参数表list中的各元素串在一起,组成一个新表返回。与cons函数的区别,append的参数必须是表。(append‘(ab)‘(cd))返回(abcd)对比相同参数的cons函数(cons‘(ab)‘(cd))返回((ab)cd)Append,cons,list是三个基本的表构造函数。9(reverselist)返回参数表顶层元素倒排后的新表(reverse‘(a(bcd)(de)f))返回(f(de)(bcd)a)把一个元素加到一个表的末尾Pt2bp(23)22Pt3Pt1(setqL1‘(abc))返回(abc)(reverse(cons12(reverseL1)))返回(abc12)(cba)(12cba)10(lengthlist)返回顶层元素的个数,是整型数(length‘(abc))返回3(length‘((ab)(cd(ef))))返回2本节所学基本函数列表:(setqsym1expr1[sym2expr2])(quoteexpr)阻止求值器对其参数expr求值,返回没被求值的表达式。(+numbernumber)返回所有number的和(-number1number2)返回number1-〈number2〉的结果(1+〈number〉)返回〈number〉+1的结果(1-〈number〉)返回〈number〉-1的结果(*numbernumber)返回各数乘积的结果(/number1number2)(remnumber1number2)返回整除之后的余数。(maxnumber1number2)返回最大值(minnumber1number2)返回最小值(expnumber)返回enumber的值(exptbasepower)返回basepower的值(lognumber)是(expnumber)的反函数,返回值是实数(sqrtnumber)返回平方根,返回值是实数。例如:(absnumber)返回number的绝对值(sinangle)返回angle的sin值,angle是以弧度为单位。(cosangl
本文标题:AutoLISP的基本函数
链接地址:https://www.777doc.com/doc-8159209 .html