您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 建筑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.1AutoLISP语言的发展和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.3AutoLISP数据类型和语言结构第16课AutoLISP语言与VisualLISP开发环境1、AutoLISP的数据类型AutoLISP表达式是根据括号中的指令和数据类型来执行的,主要有11种数据类型。整数实数符号与变量字符串表选择集实体名文件描述符VLA对象受保护符号AutoLISP函数第6教学单元建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.3AutoLISP数据类型和语言结构第16课AutoLISP语言与VisualLISP开发环境2、变量·预定义变量:AutoLISP中有一个特殊的变量“nil”,它是一种没有被赋予数值的变量,表示从内存中释放变量的值。·局部变量与整体变量:AutoLISP的变量可分为局部变量与整体变量。它们都可以在函数和运算式中定义。在函数定义的参数中,位于“/”右边的参数均为局部变量定义。第6教学单元建筑CAD二次开发技术16.1AutoLISP语言基础知识16.1.3AutoLISP数据类型和语言结构第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语言
本文标题:建筑CAD技术应用教程第16课
链接地址:https://www.777doc.com/doc-3327864 .html