为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

建筑CAD技术应用教程第16课

2019-11-14 27页 ppt 805KB 13阅读

用户头像 个人认证

RB0321

中交二航局第四工程有限公司生产经理

举报
建筑CAD技术应用教程第16课主讲:清华大学出版社第16课 AutoLISP语言与VisualLISP开发环境本课学习重点在前面已经提到设计和规划专业化的系统功能和命令集是对CAD系统进行二次开发的核心工作,本课要讲述的主要内容就是进行此项工作的基础知识—AutoLISP语言与VisualLISP开发环境。本课主要介绍AutoLISP语言的数据类型和语言结构,以及结合实例说明了各类主要AutoLISP函数的使用方法,最后结合程序调试过程说明VisualLISP开发环境的主要应用方式。第6教学单元 建筑CAD二次开发技术▪AutoLISP语言的数...
建筑CAD技术应用教程第16课
主讲:清华大学出版社第16课 AutoLISP语言与VisualLISP开发环境本课学习重点在前面已经提到设计和规划专业化的系统功能和命令集是对CAD系统进行二次开发的核心工作,本课要讲述的主要内容就是进行此项工作的基础知识—AutoLISP语言与VisualLISP开发环境。本课主要介绍AutoLISP语言的数据类型和语言结构,以及结合实例说明了各类主要AutoLISP函数的使用方法,最后结合程序调试过程说明VisualLISP开发环境的主要应用方式。第6教学单元 建筑CAD二次开发技术▪AutoLISP语言的数据类型和语言结构▪AutoLISP常用函数及应用▪VisualLISP开发环境图形界面及应用第6教学单元 建筑CAD二次开发技术16.1AutoLISP语言基础知识LISP(ListProcessingLanguage)是一种计算机的表处理语言,是在人工智能学科领域广泛应用的一种程序设计语言。而AutoLISP语言是嵌套于AutoCAD内部、将LISP语言和AutoCAD有机结合的产物。AutoLISP语言既具备一般高级语言的基本结构和功能,同时又具有一般高级语言所没有的强大的图形处理功能。可以运用AutoLISP编制任何专业化设计绘图程序,并把它嵌入到菜单系统中,通过定制专业系统以取得更高的工作效率。第16课 AutoLISP语言与VisualLISP开发环境第6教学单元 建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.1 AutoLISP语言的发展和VisualLISP的关系AutoLISP语言是从AutoCADV2.17版开始略具雏型的,那时LISP语言的版本很多,如CommonLISP、GoldenLISP、XLISP等,而AutoLISP就是取正统的LISP语法,再加以AutoCAD本身特有的功能指令而成的,形式上与CommonLISP比较接近。AutoLISP随着AutoCAD版本的更新和指令的成熟丰富,一直长盛不衰。VisualLISP作为新一代的LISP语言及开发环境,为了充分利用AutoLISP语言的优势和资源,采用了与AutoLISP完全兼容的模式。与AutoLISP不同的地方是VisualLISP采用了向LISP语言看齐的标准,使程序设计者能更加兼容由LISP语言开发的其他人工智能系统,这也是程序设计语言走向标准化的重要步骤。对于使用AutoLISP的用户可以将VisualLISP看成是以AutoLISP语言为基础,增加了许多新函数和系统变量,并提供实用开发环境的二次开发系统。第16课 AutoLISP语言与VisualLISP开发环境第6教学单元 建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.2 加载和运行AutoLISP程序第16课 AutoLISP语言与VisualLISP开发环境在AutoCAD环境中主要有两种加载AutoLISP程序的方法。第一种方法在命令行中进行加载,如要加载名为“Gpath.lsp”的程序文件,则在命令提示行输入:command:(load”GPATH”)第二种方法是通过选择下拉菜单工具中的加载应用程序选项打开加载应用程序对话框来加载AutoLISP程序。第6教学单元 建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.3 AutoLISP数据类型和语言结构第16课 AutoLISP语言与VisualLISP开发环境1、AutoLISP的数据类型AutoLISP表达式是根据括号中的指令和数据类型来执行的,主要有11种数据类型。整数实数符号与变量字符串表选择集实体名文件描述符VLA对象受保护符号AutoLISP函数第6教学单元 建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.3 AutoLISP数据类型和语言结构第16课 AutoLISP语言与VisualLISP开发环境2、变量· 预定义变量:AutoLISP中有一个特殊的变量“nil”,它是一种没有被赋予数值的变量,表示从内存中释放变量的值。· 局部变量与整体变量:AutoLISP的变量可分为局部变量与整体变量。它们都可以在函数和运算式中定义。在函数定义的参数中,位于“/”右边的参数均为局部变量定义。第6教学单元 建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.3 AutoLISP数据类型和语言结构第16课 AutoLISP语言与VisualLISP开发环境3、AutoLISP的语言结构AutoLISP程序的书写格式有如下特点:• 由于AutoLISP语言的一切成分都是函数,而所有函数又以表结构的形式存在,所以AutoLISP程序的所有括号都需要左右匹配。• 函数必须放在表中第一个元素的位置,如赋值函数“SETQ”、算术运算函数“+”等应为表中的第一个元素,即放在操作数之前,而不是放在它们的中间。同时表中的函数与参数,各参数之间均至少要用一个空格分开。• 两个表之间和表内的多余空格和回车是不需要的,故一个表可占多行,一行也可以写多个表。• AutoLISP程序中可以使用分号“;”作注释。•AutoLISP程序是以后缀为“lsp”的ASCII码文本文件形式表达。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.1 运算符第16课 AutoLISP语言与VisualLISP开发环境1、数学运算符任何编程语言都提供数学函数,同样在AutoLISP中也提供了编程以及数学运算所需要的大部分数学函数。2、比较运算符在程序中,通常需要测试某些特定的条件,若条件为真,程序执行某些功能,若不为真,执行另外一些功能。编程中经常要用到这些类型的比较运算符。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.2 定义函数、赋值函数和用户输入函数第16课 AutoLISP语言与VisualLISP开发环境1、定义函数利用DEFUN函数在AutoLISP中可以定义用户自己的函数。一旦完成定义,这些函数可以同标准函数一样在AutoCAD命令行或者在其他AutoLISP表达式中使用。同时用户也可以创建自己的AutoCAD命令,因为命令是一种专用的函数类型。2、赋值函数每个接收用户输入的GETXXX函数,都能够暂停程序执行,等待用户输入指定类型的数据,而后返回用户输入的值。在函数等待用户输入之前,将会有一个可选的提示显示。3、用户输入函数第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.2 定义函数、赋值函数和用户输入函数第16课 AutoLISP语言与VisualLISP开发环境4、有关AutoCAD命令的函数COMMAND函数直接将一个AutoCAD命令送到AutoCAD命令行中,AutoCAD命令名及命令选项必须置于双引号内;函数中的参数必须和预计的命令提示系列的类型和值对应,这些类型可以是字符串、实数、整数、点、实体名或选择集名。像角度、距离或点这样的数据可以用字符串或其本身值作为参考传入,一个空字符串“""”和按回车键是一样的。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.3 系统变量存取函数、表处理函数和显示函数第16课 AutoLISP语言与VisualLISP开发环境1、系统变量存取函数通过使用GETVAR和SETVAR函数,AutoLISP能够获得和改变AutoCAD系统变量的值。这些函数使用一个字符串来指定一个系统变量名,系统变量名必须置于双引号中。SETVAR函数指定一个AutoCAD系统变量所期望的数据类型的值。GETVAR函数使AutoLISP程序可以访问当前定义的变量,同时可以存储,以便以后恢复。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.3 系统变量存取函数、表处理函数和显示函数第16课 AutoLISP语言与VisualLISP开发环境2、表处理函数AutoLISP主要通过表结构来存储数据和处理数据,AutoLISP的表处理函数主要有构造表函数,选取表元素函数和关联表函数等。构造表函数LIST可用于将任意数目的表达式组合成一个表,该函数还可以使用单引号“’”命名。选取表元素函数将用来选择表中的部分内容,其中:• CAR函数:返回表中的第一个元素。• CDR函数:返回一个移去表第一个元素后的列表。• CADR函数:该函数执行两个操作,即CDR和CAR,因此返回列表的第二个元素。• LAST函数:返回表中的最后一个元素。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.3 系统变量存取函数、表处理函数和显示函数第16课 AutoLISP语言与VisualLISP开发环境3、显示函数AutoLISP有几个函数可以控制AutoCAD的显示,包括文本屏幕和图形屏幕的控制等。基本的输出函数有PROMPT、PRINC、PRIN1和PRINT。PROMPT函数在AutoCAD提示行显示一条信息并返回“nil”,这仅用于在屏幕上显示一条信息。PRINC、PRIN1和PRINT函数都是在提示行显示一个表达式并返回该表达式。它们的不同之处为PRINC显示不带引号字符串,并打印带“\”符号的控制字符;而PRIN1和PRINT显示带引号的字符串,不打印控制字符;并且PRINT在表达式的开始处放一个换行符,在结尾处放一个空格。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.4 角度转换和几何计算函数第16课 AutoLISP语言与VisualLISP开发环境1、角度转换角度和弧度相互之间转换的有效的方法是建立一个弧度到角度或角度到弧度的转换函数。2、几何计算函数POLAR函数利用相对于给定点的角度和距离定义另一个点,该角度以弧度表示,逆时针方向为正,POLAR函数的格式为:(polar给定参照点弧度 距离)第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.5 判断语法与循环结构第16课 AutoLISP语言与VisualLISP开发环境1、流程图 流程图以图形的方式来表示算法,可用于对具体问题进行系统的分析,特别是当问题中包含判断、循环等语句时更有助于对程序的理解。流程图是由在程序中代表特定功能的标准符号构成,而每个符号都通过表示操作结果的直线连接起来。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.5 判断语法与循环结构第16课 AutoLISP语言与VisualLISP开发环境2、判断函数本节前面讨论的关系函数用于建立两个元素间的关系。例如,(<xy)描述了一个操作的测试条件。为了有目的的使用这些函数,就必须用到判断函数。例如,(if(<xy)(setqz(-yx))(setqz(-xy)))描述了当该条件为真“T”和假“nil”两种情况时将采取的动作。若条件为真,z=y-x;若条件为假,z=x-y。因此,对于各种高级程序语言来说,判断函数是非常重要的。IF函数指定的条件返回为“T”,则执行第一个表达式;若指定的条件返回为“nil”,则执行第二个表达式。该函数的格式为:(if条件语句第一个表达式第二个表达式)第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.5 判断语法与循环结构第16课 AutoLISP语言与VisualLISP开发环境2、判断函数COND函数提供了一种特殊的多项选择判断方法,它可以用来检测表达式的各种值,然后再选择适当的一个来执行。其格式是:(cond((判断式1)(执行运算式1))((判断式2)(执行运算式2))((判断式3)(执行运算式3))…(t(最后表达式)))  COND函数对它的判断式先进行求值,直到其中一个符合条件(不为“nil”)为止,然后再去执行该判断式后的执行运算式;如果所有的判断式均为“nil”,则执行最后表达式。第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.5 判断语法与循环结构第16课 AutoLISP语言与VisualLISP开发环境3、循环函数循环是一种功能强大的语言结构,它能让计算机快速、准确地处理重复性的流程或表达式,这样就不需要重复编写相关的程序代码。WHILE函数求解一个测试条件,若条件不为“nil”,则重复执行循环子句中的表达式,直至测试表达式的求值结果为nil为止,然后跳出循环。其格式为:(while测试条件表达式)REPEAT函数根据函数中指定的次数n反复求解表达式,变量n必须为整数,其格式为:(repeatn表达式)第6教学单元 建筑CAD二次开发技术16.2AutoLISP常用函数及其应用16.2.6 编辑图形数据库函数第16课 AutoLISP语言与VisualLISP开发环境前面讲述的AutoLISP常用函数,使用它们就象使用AutoCAD绘图命令一样,在处理比较复杂的问题时依然效率不高,AutoLISP还提供了一类图形数据库访问和编辑函数,它们是编辑图形的强大工具。例如,可以编写一个程序,只要输入一个命令,就可以删除图形中的所有文本对象或者改变所有圆的图层及颜色。一旦了解了AutoCAD存储图形对象的信息,以及如何检索和编辑这些信息,就可以以任何希望的方式操纵该图形数据库。第6教学单元 建筑CAD二次开发技术16.3VisualLISP开发环境及其应用16.3.1 VisualLISP开发环境图形界面第16课 AutoLISP语言与VisualLISP开发环境VisualLISP集成开发环境运行在一系列独立的窗口中,这些窗口虽然与AutoCAD分离,但用户只能在AutoCAD中启动和使用VisualLISP。第6教学单元 建筑CAD二次开发技术16.3VisualLISP开发环境及其应用16.3.2 VisualLISP开发环境应用第16课 AutoLISP语言与VisualLISP开发环境VisualLISP开发辅助工具可以帮助用户所编写的AutoLISP代码,改善其可读性,同时还帮助用户检查代码中的语法错误。1、开发辅助工具第6教学单元 建筑CAD二次开发技术16.3VisualLISP开发环境及其应用16.3.2 VisualLISP开发环境应用第16课 AutoLISP语言与VisualLISP开发环境VisualLISP中包含了强大的调试功能使用户可以方便地对程序进行调试。主要提供的工具有:•中断循环模式(BreakLoopMode):可以在程序中指定的位置终止程序的执行。•查看(InspectWindow):在查看窗口中可以向用户提供有关对象的详细信息。•观察窗口(WatchWindow):在程序执行过程中可以观察变量的值。•堆栈跟踪工具(TraceStackFacility):堆栈是VisualLISP中的一种机制,通过这种机制VisualLISP可以记录程序中函数的执行顺序。•跟踪工具(TraceFacility):跟踪工具用来记录被跟踪函数的调用和返回值,并将这些信息显示在特定的跟踪窗口中。2、调试工具第6教学单元 建筑CAD二次开发技术16.3VisualLISP开发环境及其应用16.3.2 VisualLISP开发环境应用第16课 AutoLISP语言与VisualLISP开发环境(1)设置断点3、程序调试范例第6教学单元 建筑CAD二次开发技术16.3VisualLISP开发环境及其应用16.3.2 VisualLISP开发环境应用第16课 AutoLISP语言与VisualLISP开发环境(2)逐步执行程序3、程序调试范例第6教学单元 建筑CAD二次开发技术16.3VisualLISP开发环境及其应用16.3.2 VisualLISP开发环境应用第16课 AutoLISP语言与VisualLISP开发环境(3)监视表达式的计算结果3、程序调试范例第6教学单元 建筑CAD二次开发技术16.4小结第16课 AutoLISP语言与VisualLISP开发环境本课主要讲述了常用AutoLISP函数相关的参数设置、格式句法等知识,它们是编写专业设计程序的重要基础。AutoLISP函数很多,要想编写功能强大的程序,还需要参阅AutoLISP程序员手册以及AutoCAD联机帮助系统。可以这样说,学习某种程序设计语言,核心内容就是要掌握该语言中各类函数的用法。思考题:1 简述VisualLISP与AutoLISP关系?2AutoLISP的数据类型有哪些?其中符号与变量的关系是什么?3简述AutoLISP中有哪些GETXXX函数?其对应处理的数据类型是什么?4 循环函数WHILE和REPEAT的用法有什么不同?如何运用VisualLISP集成开发环境编写和调试程序?如何运用ActiveX函数访问AutoCAD对象,创建AutoCAD图形对象?
/
本文档为【建筑CAD技术应用教程第16课】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索