欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    VisualLISP程序设计.ppt

    • 资源ID:6523153       资源大小:524.50KB        全文页数:84页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VisualLISP程序设计.ppt

    第5章 Visual LISP程序设计,CAD二次开发技术及其工程应用,多媒体课件,本章内容:,5.1 Visual LISP概述 5.2 AutoLISP基础 5.3 AutoLISP内部函数 5.4 AutoLISP应用程序开发实例,5.1 Visual LISP概述,5.1.1 AutoLISP和Visual LISP的关系,1 AutoLISP和Visual LISP的关系 AutoLISP是解释性语言,Visual LISP 可以编译成二进制文件;Visual LISP(VLISP)是为加速 AutoLISP 程序开发而设计的软件工具;VLISP 还提供了工具,用于发布用 AutoLISP 编写的独立应用程序。,2 Visual LISP具有以下主要新的功能(1)强大语法检查功能,识别AutoLISP的语法错误和函数 的非法参数输入。(2)强有力的符号名查找和自动匹配功能。(3)具有功能完善源程序调试器,提高程序调试灵活性。(4)具有语言格式化器,规范程序结构提高程序可读性。(5)支持LISP和DCL语言文本格式的彩色代码显示功能,提高程序的清晰度。(6)具有综合检验器和监视跟踪功能(7)完整的文件编译器,改善程序的运行速度和安全性。(8)具有项目管理系统,方便地维护多文件的应用程序。(9)可以进行编译文件的打包,形成一个ARX和VLX模块。,5.1.2 Visual LISP 的启动,启动VLISP集成开发环境有两种方法:(1)利用菜单启动 使用下拉菜单启动VLISP 打开“工具”下拉菜单,选择“AutoLISP”菜单项。选择“VLISP编辑器”菜单项,弹出用户界面。,(2)使用命令关键字:在命令提示处输入如下命令:命令:Vlisp(回车),(2)使用命令关键字:命令:vlisp(回车)菜单 如果点亮菜单上的某一个菜单项,屏幕底部的 状态栏上将显示相关命令功能的简介。工具栏 可快速发出 VLISP 命令。,控制台窗口 控制台窗口是 VLISP 主窗口中的一个独立的可滚动窗口。状态栏 状态栏中将显示的动态信息。,5.1.3 Visual LISP集成化环境,1 Visual LISP 菜单项,(1)文件菜单项:创建新的 AutoLISP 程序文件以供编辑;(2)编辑菜单项:复制和粘贴文本等编辑操作;(3)搜索菜单项:查找和替换文本字符串,设置书签等;(4)视图菜单项:查找和显示AutoLISP代码变量和符号值;(5)工程菜单项:使用工程和生成程序;(6)调试菜单项:设置和删除程序断点,检查变量状态等;(7)工具菜单项:设置VLISP文本格式化和环境选项等;(8)窗口菜单项:组织当前VLISP对话中显示的窗口等;。(9)帮助菜单项:显示在线帮助。,2 工具栏 VLISP提供了五个工具栏:标准、视图、搜索、工具和调试,各自代表不同功能的VLISP命令组。通过点击工具栏上图标按钮可执行对应的VLISP命令。如果将鼠标指针指到工具栏某按钮上并停留几秒钟,VLISP 将显示工具提示信息,以说明该按钮的功能,同时在屏幕底部的状态栏上显示更详细的描述。,3 控制台窗口 主要功能:(1)对 AutoLISP 表达式进行求值,并显示表达式的返回值;(2)将 AutoLISP 表达式分多行输入;(3)同时对多个表达式求值;(4)在控制台和文本编辑窗口之间复制和传递文本;(5)在控制台中按 TAB 键可以回溯到以前输入的命令;(6)在控制台中按 TAB 键实现对输入历史的关联搜索;(7)按 ESC 键清除控制台提示符后的文字;(8)设置控制台提示符的显示方式;(9)设置控制台中VLISP命令和选项的显示方式。,4 文本编辑器(1)文件语法着色:可把程序不同部分指定各自的颜色;(2)设置文本格式:设置程序代码格式使代码易读;(3)括号匹配:帮助用户检测括号匹配错误;(4)执行AutoLISP表达式:在不离开文本编辑器的环境 下,测试表达式或几行程序代码的运行结果。(5)多文件查找:用单个命令就可以在多个文件中查找某 个词或表达式。(6)AutoLISP代码语法检查:可对AutoLISP代码进行求值 并亮显其语法错误。,5 加载和运行AutoLISP应用程序(1)首先确认包含程序的文本编辑窗口是活动窗口。如果不能肯定 该窗口是否是活动的,可以在窗口的任何地方单击它,使它成 为活动窗口;(2)从“工具”工具栏中选择 按钮,或从“工具”下拉菜单 中选择“加载编辑器中的文字”菜单项;(3)在控制台提示下输入括号和函数名并按回车键;(4)在图形窗口或命令行中指定点以响应提示。当用户 响应提示后,重返回到 VLISP窗口;(5)CAD和VLISP的转换可使用“激活 AutoCAD”菜单项或按 按钮。,6 退出Visual LISP环境 选择“文件”下拉菜单的“退出”菜单项 或单击 Windows 的“关闭”按钮来关闭程序。AutoCAD并没有完全卸载VLISP,只把所有的VLISP 窗口关闭。如果用户修改某个VLISP 文本编辑窗口中的代码而没有保存这些修改,在退出系统时,自动询问是否想保存这些修改。如果想保存所有的修改,请选择“是”,若选择“否”将不保存任何修改。VLISP 保存退出时的状态。在下一次启动时,将自动打开上次退出时打开的文件和窗口。,5.2 AutoLISP基础,5.2.1 AutoLISP语言的特点,1.特点 AutoLISP语言是一个嵌入在AutoCAD内部的LISP编程语言,是LISP语言和AutoCAD的有机结合的产物。语言既具备一般高级语言的基本结构和功能,又具有一般高级语言所没有的强大的图形功能,是一种比较流行的CAD二次开发语言工具。AutoLISP语言是AutoCAD系统提供给用户的第一代开发工具,利用AutoLISP语言可直接实现增加和修改AutoCAD命令,扩大图形的编辑功能,直接访问和处理AutoCAD的图形数据库,开发CAD的应用软件系统。每个LISP程序的核心是一个求值器,当该求值器读入用户输入的程序行(一个表达式),对其进行计算,然后返回计算结果。,2.AutoLISP的求值过程 简单的数据,如整数、实数等把它的自身值作为求值结果。符号和变量,把它的约束值作为求值结果。用运算符和数据组成表达式,根据第一个元素的类型进行。3.AutoLISP编程语言程序特点 变量没有明确的类型说明,而是动态确定类型;AutoLISP数据的存放和处理全部使用表结构;AutoLISP语言的程序没有程序语句、关键字和运算符;程序的层次结构完全用“()”分割符来完成,AutoLISP语言是解释性语言,采用ASCII文件格式,不编译。,5.2.2 AutoLISP的数据类型,1 整型数(INT)整形数是由09数字、+、-字符组成,不允许出现其它字符。“”号可以省略,“-”必不可少。例如:+123,435,-190,0都是有效整数。2 实型数(REAL)实型数是带有小数点的数,用双精度的浮点数表示,并且至少有14位的有效精度。实型数两种表示方法,即十进制表示法和科学记数法表示法。当实数绝对值小于时,必须加前导0,不能以小数点开头,否则计算机认为点对出错。例如:有效实数:0.456,-12.4567,+12.567,-0.12364E3等 无效实数:.456,-112.361E2。,3 字符串(STRING)字符串是由一对双引号()引起来的字符序列组成的。双引号是字符串的定界符,不是字符串的内容。字符串中的大小写字母和空格字符都是有意义的。字符串最大长度为132个字符,若超过132个,则后面无效。如果字符串中没有任何字符,则称为空串,空串长度为0。字符串可以包含ASCII码表中的任何字符,也可采用汉字。控制字符的特定表示形式:e 表示escape(ESC)码并等价于033 n 表示换行LF码并等价于012 r 表示回车CR码并等价于015 t 表示回车tab 其中e,n,r,t字符必须是小写。例如:“adfA12”,“c:fff.lsp”都是有效字符串。,4 表型数据(LIST)表是放在括号内的一个或多个数据元素的有序组合,数据元素由任意数量的整数、实数、字符串,甚至其它表组成。例:(12 25 10),(10“a”12.2)、(12“er”12.3(23 23 14)表提供了在一个符号中存储大量相关数值的有效方法,是AutoLISP的基本数据结构。表有两种类型:一种是供求值用,表中第一个元素是函数关键字或运算符。例如:求值表达式:(+12 45)。另一种是作为数据的容器,表中的第一个元素不是函数关键字或运算符。例如:表示一个空间点坐标的点表(12.3 34.5 25)。此外,还有一种特殊的表,该表中没有元素,称之为空表。,5 符号原子(SYMBOL)符号原子(简称符号)用于存储数据,符号名可以包含除下列字符以外的任何可以打印的字符:“(”和“)”括号用作表的定义。“.”该字符用作点对结构。“”该字符用于求值,是函数QUOTE的简写。“;”分号字符用作程序行的注释标志。“”字符串的分界符。例如:C24,C!23,67tf 正确;B.C,(NBA),N;45 错误。在程序中符号名不区分大小写,其长度不受限制。符号存储采用结点方式,一个结点只保存位的符号原子,若超过,将开辟新存储区,原结点则包含指向该存储区的指针,定义符号长度不超过位。两个特殊的字符,即T和Nil,其值由系统预先设定,T 的值为真,而Nil的值为空或不存在。,6 文件描述符(FILE)文件描述符是AutoLISP赋予其打开文件的字符系列标号,它的值由系统自动确定,当AutoLISP需要访问一个文件时(读或写),该文件的标号首先被引用,然后才能进行文件的读写操作。5 内部函数(SUB)AutoLISP一般通过定义内部函数来实现具体的操作功能,或者为AutoCAD增加命令,内部函数的定义是靠AutoLISP提供的函数“Defun”来定义的。8 实体名(ENAME)实体名是AutoLISP赋予绘图中实体的符号识别标号。实际上它是AutoCAD数据库文件内部的一个指针。9 选择集(PICKSET)选择集是一个或多个实体的集合。,5.2.3 AutoLISP变量,1 变量的名称 除系统的保留字、函数符号和产生歧意的字符之外的所有字符。系统约定变量名的第一个字符是字母。保留字:内部函数名、专用字符和AutoCAD 已定义的变量。专用字符:如小圆点(.)、双引号(“”)、单引号()、圆括号()、空格,函数符号有、*、等,产生歧意的字符:如显示操作符(?)、控制符号()等。,2 类型说明 变量没有类型说明函数,值类型取决于赋值函数或表达式的返回值类型。在程序设计时,对于同一个变量可以设定为不同类型的数据类型,变量的类型根据所赋值的类型自动确定。例如:(setq num 123);变量num的类型是整型(setq num“aaa”);变量num的类型是字符串(setq num(12 23 14 0);变量num的类型是表 变量可在系统命令行显示,在变量名前加上字符“!”即可。例如:!num 显示:(12 23 14 0),3 常用变量 AutoCAD已经定义了四个常用变量,用户可以直接调用,也可以用“setq”函数改变其值(建议不要改变)。四个常用变量如下:(1)PAUSE变量 带有反斜杠()的字符串,用于在命令函数中等待用户输入。(2)PI变量 常数的值,该值为3.1415926。(3)Nil变量 表示该变量的值不存在。(4)T变量 常量,用作一个非空值(not nil)。,4.变量的值域 AutoLISP的变量分为全局变量和局部变量。局部变量:是指用户在某一个函数中定义的变量,变量在函数执行时,值将被保存;函数结束后,变量从内存中自动消失。局部变量由AutoLISP函数“defun”来定义。全局变量:用“setq”函数赋值的变量均为全局变量,其值永久被保存,直到用户退出AutoCAD状态为止。变量存储:在AutoLISP中,每一个变量将作为一个节点(或结点)来保存,一个节点使用个字节以上的内存。变量清除:为了节约内存,当全局变量不使用时,及时清除以释放内存。清除变量的方法是把它们的值设定为Nil。例如:(setq num nil);nil表示清空。,5.2.4 AutoLISP表达式,表达式的形式为一个表型数据,即求值型表数据。1 表达式格式 表达式是包含有函数关键字,按照AutoLISP规则的字符串。格式为:(函数名 参数.)用户在编辑表达式时应注意以下几点:每一个表达式均由一个左括号开始,对应的右括号结束。内容包括一个函数名和一个函数的参数表,函数名在左,参数表在右,分隔符是空格。例如:(+2 3),“”是运算符或内部函数,表示2+3。表达式可嵌套表达式,不论嵌套几层,左右括号总配对。例如(/(+(-21 9)(-12 8)2),2 返回值 表达式返回一个值,该值返回到命令行命令提示处。AutoCAD命令行的命令提示信息的格式,英文版的命令提示符为“Command:”,而中文版的命令提示符为“命令:”。例如:命令:(*2 40)返回:80 AutoLISP是解释性语言,在命令行中直接输入。例如:命令:(*2 40)返回:80 命令:(+5(*2 40)返回:85,3 错误信息 如果用户输入的右括号不配对,则显示下面的提示:n).表示表达式中缺少个右括号。例如:命令:(*2(-45 5 命令:2)命令:80,5.3 AutoLISP内部函数,基本函数 基本函数分为:数学函数、关系函数、逻辑函数、表处理函数、字符串处理函数和转换函数等。实用函数 实用函数分分为几何求值、交互操作、流程控制和文件处理等五类。实体操作函数 实体操作函数分为实体名操作和选择及操作函数两类。其它操作函数 在这类函数中,主要包含系统环境相关、显示控制和内存管理函数,共列14个函数。,基本函数,1 数学函数 分为基本运算、三角函数等,共列18个函数。,加运算(+num1 num2)函数返回所有num的总和,num可为整数也可为实数,若其中一个为实数,结果为实数。例如:(+2 4 6)返回12(+12.5 2)返回14.5,减运算(-num1 num2)函数返回num1减去num2、num3、所得的差。例如:(-55 40)返回10(-60 40.0)返回20.0(-8)返回8,乘运算(*num1 num2)函数返回所有num的乘积。例如:(*3 7)返回21(*3(+2 0.5)返回5.5 除运算(/num1 num2)函数以num1除以num2、num3、.,所得的商返回。例如:(/9 2)返回4(/9.0 2)返回4.5 增量计算(1+num)函数返回num+1的值。返回值取决num的类型。例如:(1+8)返回9(1+3.5)返回4.5 减量计算(1-num)此函数返回num-1的值。例如:(1-8)返回7(1-5.5)返回4.5,求绝对值(abs number)函数返回number的绝对值,其中number可为整数或实数。例如:(abs 18)返回18(abs 12.5)返回12.500000(abs 2)返回2 求余弦(cos angle)函数返回angle的余弦值(实数),其中angle的单位为弧度。例如:(cos 0.0)返回1.00000(cos Pi)返回 1.00000 求正弦(sin angle)函数返回angle的正弦值。例如:(sin 2)返回0.90929(cos 2.0)返回0.90929,求反正切(atan num1 num2)函数返回num1/num2的反正切值。其范围在-之间。如果没有提供num2,函数返回num1的反正切值。如果num2为零,则返回的符号与num1相同,其值为1.570796,即值为90。例如:(atan 2.0 30)返回0.588002(atan 1.0)返回0.785398(atan 2.0 0)返回1.570796 求余数函数(rem num1 num2)函数返回num1/num2的余数。例如:(rem 20 4)返回0(rem 42 12)返回6 求最大公约数(gcd num1 num2)函数返回num1、num2的最大公约数,其参数必须为正整数。例如:(gcd 81 57)返回3(gcd 17 31)返回1,求最大值函数(max num1 num2)函数返回所给数的最大值。例如:(max 12 12.3 4)返回12.30000 求最小值函数(min num1 num2)函数返回所给数的最小值。例如:(min 14 11.3 4-2)返回-2 乘方计算函数(expt num power)函数返回num的power次方值,其中num为底数,为power幂,如果num和power为整数,返回值也为整数,否则返回实数。例如:(expt 3 3)返回27(expt 3 2)返回0(expt 3.0 2)返回0.11111,求e的任意次方函数(exp num)函数返回e的num次方值,返回值为实数。例如:(exp 1.0)返回2.718282(即e1)求对数函数(log num)函数返回num的自然对数,返回值为实数。例如:(log 3)返回1.098160求平方根函数(sqrt num)函数返回num的平方根,返回值为实数。例如:(sqrt 25)返回5.0000(sqrt 25.0)返回5.0000,2 关系函数 关系函数主要用于比较表达式之间的关系,共列6个函数。该类函数有六个,函数名分别为=、/=、和=。在这些函数中nstr可以为整数,可以为实数,也可以为字符串。当nstr为字符串时,则按ASCII码的大小进行比较。,等于函数(=nstr1 nstr2)所有的nstr均相等时,返回,否则返回Nil。不等于函数(/=nstr1 nstr2)若nstr1不等于nstr2,返回,否则返回Nil。小于函数(nstr1 nstr2)若nstr1小于nstr2,返回,否则返回Nil。,小于等于函数(nstr1 nstr2)若nstr1大于nstr2时,返回,否则返回Nil。大于等于函数(=nstr1 nstr2)若nstr1大于或等于nstr2时,返回,否则返回Nil。例如:(=8 8.0)返回T(=5.0 5.1)返回Nil(/=4 7.7)返回T(=18 7.0)返回T(=10.0 11.1)返回T,3 逻辑函数 包括三种基本逻辑运算函数和布尔运算函数,共列8个函数。逻辑“与”函数(and expr)函数返回所有表达式expr逻辑与的运算结果,若表达式运算结果为真,返回T;否则,返回Nil。例如:(and(3 2)(3 4)(5 6)(3 11)(12 3)返回 Nil,逻辑“非”函数(not item)当item的值为Nil,返回T,否则返回Nil。例如:若(setq a 123 b nil)则(not a)返回 Nil(not b)返回 T 布尔运算函数(boole 方式 int1 int2)函数是布尔运算函数。函数按照“方式”的值对后面的参数int1和int2进行相应的运算,返回运算的结果。“方式”的值和操作的关系如下表,按位逻辑“与”函数(logand int int)函数返回一串int作AND逻辑运算的值,数用十进制表示。例如:(logand 15 3)返回 3(logand 8 3 4)返回 0 按位逻辑“或”函数(logior 数1 数2)函数返回一串数按位作OR逻辑运算的值,用十进制表示。例如:(logior 1 2 4)返回 7(logior 9 3)返回 11 逻辑位移函数(lsh num1 nbit)函数返回num1经位移nbit后的逻辑值,nbit必须是整数。若nbit0,则num1向左移位,否则num1向右移。例如:(lsh 2 1)返回 4(lsh 2-1)返回 1 按位逻辑“非”函数(int)函数返回每一位的NOT(即补码)运算,此参数限定为整数。例如:(4)返回 5(-6)返回5,4 表处理函数 表处理函数主要是对表数据处理或返回数据是表数据,是lisp函数中使用频度比较高的函数之一,共列15个函数。构建表函数(list 表达式)函数将任意数目表达式串连成表,并返回该表。例如:(list 2 10 21)返回(2 10 21)(list(20 12)123)返回(20 12)123)连接表函数(append 表1 表2)函数将所有的表连在一起,返回它们组成的新表。例如:(append(a b)(s d)返回(a b s d)(append(a)(c)(t i)返回(a)(c)t i)向表首添加新元素函数(cons 新元素 表)函数把新元素加入到表的开头以构成新表,并返回新表。在此函数中,若用原子替代表,则构造一个点对并返回。例如:(cons a(b c d)返回(a b c d)(cons a 2)返回(a.2),倒置表函数(reverse 表)函数返回表被倒置后的新表。例如:(reverse(123 34 32)返回(32 34 123)取表中第一个元素函数(car 表)函数返回表中的第一个元素。如果是空表,返回Nil。例如:(car(a e d f)返回 a(cad(a)b v)返回(a)取子表函数(cdr 表)函数将返回一个表,是原表中除第一个元素外的所有元素。若表为空时,函数将返回Nil。例如:(cdr(a b c)a e)返回(a e)(cdr 12 3 45 33)返回(3 45 33),AutoLISP将提供最多四层串接的car及cdr函数。下面函数是有效的:caaar cadaar caaadr caaar caadar caadr caaddr csaar caddar cadddr caddr cdaddr cdadr cddadr cdaar cadadr cdadr cadr cddar cdddar cdddr cdaar caar cadr cddr 在AutoLISP中,cadr经常用来获取一个2D点或3D点的Y坐标值(Y坐标值是指二维或三维数据点表中的第2个元素)。同理,caddr也能被用来获取一个3D点的Z坐标值。例如:若(setq pt2(5.5 10.0)pt3(5.5 10.0 12)则(car pt2)返回 5.5(cadr pt2)返回 10.0(car pt3)返回 5.5(cadr pt3)返回 10.0(caddr pt2)返回 12,取表中第n个元素函数(nth n 表)函数返回表中第n个元素,其中n是元素的序号(0表示第一个元素)。若n大于表中元素的数目时,返回nil。例如:(nth 3(a b c d e)返回 d(nth 4(b c d e)返回Nil 取表中最后一个元素函数(last 表)函数将返回表中最后一个元素。表不能为空。例如:(last(1 2 3 4 5 6)返回 6 测量表的长度函数(length 表)函数返回表内元素的数目(整型数)。例如:(length(a b c d)返回4(lengih(a b(c d)返回 3,表元素替换函数(subst 新项 旧项 表)函数在表中查找旧项,用新项代替旧项,返回替代后的表。若在表中没有发现旧项,则把原表返回。例如:(subst 100 123(list 200 101 123 234)返回(200 101 100 234)assoc函数(assoc 关键字 联合表)函数在联合表中搜寻关键字,返回关键字对应的元素值。若搜索不到关键字返回Nil。联合表是点对表,如(10.2)例如:(setq a1(name box)(width 3)(size 4.7263)(depth 5)则:(assoc size a1)返回(size 4.7263)(assoc weighi al)返回 ni1 foreach函数(foreach 符号名 表 表达式)将表中元素按顺序分别赋给符号名,再计算表达式的值,返回最后一次循环时循环体中的最后一个表达式的计算结果。例如:(foreach n(a b c)(print n);执行结果:(print a)(print b)(print c),mapcar函数(mapcar 函数名 list1listn)函数把list1listn作为函数的参数,返回结果。例如:(setq a 10 b 20 c 30)(mapcar 1+(list a b c)返回(11 21 31)表数据测试函数(listp item)若item为表时,函数返回T,否则返回Nil。例如:(listp(a b c)返回 T(listp 4.3 43)返回 Nil member函数(member 表达式 表)函数在表中寻找表达式。返回表达式在表中第一次出现位置开始到最后所剩所有元素所组成表。若找不到表达式,返回nil。例如:(member e(a b e d f)返回(e d f)(member m(a b c d e)返回 nil,5 字符串函数该函数用于对字符串数据进行处理,共列7个函数。ASCII码转换函数(ASCII 字符串(或字符)函数返回字符串中第一个字符的ASCII码值,值为整型量。例如:(ASCII“L”)返回 76(ASCII“AutoCAD”)返回 65 字符串转换函数(Chr int)该函数将int代表的ASCII码转换成字符。例如:(chr 66)返回“B”(che 65)返回“A”字符串连接函数(strcat 字符串1 字符串1)该函数将所有的字符串连接在一起,返回连接的结果。例如:(strcat“abcd”“13d”)返回“abcd13d”(strcat“acd”“13”“AB”)返回“acd13AB”,求字符串长度函数(strlen 字符串)函数返回字符串的长度。例如:(strcat“abcd”)返回 4,(strcat“”)返回 0 求子字符串函数(substr 字符串 起点 长度)函数返回字符串一个子串,从字符串中“起点”位开始,取“长度”个字符,若省略,返回“起点”后的所有字符。例如:(substr“ab1cd”2 2)返回“b1”字符串大小写转换函数(strcass 字符串 方式)函数根据“方式”的值把字符串进行转换,返回结果。若“方式”为非空,换成小写字母,否则换成大写字母。例如:(strcass“AutoCAD”T)返回“autocad”(strcass“Autolisp”)返回“AUTOLISP”,6 转换函数 该类函数主要实现lisp数据的相互转换、单位制转换和坐标系转换,共列9个函数。(1)实型变整型函数(fix mumber)函数将number取整,即舍去小数部分,返回整型数。例如:(fix 5.4)返回 5(fix 7.9)返回 7(2)整型变实型函数(float number)函数返回number的实型数值。例如:(float 3)返回 3.0(float 56)返回 56.0(3)整型变字符串函数(itoa int)函数将整型数转换成字符串并返回。例如:(itoa 33)返回“33”(itoa-45)返回“-45”(4)字符串变整型数函数(atoi str)函数将字符串转换成整型数并返回。例如:(atoi“123”)返回123(atoi“-67”)返回-67,(5)字符串变实型数函数(atof str)函数将字符串转换成实型数并返回。例如:(atof“12.4”)返回12.4(atof“-3.2”)返回-3.2(6)实型数变字符串函数(rtos number 模式 精度)函数把实型数number转换成字符串返回。模式和精度为可选参数(整数)。精度表示小数点的位数,模式的值及含义如下表所示:,例如:(rtos 24.5 1 3)返回”2.450E+1”(rtos 24.5 2 2)返回”24.50”,(7)角度单位制转换函数(angtos ang 格式 精度)函数将用弧度表示的角度值按指定的格式转换成度。其中格式和精度均为整型数,精度表示小数点的位数。,(8)坐标系转换函数(trans 点 原坐标系 新坐标系)函数将一点坐标从一种坐标系统转换到另一种坐标系统中的坐标值。两个坐标系均用代码表示。,例如:(angtos 0.785398 0 4)返回 45.0000(angtos-0.785398 0 4)返回 315.0000,实用函数,1 几何求值函数 该类函数用于对几何数据进行测量和计算,共列5个函数。求两点距离(distance pt1 pt2)函数返回两点pt1和pt2之间的距离,点是2D点也可以是3D点。例如:(distance(1.0 2.5 3.0)(7.7 2.5 3.0)返回 6.7 求目标点表函数(polar 点 角度 距离)函数依据点、角、距方式求出一个点坐标,返回该点的点表。角度单位弧度,从X轴正方向量,逆时针为正,顺时针为负。例如:(polar(l 2 3)0.785398 20)返回(2.0 2.0 3.5)求方位角函数(angle pt1 pt2)函数返回两点pt1和pt2射线与X轴正方向的角度,单位弧度。如:(angle(list 5.0 1.33)(list 2.4 1.33)返回3.1415(angle(5.0 1.33)(2.4 1.33)返回1.5708,求表达式计算结果函数(eval expr)函数返回expr的计算结果。Expr可为AutoLISP的任意表达式。例如:(eval(*10 4.0 2)返回 80.0(eva1(abs l4)返回 14 求两线段交点函数(inters pt1 pt2 pt3 pt4 方式)函数计算两直线的交点坐标,返回交点点表。pt1和pt2、pt3和pt4为两条线段端点。“方式”为可选参数,,若“方式”为T,交点在两线段上时,返回交点点表,交点不在两线段上时,返回Nil。若“方式”Nil,允许交点在延长线上,返回交点。若交点不存在,返回Nil。,2 交互输入函数,整型数输入函数(getint 提示符)函数等待输入一个整型数并返回该整型数。例如:(setq num(getint)(setq num(getint”n请键入数字:”);n表示回车 实型数输入函数(getreal 提示符)函数等待输入一实型数返回该实型数,其它同getint函数。点输入函数(getpoint 参考点 提示符)函数等待输入一个点并返回该点的点表。参考点是个点表。例如:(setq pt(getpoint“n输入点:”)(setq pt(getpoint(list 10 20 0)“n输入点:”),角度输入函数(getangle 参考点 提示符)函数等待输入角度(用度表示),返回以弧度表示的角度。例如:(setq ang(getangle“n哪个方向?”)(setq ang(getangle(1.0 3.5 0)“n哪个方向”)距离输入函数(getdist 参考点 提示符)函数等待用户键入距离。可直接用键盘输入距离值,也可以输入一个点,把参考点到输入点的距离值作为输入值,函数返回实型数表示距离。例如:(setq dist(getdist)(setq dist(getdist“n输入距离:”)(setq dist(getdist(1.0 3.0)”n另一点:”)矩形对角点输入函数(getcorner 基点 提示符)函数返回在目前UCS中的一点,该点是基点的矩形对角点。函数在执行时由此基准点到屏幕上移动的十字光标间画出一矩形。,输入控制函数(initget 位值 关键字字符)控制输入函数,该函数为紧随其后的get类函数建立各种可选择项,它总是返回Nil。位值的定义说明如下表。,例如:(initget(+1 2 4)(setq age(getint“n输入你的年龄:”),关键字输入函数(getkword prompt)函数要求输入一个关键字并返回设定的关键字。在调用该函数之前,必须先用initget函数设定关键字的字符表。例如:(initget(+1 2 4)“Yes No nIl”)(setq yn(getkword“n输入关键字:”字符串输入函数(getstring cr 提示符)函数等待输入字符串,同时返回此字符串,字符串的最大长度为32个字符。如果cr存在,允许输入字符串中带有空格,终止字符串输入只能用回车。如果cr不存在,不允许输入字符串中带有空格,终止字符串的输入可以用回车也可以用空格键。例如:(setq s(getstring“n输入你的单位:”)用户输入:清华大学 返回“清华大学”(setq s(getstring T“n输入你的姓名:”)用户输入:王大中回车结束,返回“王大中”,关键字输入函数(getkword prompt)函数要求输入一个关键字并返回设定的关键字。在调用该函数之前,必须先用initget函数设定关键字的字符表。例如:(initget(+1 2 4)“Yes No nIl”)(setq yn(getkword“n输入关键字:”字符串输入函数(getstring cr 提示符)函数等待输入字符串,同时返回此字符串,字符串的最大长度为32个字符。如果cr存在,允许输入字符串中带有空格,终止字符串输入只能用回车。如果cr不存在,不允许输入字符串中带有空格,终止字符串的输入可以用回车也可以用空格键。例如:(setq s(getstring“n输入你的单位:”)用户输入:河南理工大学 返回“河南理工大学”(setq s(getstring T“n输入你的姓名:”)用户输入:王大中回车结束)返回“王大中”,3 流程控制函数,条件控制函数(if 条件式 表达式1 表达式2)若条件式为T,执行表达式1,否则执行表达式2,返回相应表达式的值。例如:(if(=3 6)”Yes!”“No!”)返回“No!”(if(=4(+3 1)”Yes!”“No!”)返回”Yes!”分支控制函数(cond(条件1 表达式1)(条件2 表达式2)函数以任何数值的表为参数,由表的第一项开始,直到有一项的值不为Nil为止。若条件为真,执行其后的表达式,并返回值。例如:(setq s“n”)(cond(or(=s“y”)(=s“Y”)(setq a 1)(or(=s“n”)(=s“N”)(setq a 0)(T(setq a NIL)执行结果:0,重复执行函数(repeat n 表达式)函数将表达式执行n次,返回最后表达式的值。例如:(setq a 4 b 12)(repeat 4(setq(+a l0)b(-b 2);返回4 求多个表达式值函数(progn 表达式)函数顺次计算每一个表达式,返回最后表达式的值。例如:(setq a 100 b 100)(if(=a b)(progn(setq a(+a 10)(setq b(-b 10)循环控制函数(while 条件式 表达式)函数先判别条件式,若表达式成立,顺次执行表达式。然后再判别条件式,若成立继续执行,直到表达式为nil时结束。例如:(setq I 0 a 1)(while(I 5)(setq a(+a 1)b(*2 a)I(+I 1),原子测试函数(atom item)函数测试item是否为原子,是原子返回T,否则返回Nil。例如:若:(setq a(x y z)b a)则:(atom a)返回 T(atom a)返回 Nil(atom b)返回 T(atom(a b c)返回 Nil 原子值测试函数(boundp sym)函数测试sym是否有值存在。若存在返回T,否则返回Nil。例如:若(setq a 2)(setq b Nil)则(boundp a)返回 T(boundp b)返回 Nil 负值测试函数(minusp item)函数判别item值,若item0时,则返回T,否则返回nil。例如:(minusp-1)返回 T(minusp 0.293)返回nil 数值测试函数(numberp item)若item是整型数或实型数时,返回T,否则返回nil。例如:若(setq a l23 b“sss”)则:(numberp 49)返回 T,空测试函数(null item)若item为nil

    注意事项

    本文(VisualLISP程序设计.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开