【文档说明】第3章计算机绘图程序设计课件.ppt,共(86)页,304.937 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-77205.html
以下为本文档部分文字说明:
第3章计算机绘图程序设计§3.1AutoLISP概述一、AutoLISP介绍1.AutoLISP的作用(1)AutoLISP是一种表语言,是常用的AutoCAD二次开发手段。所谓二次开发:是指以Aut
oCAD软件为平台,加入自己所需要的功能。开发过程,就是编程的过程。二次开发所支持的语言有VB、C++,大型的二次开发,以C++为主,而小型二次开发,一般以AutoLISP为主。(2)必须在AutoCAD环
境下运行(内嵌);(3)AutoLISP可以编写程序,调用AutoCAD的许多命令;举例:在水平方向画n个大小相等的圆。;;调用AutoCAD命令画圆(defunC:HY()(setqP0(getpoint"第一圆心坐标:"))(setqR(getreal"半径:"))(
setqL(getreal"圆心间距离:"))(setqa1)(setqn(getint"\n圆的个数:"))(while(<=an)(command"circle"P0R)(setqP0(polarP00L))(setqa(1+a)
)))(4)AutoLISP语言中使用大量的函数(有200多个函数),进行各种运算;(5)AutoLISP编写的程序特点(学习中注意):以表形式描述数据处理过程,程序执行过程就是函数求值过程;每段程序
都是一个函数;具有交互处理功能,边解释边执行;采用模块化设计方法。2.AutoLISP的数据类型(1)整型数(INT):是由0、1、2…9、+、-组成的。(2)实型数(REAL):如0.4(0不能少)、-1.23、0.526E9(0.526×109)。(3)符号(SYM)
:除(、)、*、‘、‛、;之外的字符序列,并且不能全部是数字。符号常用着变量,如:Command:(setqX12);整型数Command:(setqX12.0);实型数Command:(setqX‚12
‛);字符串(4)字符串(STR):如:‚ABC‛、‚abc‛、‚457‛等。(5)表(LIST):带有一对括号、有若干元素组成。(元素1元素2…元素n)如:(24f)◇元素的个数叫表的长度。◇元素也可以是表,如(45(36)7),这叫嵌套。◇元素之间必须用‚空
格‛隔开。◇表的定义方式:(LIST56);’(56);还可以用defun定义(后面讲)。例:(setqP(list12.36-26.58))结果是:(12.36-26.58)例:(setqP'(12.36-26.58))结果是:(12.36-26
.58)提示:(1)表的嵌套时一定要注意括号‚(‛、‚)‛匹配。(2)西文状态下输入!!!(6)文件描述符(7)AutoLISP内部函数(8)AutoCAD的选择集(9)AutoCAD的实体名上述数据类型中,前四种称原子,原子包括数值原子(
整型数、实型数),符号原子和字符串原子。AutoLISP基本数据类型是原子和表,重点介绍前五种数据类型。二、几个基本概念1.常数PI——数学中的π(3.1415929…)T——逻辑真,即成立。NIL——逻辑假,即不成立。还代表空,即无
值。注意:(1)大小写等效;(2)它们不能作为变量。2.原子是程序处理中最小的数据单元。3.表达式原子和表的统称。如:(setqP'(12.36-26.58))4.点是表的一种形式,也叫点表。有三种获得点的方式:(1)用'表示'(120.35253.24)(2)list函数定义点
(setqX12.36Y-26.58)(setqM(listXY))结果是:M=(12.36-26.58)(setqM'(XY))结果是:(XY)(3)由getpoint函数得到点其格式:(getpoint‚\n输入一点:‛
)三、AutoLISP程序结构1.举例例(1);;在屏幕上显示ASCII码为(65-90)的字符(defunC:zm(/as);自定义命令(setqas65n100)(while(<=as90)(comm
and"text"(listn100)15""(chras))(setqas(+as1)n(+n20))))例(2);;绘制正多边形程序(defunc:dbx()(setqn(getint"\n输入多边形边数:"))(setqL(getr
eal"\n输入多边形边长:"))(setqP1(getpoint"\n输入多边形第一个角点坐标:"))(setqP2(polarP10L))(command"polygon"n"e"p1p2))例(3)(defunyua
n();;画圆函数(setqr(getreal"\n半径:"))(setqp(getpoint"\n圆心:"))(command"circle"pr))例(4)(defunld()(setqp1(getpoint"\np1:")p2(getpoint"\np2:"));;;输入两点(setqd(
distancep1p2));求距离(setqang(anglep1p2));求方位角(printd)(printang)(command"line"p1p2"");画直线)2.结构(1)注释行以;开始,可在程序头或句尾,增加程序可读性。也可以不要。(2)除字符串外
,字母大小写等效。(3)表与表之间可以有空格,也可没有,建议有,这样清楚。如:(distance'(34)'(5632))或(distance'(34)'(5632))(4)函数名后至少要有一个空格,函数名与表之间可有可无。3.特点(1)所谓语句都是以表形式出现。(2)一切成分都是以
函数的形式给出。(3)程序执行过程就是求函数值的过程。四、AutoLISP程序执行方式有三种方式:行方式、源文件方式、编译文件方式。1.行方式就是在AutoCAD的‚command:‛提示符下,输入表后回车。如:command:(+156.3)↙command:(setqa10)(setqb(
+a5))↙2.源文件方式用写字板或记事本把AutoLISP程序保存起来(后缀为.LSP)。然后用‚LOAD‛命令装载并调用。例如:(1)把下列程序保存到‚e:\zm.lsp‛;;在屏幕上显示ASCII码为(65-
90)的字符(defunC:zm(/as);自定义命令(setqas65n100)(while(<=as90)(command"text"(listn100)15""(chras))(setqas(+as1)n(+n20))))(2)用‚l
oad‛装载即在命令行上输入(load‚e:\zm.lsp‛)(3)在命令行上输入zm3.编译文件方式(重点掌握)(1)VisualLISP的启动、界面和退出(2)VisualLISP控制台(3)VisualLISP创建LISP程序(4
)VisualLISP中运行LISP程序提示:建议在VisualLISP中创建和运行LISP程序举例:§3.2基本函数一、算数运算函数1.加运算格式:(+num1num2num3...)Command:(+25)返回:7Command:(+2
.030.04.050.0)返回:86.0Command:(+230450.0)返回:86.0注意:‚+‛与‚num1‛及各数之间必须要有空格,后面的函数格式都是如此。2.减运算格式:(-num1num2num3...)‚减‛函数(-)从第
一个数中减去后面所有数的和,即[num1-(num2+num3+...)]。如:Command:(-2814)返回:14Command:(-25711)返回:7Command:(-502010.0)返回:20.0Command:(-20.030.0)返回:-10.03.乘运
算格式:(*num1num2num3...)4.除运算格式:(/num1num2num3...)‚除‛函数以第一个数除以其他所有运算数的积,即[num1/(num2*num3*...)]。例如:(*2532.0)返回:60.0(*253)返回:30(/32)(Setqa(/3.02))返回:
1.55.增量格式:(1+number)注意:1和‚+‛之间不能空格,+与number之间必须要空格。6.减量格式:(1-number)注意:1和‚-‛之间不能空格,-与number之间必须要空格。例如:(setqb(1+-12.5))(setqc(1--
16.4))举例:1.求a,b,c三个数的平方和。2.根据前后视读数,求两点间高差。3.求闭合水准线路的高差闭合差。参考答案1:(setqa(getreal"输入第一个数a:"))(setqb(getreal"输入第二
个数b:"))(setqc(getreal"输入第三个数c:"))(setqs(+(*aa)(*bb)(*cc)))参考答案2:(setqa(getreal"输入后视读数a:"))(setqb(getreal"输入前视读数b:"))(set
qh(-ab))参考答案3:(setqn(getint"输入高差个数:"))(setqfh0.0)(repeatn(setqh(getreal"\n依次输入高差:"))(setqfh(+fhh)))二、标准函数1.绝对值(abs)、平方根(sqrt)、正弦(sin)、
余弦(cos)、反正切(atan)以上函数格式:(函数名<数或表达式>)2.幂函数(expt)、(exp)格式:(expt底数幂)格式:(exp底数<数或表达式>)注意:以上各函数返回的数值类型。3.举例viLHHABsi
nsincosSSyx举例:用AutoLISP表示下列公式:(1)计算三角高程的表达式(2)计算坐标增量的表达式(3)将度化成弧度单位参考答案:(1)(setqHA(getreal"输入HA:"))(setqL(getreal"输入L:"))(setqAF(g
etreal"输入AF:"))(setqi(getreal"输入i:"))(setqv(getreal"输入v:"))(setqHB1(+HA(-iv)))(setqHB2(*L(sinaf)))(setqHB(+HB1HB2))参考答案:(3)(setqaf(getreal‚输入af:‛))
;af是整度数(setqaf(/180(*piaf)))如何将度分秒化成弧度?三、赋值函数赋值函数有两个:setq和set1.setq格式:(setq变量1表达式1变量2表达式2…)赋给变量的值可以是任何表达式(数值、字符串、字母)。注意:不
要用AutoLISP的函数名和常数当作变量。举例:(1)(setqa32b33.26c"yes")(2)(setqa(sin(/pi4)))(3)(setqx34.3y5.23p(listxy))(4)(setqpt(getpoint"\n输入一点:"))2.s
et与setq不同之处,是set为符号赋值,setq为变量赋值。如:(set‘a9)结果a为9此函数非常有用,和其它函数配合使用,可以得到一维数组。举例:(1)(set(read(getstring"\n输入点名:"))(getpoint"\n输入点坐标:"))(2)(set(read(ge
tstring"\n输入变量名:"))(getreal"\n输入变量值:"))四、字符串处理函数1.strcat格式:(strcat串1串2...)把‚串1‛、‚串2‛、…等连成一个新的字符串。如:(strcat"a""bout")返回"about"(strcat"a""b
""c")返回"abc"(strcat"a""""c")返回"ac‚2.strlen格式:(strcat字符串)此函数求‚字符串‛长度。如:(strlen"one""two""three")返回113.substr格式:(substr字符串起点长度)
此函数将返回‚字符串‛的子字符串。子串的起始位置是以‚起点‛确定,子串长度由‚长度‛指定。如果‚长度‛没有设定,则子串将从‚起点‛到最后。‚起点‛和‚长度‛均须为正整型数。如:(substr"abcde"2)返回"bcde"(substr"abcde"32)返回
"cd"五、类型转换函数1.fix格式:(fixnumber)此函数将number变为整型数。如果number是实型数,则舍去小数部分。如:(fix3)返回3(fix3.7)返回32.float格式:(floatnumber)此函数
将number变为实型数。如:(float3)返回3.0(float3.75)返回3.753.atoi格式:(atoi字符串)此函数可用来将字符串转换成整型数。如:(atoi"97")返回974.atof格式:(atof字符串)此函数可用来将字符串转换成实型数。如:
(atof"67.9")返回67.9(atof‚97‛)返回97.05.itoa格式:(itoa整型数)此函数将整型数转换成字符串。如:(itoa56)返回‚56‛6.rtosrtos函数将按给定的方式和精度把数转换为字符串。格式:(rtos数方式精度)方式:有五种,其代码分别是1、2、3、
4、5(只要掌握2)。精度:是制小数位数。例如:(setqA(rtos5.7892524))返回"5.7893"(setqA(rtos45.2321))返回"45.2"7.(angtos角度[模式[精度]])把弧度
转换为度(取整度)注意:(1)角度以弧度表示;(2)模式是0~4的整数;(0十进制;1度分秒;2梯度;3弧度;4测量单位)(3)精度是一整数,表示十进制数小数位;(4)角度为负时,angtos自动将其还原成0~2之间的正值。例:(angtos0.78539
8)(atof(angtos0.52802))与angtos互补的函数(angtof"32")8.chr格式:(chrinteger)此函数是将integer中的ASCII码转换成单一的对应字符串。如:(chr97)返回"a"(chr65)返回‚A"(chr66)返回
"B‚9.ascii格式:(ascii字符串)此函数是将字符串转换成ASCII。如:(ascii‚A‛)返回6510.read格式:(read字符串)此函数将返回字符串的第一个表或原子。如:(read"(1245)(15.3628.478)")返回(1245)(read"48.6534.8"
)返回48.6511.Cvunit格式:(Cvunit数值旧单位新单位)(cvunit2.3"minute“"second")返回138.0(cvunit1"meter^3”"inch^3")返回61023.7举例1:;;;得到一组点,如:P1、P2、等等(defunc:pt
()(setqn(getint‚\n输入n值:"))(setqm1)(repeatn(set(read(getstring"\n输入点名:"))(getpoint"\n输入点坐标:"))(setqm(
1+m))))举例2:将度分秒化为弧度;把度分秒化成弧度(defunhd()(setqa(getstring"\nA:"));输入角度(按6.3628形式输入)(cond((=(strlena)6);;
(strlena)求a的长度(setqad(substra11));;以字符串形式保存角的度数(setqam(substra32));;以字符串形式保存角的分数(setqas(substra52));;以字符串形式保存角的秒数)((=(s
trlena)7)(setqad(substra12))(setqam(substra42))(setqas(substra62)))((=(strlena)8)(setqad(substra13))(setqam(substra52))(setqas(subst
ra72))))(setqa1(atofad));;把ad转换为实数(setqa2(atofam));;把am转换为实数(setqa3(atofas));;把as转换为实数(setqar(+a1(/a26
0)(/a33600)))(setqard(/(*arpi)180))(princard)(princ))六、求值函数1.距离(distance)格式:(distance点1点2)求出两点之间的距离,结果是实型数。如:(distance’(12
)’(73))返回:6.082763(distance’(1.02.53.0)’(7.72.59.0))返回:8.99389(空间距离)2.angle函数是求点1到点2的方向与X轴正向的夹角(α),如图,单位是弧度。格式:(angle点1点2)(angle‘(51)‘(21))返回:3.14159
30YP1XP2α3.polar函数polar函数以一个给定角度和一个与给定点的距离来定义一个新点,如下图所示。其中角用弧度表示,并以逆时针方向测量为正。polar函数的格式:(polar点角度距离)(setqpt2(polar‘(2.03.0)pi100))返回:(-98.03.0)
(setqp2(polar'(100100)(/pi2)50))返回:(100.0150.0)4.eval格式:(eval表达式)此函数求出表达式结果。如:(setqa56b45.3)(evala)(evalb)提示:eva
l和strcat、read、setq等函数配合用,可以建立一个一维数组。例如:建立一维数组xi(i=1,2,…,n)。(setqn(getint"\n输入一个整数:"))(setqi0s0)(repeatn(setqi(1
+i))(set(read(strcat"x"(itoai)))(getreal"\n输入一个实数:"))(setqs(+s(eval(read(strcat"x"(itoai)))))))此程序运行结果可以得到:x1,x2,…xn。S=x
1+x2+…+xn。七、表处理函数1.list函数2.car函数格式:(car表)返回一个列表中的第一个元素的数值(X元素)。如果该列表中没有任何元素,则返回空值nil。3.cadr函数返回一个列表的第二个元素(Y元素)。4.last函数返回一个列表的最后一个元素。
5.(nth<n>表)返回表中第n个元素(n从0算起)。1.(setqp(getpoint‚\n输入一点:‛))(setqx(carp)y(cadrp))举例:2.(setqp'(GPS13456.78623415.67434.567))(setqdh(carp)
x(cadrp)y(nth2p)z(lastp))八、Command函数Command函数是AutoLISP中唯一调用AutoCAD命令实现绘图的途径,非常重要。1.作用:使用Command函数(唯一)可
调用AutoCAD命令。2.格式:(Command‚AutoCAD命令及其选项‛)如:(setqp1'(100.453100.567)p2'(200.254201.587))(command"line"p1p2"")3.注意事项(1
)Command函数不能调用AutoLISP的输入函数,如getpoint、getangle、getstring、getint等。(2)AutoCAD命令名称和选项必需放在双引号中,并要求双引号中不能有空格。(3)不带‚AutoCAD命令及其选项‛,即(comm
and),等效ESC键(中止)。(4)几个命令和数据可以写在一个command函数中,也可分开写在两个或两个以上的command函数中。如:(Command‚line‛p1p2p3p4‚‛)和(Command‚Pline‛p1p2)(
Commandp3p4‚‛)等效。(5)文字注记时,字符串也要用‚‛括起来。如:(Command‚Text‛‘(100100)5‚‛‚AutoLISP‛)(6)调用对话框命令时,不显示对话框,以提示方式执行。如
:新建‚控制点‛图层,设置图层为红色。(command"layer""m""控制点""c"1"""")举例:画一个边长为L,中心点坐标为P的正三角形,要求底边水平。(setqL(getreal"\n输入边长:"))(setqP(getpoint
"\n输入中心:"))(setqr(*0.288675134L));求内切圆半径12r*r=L*L(command"polygon"3P"c"R)§3.3自定义命令和自定义函数一、自定义函数(defun)用函数(defun)可以定义用户自己
的函数,叫自定义函数。自定义函数象AutoLISP函数一样可以被调用,比如说,把常用的符号定义成自定义函数,实际用时,带入具体参数就可以得到图形,不别再绘制。1.自定义函数格式(defun函数名变元表表达式1表达式2┇)例:用自定义函数方式编写一个程序,绘制正三角形。(defunsjx()(
setqL(getreal"\n输入边长:"))(setqP(getpoint"\n输入中心:"))(setqr(*0.288675134L));求内切圆半径12r*r=L*L(command"polygon"3P"c"
R))2.注意(1)函数名是用户自己设定的,不能与AutoLISP内部函数名、变量名相同;(2)变元表的形式有四种:(参数1参数2…),如上例。变元表为此形式时,调用要带参数。(),无参形式。调用时不带参数。(参数1参数2…/局
部变量1局部变量2…)。变元表为此形式时,调用要带参数。(/局部变量1局部变量2…)。调用时不带参数。/与参数、局部变量之间必须有空格。(3)表达式是函数的定义体,完成计算和绘图。(4)自定义函数的作用:defun函数用于在AutoLISP程序中定义一个函数。它就象其它标准函数一样,可以为
我所用。使用时,通过不同的参数,可以绘制不同的图形。调用自定义函数举例:;度化弧度自定义函数(defunhd(af)(setqhhd(/(*afpi)180)))(defunhsjx()(setqL(getre
al"\n输入边长:"))(setqP(getpoint"\n输入中心:"))(setqr(*0.288675134L));求内切圆半径(setqp1(polarP(hd210)(*2r)));调用自定义函数(setqp2(polarp1(hd0)L));调用自定义函数(setqp
3(polarp1(hd60)L));调用自定义函数(command"line"p1p2p3"c"))PP1P2P39/3/2022••二、自定义命令自定义命令的作用是用defun函数为AutoCAD增加各种新命令。1.格式(defunC:×××()<表达式1><表达式2>┇)或(de
funC:×××(/<局部变量1><局部变量2>…)<表达式1><表达式2>┇)2.注意事项(1)自定义命令格式中×××是命令名称;必须有C:(大小写等效);×××与C:之间不能有空格。(2)×××不能
和内部或外部函数名相同;也不能和其它命令同名。(3)注意与自定函数的区别。3.自定义命令调用加载(load)程序后,在命令行上输入自定义命令名×××。例.编写计算三角高程的AutoLISP程序。程序清单如下:;计算三角高程(defunc:sjgc()(hd);调用自定义函数h
d(setqL(getreal‛\n斜边边长:‛))(setqi(getreal‛\n仪器高:‛))(setqv(getreal‛\n觇标高:‛))(setqh1(*L(sinard)))(setqh2(-iv))(setqh(+h1h2)));把度分秒化成弧
度(defunhd()(setqa(getstring"\nA:"));输入角度(按6.3628形式输入)(cond((=(strlena)6)(setqad(substra11))(setqam(substra32))(setqas(substra52)))((=
(strlena)7)(setqad(substra12))(setqam(substra42))(setqas(substra62)))((=(strlena)8)(setqad(substra13))(set
qam(substra52))(setqas(substra72))))(setqa1(atofad))(setqa2(atofam))(setqa3(atofas))(setqar(+a1(/a260)(/a33600)))(
setqard(/(*arpi)180))(princard)(princ))§3.4程序结构函数程序结构函数用于控制程序的进程,把它叫程序结构函数。包括:关系函数、逻辑函数、谓词函数、条件函数、循环函数。一、关系函数1.等于格式:(=atom1atom2...)等于函数
(=)判断数是否相等。如果相等则条件为真,返回值为T(真值)。同样,如果不相等,则条件为假,返回值为nil(假值)。2.不等于格式:(/=atom1atom2...)不等于函数(/=)判断数是否不相等。如果不相等,则条件为真,返回值为T。3.小于格式:(<atom1atom2...)
小于函数(<)判断前一个数(atom1)是否小于后面的作数(atom2),如果小于,则条件为真,返回值为T,否则返回nil。4.小于等于格式:(<=atom1atom2....)小于等于函数(<=)判断第一个数是否
小于或等于第个数(atom2),如果小于或等于,则条件为真,返回值为T,否则返回nil。5.大于格式:(>atom1atom2...)大于函数判断第一个数是否大于第二个数,如果大于,则条件为真,返回值为T,否则返回nil。6.大于等于格式:(>=atom1atom2...)二、逻辑函
数1.逻辑‚与‛格式:(and表达式1…)这个函数求出表达式之间的‚与‛运算值,即当所有表达式值同时为T时,函数结果为T,如果其中任何一个表达式值为nil,函数结果为nil。例如:(setqa10b20)(and(>a5)(<a15))结果为T(and(>b5)(<
b15))结果为nil2.逻辑‚或‛格式:(or表达式1…)这个函数求出表达式之间的‚或‛运算值,即当所有表达式值同时为nil时,函数结果为nil,如果其中任何一个表达式值为T,函数结果为T。例如:(setqa10b20)(or(<a5)(>a15))结果为nil(or(
<b5)(>b15))结果为T3.逻辑‚非‛格式:(not数或表达式)这个函数求出表达式之间的‚非‛运算值,即当‚数或表达式‛值为nil时,函数结果为T,否则函数结果为NIL。例如:(setqa10b20cnil)(nota)结果为nil(notc)结果为T(not(
or(<a5)(>a15)))结果为T(not(or(<b5)(>b15)))结果为nil三、数据谓词函数和等值谓词函数(自学)四、条件函数和顺序处理函数1.If函数格式:(If<测试式><式1><式2>)if流程图式1式2nil测试式T举例:(1)(If(=13)‚YES‛
‚NO‛)结果为‚NO‛(2)(setqa15)(If(and(>=a10)(<=a18))(setqd3)(setqc10))结果D为3。2.cond函数格式:(cond<测试式1><结果1><测试式2>
<结果2>┇<测试式n><结果n>)<测试式i>是逻辑表达式,<结果i>为一个或多个表达式。执行过程见图。cond流程图TTT测试式nnil测试式2测试式1nil结果n结果2结果1举例:(setqd0
.3)(cond((and(>=d0.2)(<=d0.4))(setqc10))((and(>=d0.5)(<=d1.0))(setqc9.0))((<d0.6)(setqc9.0)))运行结果为C=10。3.progn函数progn函数通常和If函数一道用,来控制计算顺序。格式:(prong表
达式1…)举例:(setqa15b15.0)(if(=ab)(princ‚大家好!‛)(setqa(+a1)b(+b1)))运行结果是:大家好!a=15,b=15.0(setqa15b15.0)(if(=ab)(progn(princ‚大家好!
‛)(setqa(+a1)b(+b1))))运行结果是:大家好!a=16,b=16.0五、循环函数有两个循环函数:repeat、while。1.Repeat函数格式:(Repeat数表达式1…)数:必须是正整数。表达式:是循环体,循环次数由数来决定。最后返回表
达式的值。举例:(setqa10b100)(repeat4(setqa(+a10))(setqb(+b100)))2.while函数格式:(while<测试式>表达式1…)while函数执行过程循环体外的表达式循环体nil测试式T
执行过程:先计算<测试式>,若为T,则计算后面若干个表达式(循环体);若为NIL,则退出循环体。举例:按要求画下列图形。P0L(defunC:HY()(setqP0(getpoint"圆心1:"))(setqR(getr
eal"半径:"))(setqL(getreal"间距:"))(setqa1)(while(<=a4)(command"circle"P0R)(setqP0(polarP00L))(setqa(1+a))))如果要绘制圆心的连线与x轴有一夹角a,则程序如何编?附加:设置长度和
角度单位如:长度单位设置十进制、3位小数,角度单位设置十进制的度2位小数、X轴正方向为0度、逆时针方向为正。用command(command"units"23120"N")units:绘图单位命令;2:长度十进制单位;3:3位小数;1:角度十
进制单位;0:X轴正方向为0度;N:逆时针方向为正。(defunC:HY()(setqP0(getpoint"圆心1:"))(setqR(getreal"半径:"))(setqL(getreal"间距:"))(setqn(getint"圆的数量:"))(setqjd(getangle"倾斜角度:
"))(command"units"23120"N")(setqa1)(while(<=an)(command"circle"P0R)(setqP0(polarP0jdL))(setqa(1+a))))§3.5交互输入函数getpoint、getint、getreal、get
string、getangle、getdist(getangle‚提示内容‛)getangle函数等待用户输入角度。若用户输入一个数,则得到由该数代表的角度值转化为的弧度值。若输入一点,系统提示输入第二点,其结果得到由第一点到第二点构成的向量与X轴正向夹角,单位是弧度。§3
.6系统变量、文件操作和实体访问函数一、系统变量函数AutoLISP有两个系统变量函数,用于改变(setvar)或得到(getvar)系统变量的值。二、文件操作函数三、实体访问函数练习题一、概念题1.AutoLISP程序有何特点?2.填空(1)在表达式(sinaf)中,af以_____为单
位,表达式结果是_____数。(2)表达式(rtos45.2321)返回值是:_____。表达式(rtos45.23522)返回值是:_____。(3)(setqdb'(DXD76.54323.76356.87))(setqdm(nth0db
))dm返回值是:_____。(4)表达式(read‚23.567.89‛)返回值是:_____。(5)已知x=5,y=8,r=10,调用command函数绘制一个圆,判断下列表达式哪些是错误的,并指出错误原因。1)(command"circle"(listxy)r"")2
)(command"circle"(listxy)r)3)(command"circle"'(xy)r)4)(command"circle"(listxy)"r")3.写出自定义命令和自定义函数的格式。二、编程应用题1.已知线
段AB,C点是线段AB外一点,用自定义函数编写方式,求C点到线段AB的距离。2.定义一个求三角形面积的函数。3.用自定义命令方式编写建立图层的应用程序。4.已知1、2、3、4点,绘制如图。12345.设A、1
、2、3、B是导线点(坐标已知),编写绘制导线略图的AutoLISP程序(要求绘制用圆圈表示导线点,并注记点号)。