AutoLisp的教程培训PPTAutoLISP绘图程序设计.ppt
《AutoLisp的教程培训PPTAutoLISP绘图程序设计.ppt》由会员分享,可在线阅读,更多相关《AutoLisp的教程培训PPTAutoLISP绘图程序设计.ppt(85页珍藏版)》请在三一办公上搜索。
1、2023/1/31,1,第三章 AutoLISP绘图程序设计,主要内容1.AutoLISP特点2.AutoLISP函数的用法3.AutoLISP程序结构4.AutoLISP程序执行方式,2023/1/31,2,3.1 AutoLISP概述,一、AutoLISP介绍 1.AutoLISP的作用(1)AutoLISP是一种表语言,是常用的AutoCAD二次开发手段。所谓二次开发:是指以AutoCAD软件为平台,加入自己所需要的功能。开发过程,就是编程的过程。二次开发所支持的语言有VB、C+,大型的二次开发,以C+为主,而小型二次开发,一般以AutoLISP为主。,2023/1/31,3,(2)必须
2、在AutoCAD环境下运行(内嵌);(3)AutoLISP可以编写程序,调用AutoCAD的许多 命令;举例:在水平方向画n个大小相等的圆。,;调用AutoCAD命令画圆(defun C:HY()(setq P0(getpoint 第一圆心坐标:)(setq R(getreal半径:)(setq L(getreal圆心间距离:)(setq a 1)(setq n(getintn圆的个数:)(while(=a n)(command circle P0 R)(setq P0(polar P0 0 L)(setq a(1+a),2023/1/31,4,(4)AutoLISP语言中使用大量的函数(有2
3、00多个函数),进行各种运算;(5)AutoLISP编写的程序特点(学习中注意):以表形式描述数据处理过程,程序执行过程就是函数求值过程;每段程序都是一个函数;具有交互处理功能,边解释边执行;采用模块化设计方法。,2023/1/31,5,2.AutoLISP的数据类型,(1)整型数(INT):是由0、1、29、+、-组成的。(2)实型数(REAL):如0.4(0不能少)、-1.23、0.526E9(0.526109)。(3)符号(SYM):除(、)、*、”、;之外的字符序列,并且不能全部是数字。符号常用着变量,如:Command:(setq X 12);整型数 Command:(setq X
4、12.0);实型数 Command:(setq X“12”);字符串,2023/1/31,6,(4)字符串(STR):如:“ABC”、“abc”、“457”等。(5)表(LIST):带有一对括号、有若干元素组成。(元素1 元素2 元素n)如:(2 4 f)元素的个数叫表的长度。元素也可以是表,如(45(3 6)7),这叫嵌套。元素之间必须用“空格”隔开。表的定义方式:(LIST 5 6);(5 6);还可以用defun定义(后面讲)。,2023/1/31,7,例:(setq P(list 12.36-26.58)结果是:(12.36-26.58)例:(setq P(12.36-26.58)结果
5、是:(12.36-26.58)提示:(1)表的嵌套时一定要注意括号“(”、“)”匹 配。(2)西文状态下输入!,2023/1/31,8,(6)文件描述符(7)AutoLISP内部函数(8)AutoCAD的选择集(9)AutoCAD的实体名 上述数据类型中,前四种称原子,原子包括数值原子(整型数、实型数),符号原子和字符串原子。AutoLISP基本数据类型是原子和表,重点介绍前五种数据类型。,2023/1/31,9,二、几个基本概念1.常数 PI数学中的(3.1415929)T逻辑真,即成立。NIL逻辑假,即不成立。还代表空,即无值。注意:(1)大小写等效;(2)它们不能作为变量。2.原子 是程
6、序处理中最小的数据单元。3.表达式 原子和表的统称。如:(setq P(12.36-26.58),2023/1/31,10,4.点 是表的一种形式,也叫点表。有三种获得点的方式:(1)用表示(120.35 253.24)(2)list函数定义点(setq X 12.36 Y-26.58)(setq M(list X Y)结果是:M=(12.36-26.58)(setq M(X Y)结果是:(X Y)(3)由getpoint函数得到点 其格式:(getpoint“n输入一点:”),2023/1/31,11,三、AutoLISP程序结构1.举例例(1);在屏幕上显示 ASCII码为(6590)的字
7、符(defun C:zm(/as);自定义命令(setq as 65 n 100)(while(=as 90)(command text(list n 100)15(chr as)(setq as(+as 1)n(+n 20),2023/1/31,12,例(2);绘制正多边形程序(defun c:dbx()(setq n(getintn输入多边形边数:)(setq L(getrealn输入多边形边长:)(setq P1(getpointn输入多边形第一个角点坐标:)(setq P2(polar P1 0 L)(command polygon n e p1 p2),2023/1/31,13,例(
8、3)(defun yuan();画圆函数(setq r(getrealn半径:)(setq p(getpointn圆心:)(command circle p r),2023/1/31,14,例(4)(defun ld()(setq p1(getpointn p1:)p2(getpointn p2:);输入两点(setq d(distance p1 p2);求距离(setq ang(angle p1 p2);求方位角(print d)(print ang)(command line p1 p2);画直线),2023/1/31,15,2.结构(1)注释行以;开始,可在程序头或句尾,增加程序可读性。
9、也可以不要。(2)除字符串外,字母大小写等效。(3)表与表之间可以有空格,也可没有,建议有,这样清楚。如:(distance(3 4)(56 32)或(distance(3 4)(56 32)(4)函数名后至少要有一个空格,函数名与表之间可有可无。,2023/1/31,16,3.特点(1)所谓语句都是以表形式出现。(2)一切成分都是以函数的形式给出。(3)程序执行过程就是求函数值的过程。四、AutoLISP程序执行方式有三种方式:行方式、源文件方式、编译文件方式。1.行方式 就是在AutoCAD的“command:”提示符下,输入表后回车。如:command:(+15 6.3)command:
10、(setq a 10)(setq b(+a 5),2023/1/31,17,2.源文件方式 用写字板或记事本把AutoLISP程序保存起来(后缀为.LSP)。然后用“LOAD”命令装载并调用。例如:(1)把下列程序保存到“e:zm.lsp”,;在屏幕上显示 ASCII码为(6590)的字符(defun C:zm(/as);自定义命令(setq as 65 n 100)(while(=as 90)(command text(list n 100)15(chr as)(setq as(+as 1)n(+n 20),2023/1/31,18,(2)用“load”装载 即在命令行上输入(load“e:
11、zm.lsp”)(3)在命令行上输入zm 3.编译文件方式(重点掌握)(1)Visual LISP的启动、界面和退出(2)Visual LISP控制台(3)Visual LISP创建LISP程序(4)Visual LISP中运行LISP程序提示:建议在Visual LISP中创建和运行LISP程序举例:,2023/1/31,19,3.2 基本函数,一、算数运算函数 1.加运算 格式:(+num1 num2 num3.)Command:(+2 5)返回:7 Command:(+2.0 30.0 4.0 50.0)返回:86.0 Command:(+2 30 4 50.0)返回:86.0注意:“+
12、”与“num1”及各数之间必须要有空格,后面的函数格式都是如此。,2023/1/31,20,2.减运算 格式:(-num1 num2 num3.)“减”函数(-)从第一个数中减去后面所有数的和,即 num1-(num2+num3+.)。如:Command:(-28 14)返回:1 4 Command:(-25 7 11)返回:7 Command:(-50 20 10.0)返回:20.0 Command:(-20.0 30.0)返回:-10.0,2023/1/31,21,3.乘运算 格式:(*num1 num2 num3.)4.除运算 格式:(/num1 num2 num3.)“除”函数以第一个
13、数除以其他所有运算数的积,即 num1/(num2*num3*.)。例如:(*2 5 3 2.0)返回:60.0(*2 5 3)返回:30(/3 2)(Setq a(/3.0 2)返回:1.5,2023/1/31,22,5.增量 格式:(1+number)注意:1和“+”之间不能空格,+与n u m b e r之间必须要空格。6.减量 格式:(1-number)注意:1和“-”之间不能空格,-与number之间必须要空格。例如:(setq b(1+-12.5)(setq c(1-16.4),2023/1/31,23,举例:,1.求a,b,c三个数的平方和。2.根据前后视读数,求两点间高差。3.
14、求闭合水准线路的高差闭合差。,2023/1/31,24,参考答案1:(setq a(getreal输入第一个数a:)(setq b(getreal输入第二个数b:)(setq c(getreal输入第三个数c:)(setq s(+(*a a)(*b b)(*c c),参考答案2:(setq a(getreal输入后视读数a:)(setq b(getreal输入前视读数b:)(setq h(-a b),2023/1/31,25,参考答案3:(setq n(getint 输入高差个数:)(setq fh 0.0)(repeat n(setq h(getrealn依次输入高差:)(setq fh(+
15、fh h),2023/1/31,26,二、标准函数,1.绝对值(abs)、平方根(sqrt)、正弦(sin)、余弦(cos)、反正切(atan)以上函数格式:(函数名)2.幂函数(expt)、(exp)格式:(expt 底数 幂)格式:(exp 底数)注意:以上各函数返回的数值类型。3.举例,2023/1/31,27,举例:用AutoLISP表示下列公式:,(1)计算三角高程的表达式(2)计算坐标增量的表达式(3)将度化成弧度单位,2023/1/31,28,参考答案:(1)(setq HA(getreal 输入HA:)(setq L(getreal 输入L:)(setq AF(getreal
16、输入AF:)(setq i(getreal 输入i:)(setq v(getreal 输入v:)(setq HB1(+HA(-i v)(setq HB2(*L(sin af)(setq HB(+HB1 HB2),2023/1/31,29,参考答案:(3)(setq af(getreal“输入af:”);af是整度数(setq af(/180(*pi af)如何将度分秒化成弧度?,2023/1/31,30,三、赋值函数,赋值函数有两个:setq和set1.setq 格式:(setq 变量1 表达式1 变量2 表达式2)赋给变量的值可以是任何表达式(数值、字符串、字母)。注意:不要用AutoLIS
17、P的函数名和常数当作变量。举例:(1)(setq a 32 b 33.26 c yes)(2)(setq a(sin(/pi 4)(3)(setq x 34.3 y 5.23 p(list x y)(4)(setq pt(getpointn输入一点:),2023/1/31,31,2.set与setq不同之处,是set为符号赋值,setq为变量赋值。如:(set a 9)结果a为9 此函数非常有用,和其它函数配合使用,可以得到一维数组。举例:(1)(set(read(getstringn输入点 名:)(getpointn输入点坐标:)(2)(set(read(getstringn输入变量 名:)
18、(getrealn输入变量值:),2023/1/31,32,四、字符串处理函数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)返回11,2023/1/31,33,3.substr格式:(substr 字符串 起点 长度)此函数将返回“字符串”的子字符串。子串的起始位置是以“起点”确定,子串长度由“长度”指定
19、。如果“长度”没有设定,则子串将从“起点”到最后。“起点”和“长度”均须为正整型数。如:(substr abcde 2)返回 bcde(substr abcde 3 2)返回 cd,2023/1/31,34,五、类型转换函数1.fix格式:(fix number)此函数将number变为整型数。如果number是实型数,则舍去小数部分。如:(fix 3)返回 3(fix 3.7)返回 3,2023/1/31,35,2.float格式:(float number)此函数将number变为实型数。如:(float 3)返回 3.0(float 3.75)返回 3.753.atoi格式:(atoi
20、字符串)此函数可用来将字符串转换成整型数。如:(atoi 97)返回 97,2023/1/31,36,4.atof格式:(atof 字符串)此函数可用来将字符串转换成实型数。如:(atof 67.9)返回 67.9(atof“97”)返回 97.05.itoa格式:(itoa 整型数)此函数将整型数转换成字符串。如:(itoa 56)返回“56”,2023/1/31,37,6.rtos rtos函数将按给定的方式和精度把数转换为字符串。格式:(rtos 数 方式 精度)方式:有五种,其代码分别是1、2、3、4、5(只要掌握2)。精度:是制小数位数。例如:(setq A(rtos 5.78925
21、 2 4)返回5.7893(setq A(rtos 45.23 2 1)返回45.2,2023/1/31,38,7.(angtos 角度 模式 精度)把弧度转换为度(取整度)注意:(1)角度以弧度表示;(2)模式是04的整数;(0十进制;1度分秒;2梯度;3弧度;4测量单位)(3)精度是一整数,表示十进制数小数位;(4)角度为负时,angtos自动将其还原成02 之间的正值。例:(angtos 0.785398)(atof(angtos 0.528 0 2)与angtos互补的函数(angtof 32),2023/1/31,39,8.chr格式:(chr integer)此函数是将 integ
22、er中的ASCII码转换成单一的对应字符串。如:(chr 97)返回 a(chr 65)返回“A(chr 66)返回 B“9.ascii格式:(ascii 字符串)此函数是将字符串转换成ASCII。如:(ascii“A”)返回65,2023/1/31,40,10.read格式:(read 字符串)此函数将返回字符串的第一个表或原子。如:(read(12 45)(15.36 28.478)返回(12 45)(read 48.65 34.8)返回48.6511.Cvunit格式:(Cvunit 数值 旧单位 新单位)(cvunit 2.3 minute“second)返回138.0(cvunit
23、1 meter3”inch3)返回61023.7,2023/1/31,41,举例1:;得到一组点,如:P1、P2、等等(defun c:pt()(setq n(getint“n输入n值:)(setq m 1)(repeat n(set(read(getstringn输入点名:)(getpointn输入点坐标:)(setq m(1+m),2023/1/31,42,举例2:将度分秒化为弧度;把度分秒化成弧度(defun hd()(setq a(getstring nA:);输入角度(按6.3628形式输入)(cond(=(strlen a)6);(strlen a)求a的长度(setq ad(su
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AutoLisp的教程培训PPT AutoLISP绘图程序设计 AutoLisp 教程 培训 PPT 绘图 程序设计
链接地址:https://www.31ppt.com/p-2207887.html