版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、主讲:主讲:清华大学出版社清华大学出版社第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境 本课学习重点本课学习重点 在前面已经提到设计和规划专业化的系统功能和命令集是对CAD系统进行二次开发的核心工作,本课要讲述的主要内容就是进行此项工作的基础知识AutoLISP语言与Visual LISP开发环境。本课主要介绍AutoLISP语言的数据类型和语言结构,以及结合实例说明了各类主要AutoLISP函数的使用方法,最后结合程序调试过程说明Visual LISP开发环境的主要应用方式。第第6 6教学单元教学单元建筑建筑CADCA
2、D二次开发技术二次开发技术 AutoLISP语言的数据类型和语言结构语言的数据类型和语言结构 AutoLISP常用函数及应用常用函数及应用 Visual LISP开发环境图形界面及应用开发环境图形界面及应用第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.1AutoLISPAutoLISP语言基础知识语言基础知识 LISP(List Processing Language)是一种计算机的表处理语言,是在人工智能学科领域广泛应用的一种程序设计语言。而AutoLISP语言是嵌套于AutoCAD内部、将LISP语言和AutoCAD有机结合的产物。AutoLISP语言既具备一
3、般高级语言的基本结构和功能,同时又具有一般高级语言所没有的强大的图形处理功能。可以运用AutoLISP编制任何专业化设计绘图程序,并把它嵌入到菜单系统中,通过定制专业系统以取得更高的工作效率。第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.1AutoLISPAutoLISP语言基础知识语言基础知识16.1.116.1.1AutoLISPAutoLISP语言的发展和语言的发展和Visual LISPVisual LISP的关系的关系 AutoLISP
4、语言是从AutoCAD V2.17版开始略具雏型的,那时LISP语言的版本很多,如CommonLISP、GoldenLISP、XLISP等,而AutoLISP就是取正统的LISP语法,再加以AutoCAD本身特有的功能指令而成的,形式上与CommonLISP比较接近。AutoLISP随着AutoCAD版本的更新和指令的成熟丰富,一直长盛不衰。 Visual LISP作为新一代的LISP语言及开发环境,为了充分利用AutoLISP语言的优势和资源,采用了与AutoLISP完全兼容的模式。与AutoLISP不同的地方是Visual LISP采用了向标准LISP语言看齐的标准,使程序设计者能更加兼容
5、由LISP语言开发的其他人工智能系统,这也是程序设计语言走向标准化的重要步骤。对于使用AutoLISP的用户可以将Visual LISP看成是以AutoLISP语言为基础,增加了许多新函数和系统变量,并提供实用开发环境的二次开发系统。第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.1AutoLISPAutoLISP语言基础知识语言基础知识16.1.216.1.2加载和运行加载和运行AutoLISPAutoLISP程序程序第第1616课课AutoLI
6、SPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境在AutoCAD环境中主要有两种加载AutoLISP程序的方法。 第一种方法在命令行中进行加载,如要加载名为“Gpath.lsp”的程序文件,则在命令提示行输入:command:(load”GPATH”) 第二种方法是通过选择下拉菜单工具工具中的加加载应用程序载应用程序选项打开加载应用程加载应用程序序对话框来加载AutoLISP程序 。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.1AutoLISPAutoLISP语言基础知识语言基础知识16.1.316.1.3AutoLI
7、SPAutoLISP数据类型和语言结构数据类型和语言结构第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境1、AutoLISP的数据类型的数据类型 AutoLISP表达式是根据括号中的指令和数据类型来执行的,主要有11种数据类型。 整数实数符号与变量字符串表选择集实体名文件描述符VLA对象受保护符号AutoLISP函数第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.1AutoLISPAutoLISP语言基础知识语言基础知识16.1.316.1.3AutoLISPAutoLISP数据类型和语言结构数
8、据类型和语言结构第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境2、变量、变量预定义变量:AutoLISP中有一个特殊的变量“nil”,它是一种没有被赋予数值的变量,表示从内存中释放变量的值。 局部变量与整体变量:AutoLISP的变量可分为局部变量与整体变量。它们都可以在函数和运算式中定义。在函数定义的参数中,位于“/”右边的参数均为局部变量定义。 第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.1AutoLISPAutoLISP语言基础知识语言基础知识16.1.316.1.3AutoLISP
9、AutoLISP数据类型和语言结构数据类型和语言结构第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境3、AutoLISP的语言结构的语言结构AutoLISP程序的书写格式有如下特点: 由于AutoLISP语言的一切成分都是函数,而所有函数又以表结构的形式存在,所以AutoLISP程序的所有括号都需要左右匹配。 函数必须放在表中第一个元素的位置,如赋值函数“SETQSETQ”、算术运算函数“+”+”等应为表中的第一个元素,即放在操作数之前,而不是放在它们的中间。同时表中的函数与参数,各参数之间均至少要用一个空格分开。 两个表
10、之间和表内的多余空格和回车是不需要的,故一个表可占多行,一行也可以写多个表 。 AutoLISP程序中可以使用分号“;”作注释 。 AutoLISP程序是以后缀为“lsp”的ASCII码文本文件形式表达。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.116.2.1运算符运算符第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境1、数学运算符、数学运算符 任何编程语言都提供数学函数,同样在AutoLISP中也提供了编程以及数
11、学运算所需要的大部分数学函数 。2、比较运算符、比较运算符 在程序中,通常需要测试某些特定的条件,若条件为真,程序执行某些功能,若不为真,执行另外一些功能。编程中经常要用到这些类型的比较运算符。 第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.216.2.2定义函数、赋值函数和用户输入函数定义函数、赋值函数和用户输入函数第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境1、定义函数、定义函数 利用DEFUNDEFUN函数在
12、AutoLISP中可以定义用户自己的函数。一旦完成定义,这些函数可以同标准函数一样在AutoCAD命令行或者在其他AutoLISP表达式中使用。同时用户也可以创建自己的AutoCAD命令,因为命令是一种专用的函数类型。2、赋值函数、赋值函数 每个接收用户输入的GETXXXGETXXX函数,都能够暂停程序执行,等待用户输入指定类型的数据,而后返回用户输入的值。在函数等待用户输入之前,将会有一个可选的提示显示。 3、用户输入函数、用户输入函数第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.216
13、.2.2定义函数、赋值函数和用户输入函数定义函数、赋值函数和用户输入函数第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境4、有关、有关AutoCAD命令的函数命令的函数 COMMAND COMMAND函数直接将一个AutoCAD命令送到AutoCAD命令行中,AutoCAD命令名及命令选项必须置于双引号内;函数中的参数必须和预计的命令提示系列的类型和值对应,这些类型可以是字符串、实数、整数、点、实体名或选择集名。像角度、距离或点这样的数据可以用字符串或其本身值作为参考传入,一个空字符串“”和按回车键是一样的。 第第6 6教
14、学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.316.2.3系统变量存取函数、表处理函数和显示函数系统变量存取函数、表处理函数和显示函数第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境1、系统变量存取函数、系统变量存取函数 通过使用GETVARGETVAR和SETVARSETVAR函数,AutoLISP能够获得和改变AutoCAD系统变量的值。这些函数使用一个字符串来指定一个系统变量名,系统变量名必须置于双引号中。 SETVARS
15、ETVAR函数指定一个AutoCAD系统变量所期望的数据类型的值。 GETVARGETVAR函数使AutoLISP程序可以访问当前定义的变量,同时可以存储,以便以后恢复。 第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.316.2.3系统变量存取函数、表处理函数和显示函数系统变量存取函数、表处理函数和显示函数第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境2、表处理函数、表处理函数 AutoLISP主要通过表结构来存储数
16、据和处理数据,AutoLISP的表处理函数主要有构造表函数,选取表元素函数和关联表函数等。 构造表函数LIST可用于将任意数目的表达式组合成一个表,该函数还可以使用单引号“”命名。 选取表元素函数将用来选择表中的部分内容,其中: CARCAR函数:返回表中的第一个元素。 CDRCDR函数:返回一个移去表第一个元素后的列表。 CADRCADR函数:该函数执行两个操作,即CDRCDR和CARCAR,因此返回列表的第二个元素。 LASTLAST函数:返回表中的最后一个元素。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常
17、用函数及其应用16.2.316.2.3系统变量存取函数、表处理函数和显示函数系统变量存取函数、表处理函数和显示函数第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境3、显示函数、显示函数 AutoLISP有几个函数可以控制AutoCAD的显示,包括文本屏幕和图形屏幕的控制等。 基本的输出函数有PROMPTPROMPT、PRINCPRINC、PRIN1PRIN1和PRINTPRINT。 PROMPTPROMPT函数在AutoCAD提示行显示一条信息并返回“nil”,这仅用于在屏幕上显示一条信息。PRINCPRINC、PRIN1
18、PRIN1和PRINTPRINT函数都是在提示行显示一个表达式并返回该表达式。它们的不同之处为PRINCPRINC显示不带引号字符串,并打印带“”符号的控制字符;而PRIN1PRIN1和PRINTPRINT显示带引号的字符串,不打印控制字符;并且PRINTPRINT在表达式的开始处放一个换行符,在结尾处放一个空格。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.416.2.4角度转换和几何计算函数角度转换和几何计算函数第第1616课课AutoLISPAutoLISP语言与语言与Visual
19、LISPVisual LISP开发环境开发环境1、角度转换、角度转换 角度和弧度相互之间转换的有效的方法是建立一个弧度到角度或角度到弧度的转换函数 。2、几何计算函数、几何计算函数 POLAR POLAR函数利用相对于给定点的角度和距离定义另一个点,该角度以弧度表示,逆时针方向为正,POLARPOLAR函数的格式为:(polar 给定参照点 弧度距离)第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.516.2.5判断语法与循环结构判断语法与循环结构第第1616课课AutoLISPAutoLI
20、SP语言与语言与Visual LISPVisual LISP开发环境开发环境1、流程图、流程图 流程图以图形的方式来表示算法,可用于对具体问题进行系统的分析,特别是当问题中包含判断、循环等语句时更有助于对程序的理解。流程图是由在程序中代表特定功能的标准符号构成,而每个符号都通过表示操作结果的直线连接起来。 第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.516.2.5判断语法与循环结构判断语法与循环结构第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisu
21、al LISP开发环境开发环境2、判断函数、判断函数 本节前面讨论的关系函数用于建立两个元素间的关系。例如,( x y)描述了一个操作的测试条件。为了有目的的使用这些函数,就必须用到判断函数。例如,(if ( x y)(setq z (- y x)(setq z (- x y))描述了当该条件为真“T”和假“nil”两种情况时将采取的动作。若条件为真,z=y-x;若条件为假,z=x-y。因此,对于各种高级程序语言来说,判断函数是非常重要的。IFIF函数指定的条件返回为“T”,则执行第一个表达式;若指定的条件返回为“nil”,则执行第二个表达式。该函数的格式为:(if 条件语句 第一个表达式 第
22、二个表达式)第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.516.2.5判断语法与循环结构判断语法与循环结构第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境2、判断函数、判断函数CONDCOND函数提供了一种特殊的多项选择判断方法,它可以用来检测表达式的各种值,然后再选择适当的一个来执行。其格式是:(cond (判断式1)(执行运算式1)(判断式2)(执行运算式2)(判断式3)(执行运算式3)(t(最后表达式)))CO
23、NDCOND函数对它的判断式先进行求值,直到其中一个符合条件(不为“nil”)为止,然后再去执行该判断式后的执行运算式;如果所有的判断式均为“nil”,则执行最后表达式。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.516.2.5判断语法与循环结构判断语法与循环结构第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境3、循环函数、循环函数 循环是一种功能强大的语言结构,它能让计算机快速、准确地处理重复性的流程或表达式,这样
24、就不需要重复编写相关的程序代码。 WHILEWHILE函数求解一个测试条件,若条件不为“nil”,则重复执行循环子句中的表达式,直至测试表达式的求值结果为nil为止,然后跳出循环。其格式为: (while 测试条件 表达式) REPEATREPEAT函数根据函数中指定的次数n反复求解表达式,变量n必须为整数,其格式为: (repeat n 表达式)第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.2AutoLISPAutoLISP常用函数及其应用常用函数及其应用16.2.616.2.6编辑图形数据库函数编辑图形数据库函数第第1616课课AutoLISPAutoLISP
25、语言与语言与Visual LISPVisual LISP开发环境开发环境 前面讲述的AutoLISP常用函数,使用它们就象使用AutoCAD绘图命令一样,在处理比较复杂的问题时依然效率不高,AutoLISP还提供了一类图形数据库访问和编辑函数,它们是编辑图形的强大工具。例如,可以编写一个程序,只要输入一个命令,就可以删除图形中的所有文本对象或者改变所有圆的图层及颜色。一旦了解了AutoCAD存储图形对象的信息,以及如何检索和编辑这些信息,就可以以任何希望的方式操纵该图形数据库。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.3Visual LISPVisual LI
26、SP开发环境及其应用开发环境及其应用16.3.116.3.1Visual LISPVisual LISP开发环境图形界面开发环境图形界面第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境 Visual LISP集成开发环境运行在一系列独立的窗口中,这些窗口虽然与AutoCAD分离,但用户只能在AutoCAD中启动和使用Visual LISP。第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.3Visual LISPVisual LISP开发环境及其应用开发环境及其应用16.3.216.3.2Visu
27、al LISPVisual LISP开发环境应用开发环境应用第第1616课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境 Visual LISP开发辅助工具可以帮助用户规范所编写的AutoLISP代码,改善其可读性,同时还帮助用户检查代码中的语法错误。 1、开发辅助工具、开发辅助工具第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.3Visual LISPVisual LISP开发环境及其应用开发环境及其应用16.3.216.3.2Visual LISPVisual LISP开发环境应用开发环境应用第第161
28、6课课AutoLISPAutoLISP语言与语言与Visual LISPVisual LISP开发环境开发环境Visual LISP中包含了强大的调试功能使用户可以方便地对程序进行调试。主要提供的工具有: 中断循环模式(Break Loop ModeBreak Loop Mode):可以在程序中指定的位置终止程序的执行。 查看(Inspect WindowInspect Window):在查看窗口中可以向用户提供有关对象的详细信息。 观察窗口(Watch WindowWatch Window):在程序执行过程中可以观察变量的值。 堆栈跟踪工具(Trace Stack FacilityTrace Stack Facility):堆栈是Visual LISP中的一种机制,通过这种机制Visual LISP可以记录程序中函数的执行顺序。 跟踪工具(Trace FacilityTrace Facility):跟踪工具用来记录被跟踪函数的调用和返回值,并将这些信息显示在特定的跟踪窗口中。2、调试工具、调试工具第第6 6教学单元教学单元建筑建筑CADCAD二次开发技术二次开发技术16.3Visual LISPVisual LISP开发环境及其应用开发环境及其应用16.3.216.3.2Visual LISPVisual LISP开发环境应用开发环境应用第第1616课课Auto
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空调安装工程总包
- 矿山扩建延期协议
- 企业信用评级承诺书
- 员工入职承诺书:项目管理篇
- 停车场清洁工聘用协议
- 家电回收物流承诺书模板
- 交通运输参股管理要求
- 果园种植培训租赁协议
- 企业年金管理与资本市场动态
- 服装加工物料提升机租赁合同
- 消毒供应室特种设备管理
- 食品智能化加工技术
- 银行转账截图生成器制作你想要的转账截图
- 2022年版 义务教育《数学》课程标准
- 2024重度哮喘诊断与处理中国专家共识解读课件
- 家长会课件:小学一年级家长会语文老师课件
- 成人住院患者静脉血栓栓塞症Caprini、Padua风险评估量表
- 小学团委支部工作计划
- 小班安全我要跟着老师走
- 外事实务智慧树知到期末考试答案2024年
- 中考道德与法治复习策略指导
评论
0/150
提交评论