5 自定义函数.ppt_第1页
5 自定义函数.ppt_第2页
5 自定义函数.ppt_第3页
5 自定义函数.ppt_第4页
5 自定义函数.ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CAD 程序设计方法,教师:李敬敏,五、自定义函数,1 AutoLISP 的核心内容实际上就是利用系统提供的内部函数, 编写自定义函数,用自定义函数来解决工程中遇到的各种设计和绘图问题。,2 注意问题:,1)自定义函数的定义方法,合理确定函数的形式参数的数量、类型及顺序。,2)自定义函数的正确调用方法,3)了解局部变量和全局变量的作用域。,4)函数调用后的返回值类型及完成的功能,5.1 自定义函数 defun,defun函数的定义格式,(defun ),功能:定义一个用户函数,5.1 自定义函数 defun,5.1.1 各参数的意义,1)必须是符号原子,大小写均可,由用户给定。 不要与系统内部

2、函数和 AutoCAD 命令同名。,(defun ),2)四种格式:,5.1 自定义函数 defun,5.1.1 各参数的意义,(defun ), ( / ) ( ) (/ ) () ;没有参数的空表,四 种 格 式,5.1 自定义函数 defun,5.1.1 各参数的意义,2)有如下四种格式: ( / ),(1) 中斜杠“/”前为形式参数表,用来规定调用本函数时必须提供的实际参数的个数、类型和顺序。,例:求梯形面积5.1 txmj-1.lsp,5.1 自定义函数 defun,5.1.1 各参数的意义,2)有如下四种格式: ( / ),(1) 中斜杠“/”前为形式参数表,用来规定调用本函数时必

3、须提供的实际参数的个数、类型和顺序。,例:求梯形面积5.1 txmj-1.lsp,例:求梯形面积5.1 txmj-2.lsp, 中的斜杠“/”前也可为空,即调用时不需指定实参,但在调用前应先对变量a、b、h进行赋值,5.1 自定义函数 defun,5.1.1 各参数的意义,2)有如下四种格式: ( / ),(2) 中斜杠“/”后是局部变量表,是本函数临时使用的中间变量,调用后调用中得到值将丢弃,不保存在内存中。,(defun txmj( a b h) (setq s (/ (* (+ a b) h) 2) ),(3)局部变量也可为空,5.1 自定义函数 defun,5.1.1 各参数的意义,2

4、)有如下四种格式: ( / ),(4) 中各项要用空格分开,尤其注意:“/”前后必须有空格,其一是函数调用时,根本不需要外部提供值 需要外部提供值,但是通过全局变量传入,(5) 括号中可以没有任何参数,但括号不可省略。,5.1 自定义函数 defun,5.1.1 各参数的意义,3)后的若干个是函数的定义体,可以为常量、变量或表达式,是所定义函数的运算过程。决定了本函数的功能和返回值类型,也决定着形参的类型、数量和顺序,(defun ),5.1 自定义函数 defun,5.1.1 各参数的意义,4)内部函数 defun 的返回值是它所定义的用户函数名,而 调用用户函数,返回值是最后一个 的值。,

5、函数 defun 的返回值为用户函数名txmj,(txmj 1.0 2 3) 是调用用户函数,返回值4.5是txmj的返回值,(defun ),5.1 自定义函数 defun,5.1.1 各参数的意义,5)函数调用是对已定义的函数的调用,它的格式为:( ). 中实参的个数、顺序与类型必须与函数定义的 中形参的个数、顺序与类型一 一对应。,5.1 自定义函数 defun,5.1.2 自定义函数举例,练习1 矩形图 5.1 box.lsp,主要参数的确定,P1, L, W,5.1 自定义函数 defun,5.1.2 自定义函数举例,练习2 正三角形 5.1 trigon.lsp,主要参数的确定,P

6、1, Len,5.1 自定义函数 defun,5.1.2 自定义函数举例,练习3 凹形图 5.1 axt.lsp,主要参数的确定,Pt1, ww,hh,5.1 自定义函数 defun,5.1.3 函数变量类型及作用范围,1函数变量类型:局部变量、全局变量,局部变量:在函数中出现的变量 全局变量:不在中的变量,2 函数变量的作用范围,局部变量:不管值在函数中如何改变,调用后又恢复调用前的值,只在函数内起作用 全局变量:在函数调用中所得到的值将保留在系统内存中,其他函数和表达式可用,5.1 自定义函数 defun,5.1.3 函数变量类型及作用范围,局部变量:,(defun scope (x y

7、/ a) (setq a (+ x 1.0) b (* y 3.0) (setq c (+ a b) x (+ x y) (setq y (- x y) ),x y a,全局变量:,b c,(setq xx 7 yy 6 x 5 y 4 a 3 b 2 c 1),(scope xx yy),5.1 自定义函数 defun,5.1.3 函数变量类型及作用范围,2 函数变量的作用范围,局部变量:可以在不同函数定义中使用同名变量,却互不影响。从而减少变量个数,减少变量命名时的麻烦,节省内存空间;在函数调用后,需要保留调用前的值的变量。,全局变量:程序中各函数都要使用同一变量的值,如绘图比例因子等;在

8、函数调试时,为了查看函数调用后变量值的变化情况,以便查错,可先把局部变量设为全局变量,一旦调试成功后,再把全局变量改为局部变量。,5.1 自定义函数 defun,5.1.4 自定义函数的调用,1 load函数的使用加载,调用格式:(load 作用:加载一Autolisp文件到内存,加载成功:返回的是文件中定义的最后一个函数名,(load “D:CAD/5.1 trigon.lsp),返回:C:trigon,(load “D:CAD/5.1 box.lsp),返回:BOX,(load “D:CAD/5.1 axt.lsp),返回:AXT,5.1 自定义函数 defun,5.1.4 自定义函数的调

9、用,2 调用一旦加载成功即可调用,C:TRIGON :命令行,直接输入:trigon,不用加括号,没有C:的函数:命令行:(函数名 形参1 形参2 ),Command: (BOX 300 250 (300 280) 0.8),Command: (AXT),5.1 自定义函数 defun,5.1.4 自定义函数的调用,2 调用一个函数中调用另一个函数,5.1 自定义函数 defun,5.1.5 函数库文件的建立与调用,(load d:/ljm/CAD/5.2 subprogram1.lsp),5.1 自定义函数 defun,5.1.6 应用defun函数的注意事项,1. 编写函数时,应按 Aut

10、oLISP 的语法格式正确编写,为使程序清楚,便于检查, 最好进行缩排。编写好的函数应以.LSP 为扩展名及时存入磁盘。,2. 定义函数时,函数名应注意不要与内部函数名及其它自定义函数同名。 函数名应能体现该函数的功能并便于记忆。,3.注意把函数内所用变量定义为局部变量,以免发生变量干涉。当函数较大较多时, 变量屏蔽尤为重要,4.函数运行后产生一些无用函数和变量,可用 (setq nil) 来进行清除,恢复无用函数和变量占用的内存空间,5.2 自定义匿名函数,自定义匿名函数 lambda,(lambda ),功能:如果对一个函数只使用一次或对其使用是暂时,可用些函数来定义,它与defun基本相同,只是没有函数名,返回值为最后 的值; 可带形式参数和局部变量,(setq X 1 Y 2 Z 3) (apply (lambda (X Y) (setq Z (* X Y) ) (5 10) ),5.2 自定义匿名函数,自定义匿名函数 lambda,(lambda ),功能:如果对一个函数只使用一次或对其使用是暂时,可用些函数来定义,它与defun基本相同,只是没有函数名,返回值为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论