AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表

上传人:w****i 文档编号:92483434 上传时间:2019-07-10 格式:PPT 页数:32 大小:243KB
返回 下载 相关 举报
AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表_第1页
第1页 / 共32页
AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表_第2页
第2页 / 共32页
AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表_第3页
第3页 / 共32页
AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表_第4页
第4页 / 共32页
AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表》由会员分享,可在线阅读,更多相关《AutoCAD二次开发实用教程 教学课件 ppt 作者 郭秀娟第2章 数据类型、表(32页珍藏版)》请在金锄头文库上搜索。

1、第2章 数据类型、表,1.理解数据类型、表的概念; 2.掌握表和点对的使用; 3.掌握赋值函数在Auto Lisp中的使用;,本章要求:,AutoLISP语言主要用到如下数据类型: 整数 (INT) 实数 (REAL) 符号 (SYM) 字符串 (STR) 表(及用户定义的函数) (LIST) 文件描述符 (FILE) AutoLISP的内部函数 (SUBR) AutoCAD的选择集 (PICKSET) AutoCAD的实体名 (ENAME) 函数分页表 (PAGETB) 本节只介绍前5种数据类型,其他类型将在后面的章节中介绍。,2.1 数据类型,2.1.1 原子 1整数 整数(INT)由数字

2、和正负号组成,正号可以省略。AutoLISP支持32位有符号整数,范围在-2147483648到+2147483647之间,如整数超出此范围,计算机将提示出错信息。 2实型数 AutoLISP支持双精度实数,占8个字节内存,共有64个位。实型数范围为-1.79769310308到 +1.7979310308,至少有14位的精度。对于纯小数,小数点前面的前导0不能省略。如0.12103可表示为0.12E+3 或120.0,2.1 数据类型,3符号 1) 符号(SYMBOL)包括除左右圆括号 “( )”、小数点“.”、单引号“”、 双引号“”、分号“;”及全部由数字组成的字符之外的任何可打印字符。

3、 2) 符号原子的长度没有限制,命名时要以能够表达清楚变量的含义为主,但尽量不要超过6个,否则要占用额外的内存,降低运行速度。 3) 在AutoLISP中符号的大小写是等效的,如以下的符号原子都是合法的。 A A12 PC X-38-6 *A,2.1 数据类型,4) AutoLISP中的任何符号都是有值的,即符号都要赋一定的数值,或者说符号总是约束在一定值上。一般用赋值函数SETQ进行赋值。 例如: (SETQ x 25.0) 5) 符号名最好不要使用AutoLISP的内部函数名、常量名称、AutoCAD的命令、系统变量、acad.pgp文件内定义的外部命令等。 6)常量(程序运行过程中其值保

4、持不变的量): AutoLISP有4个内建常量,T/t 逻辑真值。 NIL/nil 逻辑假值,同时也代表空值(或空表)。 Pi 圆周率值,约等于3.141592654。 Pause 双反斜线“”字符,用于(COMMAND)函数等待输入。,2.1 数据类型,4字符串 字符串(STR)是由包含在一对双引号内的一组字符组成的,如: “ABC“ “135“ “Ab C“ “ “ 字符串可以包括任何可打印的字符。字符串中字母的大小写及空格都是有效字符。若字符串中没有任何字符,则为空串“。 当用户在 AutoLISP 表达式中直接使用用双引号括起来的字符时,该值被称为字符串常量。如:“string 1“和

5、“n Enter first point: “都是有效的字符串常量。 在用引号括起来的字符串中,用反斜杠“字符可以添加控制字符,即反斜杠“与小写字母组成的控制字符,控制字符及含义见表2-2。,2.1 数据类型,2.1 数据类型,2.1.2 表和点对 1表 在AutoLISP语言中,表(LIST)作为一种基的本数据类型,有如下特点: 1) 表是指放在一对相匹配的左、右圆括号中的一个或多个元素的有序集合。 2) 表中的每一个元素可以是任何类型的符号表达式,既可以是数字、符号、字符串,也可以是表。 3) 表中元素与元素之间至少要用一个空格隔开,而元素与括弧之间可不用空格,因为括弧本身就是有效的分隔号

6、。 例如: (15 (a b) c d) 在此例中,表内有4个元素,即15、(a b)、c和d,其中第二个元素又是一个表。,2.1 数据类型,4) 表是可以任意嵌套的,上例表中即嵌套了一个表(a b)。表可以嵌套很多层,从外层向里依次编号为0层(也称顶层)、1层、2层我们所说的表中的元素是指表的顶层元素,即0层元素。 5) 表中元素是有顺序的,从左向右,第一个元素的序号为0,第二个元素的序号为1,第n个元素的序号为n-1。 6) 表中顶层元素的个数称为表的长度。没有任何元素的表称为空表。空表用( )或NIL表示。在AutoLISP语言中,NIL是一个特殊的符号原子,它既是原子又是表。 7) 表

7、有两种基本类型:标准表和引用表。 标准表:标准表是AutoLISP程序的基本结构形式,AutoLISP程序是由标准表组成的。标准表用于函数的调用,,2.1 数据类型,其中第一个元素必须是系统内部函数或用户定义的函数,其他的元素为该函数的参数,如上面提到的赋值函数的调用,即采用标准表的形式。 (SETQ x 25.0) 表中第一个元素SETQ为系统内部定义的赋值函数,x和25.0均为SETQ的参数。 引用表:这种表第一个元素不是函数,这种表不作为函数调用,通常作为数据处理,在程序中以如下两种形式存在: (a d b) 或:(QUOTE (a d b) 引用表的一个重要应用是表示图中点的坐标。当表

8、示点的坐标时,表中的元素是用实型数构成的。,2.1 数据类型,2点对 点对(DOTTED PAIR)也是一种表,该表中只有两个元素,两元素中间为一圆点“.”,且圆点与元素之间必须用空格分开。 例如: (A . B)就是一个点对,A、B与圆点均用空格分开,其中第一个元素A为该点对的左元素,第二个元素B为点对的右元素。点对亦可任意嵌套。当使用点对时,切记要注意它的书写格式。例如:(X . (B . (Y . Z) 为合法点对,而(X . (B . Y) . Z)为非法的。 表的存储结构:表是一种数据结构,表的存储是一种串行结构。 例如: (1 2 3 ( A B ) 5 6 )的存储结构,见图2-

9、2。 点对常用于构造关联表。 图2-2 表的存储结构,2.1 数据类型,2.1.3 其他类型 1. 函数 函数(SUBS)分为内部函数和外部函数。 2. 文件描述符 文件描述符(FILE)是AutoLISP赋予被打开文件的标识号。3. 图元名 图元名(ENAME)是AutoCAD为图形对象指定的16进制的数字标识。 4. 选择集 选择集(PICKSET)是一个或多个图形对象命名的集合。 5. VLA 对象 VLA 对象是ActiveX 应用程序的主要组成部。,2.1 数据类型,2.1.4 AutoLISP的程序结构 1 表达式的构成 表达式是由原子或表构成的。 例如:5、12.5、“ABC“是

10、单个原子构成的表达式。 多数情况下,表达式以表的形式存在,其格式如下: (函数名变元) 变元的数量可以是0个,或多个,取决于具体函数。每个参数还可以是一个表达式。 注意:表达式形式的表,左圆括号之后的第一个元素必须是函数名。,2.1 数据类型,2.1.4 AutoLISP的程序结构 2 表达式的求值过程 在LISP语言中,最里层的表最先被求值,把求值的结果返回给外层表,直至求值完毕。 例如,表达式(setqx(* (+ a b) c)的求值顺序是,先求出最内层a与b之和,然后求出a、b之和与c的积,将求得的积赋给x,最后返回x的值。 可以在AutoCAD的命令提示符下,输入一个表达式, 例如,

11、在AutoCAD的命令提示符下,键入(sin 0.5)后回车,返回0.479426。 如果输入的信息或从文件中读入的表达式不正确,将显示出错信息。,2.1 数据类型,2.1.4 AutoLISP的程序结构 3 表达式的求值规则 1)整型数、实型数、字符串,以它们本身的值作为求值结果。 2)符号以它们当前的约束值作为求值结果。 3)表是根据其第一个元素进行求值。 如果第一个元素或第一个元素的计算结果是一个函数名,那么以表中剩余的元素作为该函数的参数,计算出该函数的值。 例如,表达式:(+ (* 2 3)(/ 50 3) 先计算最内层的表达式(* 2 3)和(/ 50 3),将结果6和16返回给其

12、外层表达式,原表达式变为:(+ 6 16)继续计算表达式(+ 6 16),返回22。,2.1 数据类型,2.1.4 AutoLISP的程序结构 4 数据的存储结构 计算机的内存是由许多编了码的内存单元组成。一个特定内存单元的编号称为内存地址。内存单元的内容是数字,也可以是内存单元的编号(即地址)。当单元的内容是地址时,这个内存单元被称为是指向另一个内存单元的指针。如果一个内存单元分为左、右两部分,分别存放两个内存单元的地址,那么,这个内存单元就具有左、右两个指针,这种内存单元被称为节点。AutoLISP通过这样的一些节点构成链表,并以链式方式存储各种数据。 储存结构见教材 图2-3、2-4、2

13、-5。,2.1 数据类型,2.1.4 AutoLISP的程序结构 5 AutoLISP程序的书写规则 (1) 书写规则 AutoLISP语言程序一般是由一个或一系列按顺序排列的标准表所组成。例如:(SETQ x 25.0)。 标准表,又可以看作是一个AutoLISP的程序。 一般书写原则: 1) 先写出对称的括号,再填入其内的函数和参数。 2) 适当地缩排,使程序各标准表间的主从关系明确化。 3) 做必要的空行,以区分程序中的各个单元。 4) 尽量加上注释,方便程序维护。程序注释可以使用任何语言,不影响程序的执行。,2.1 数据类型,2.1.4 AutoLISP的程序结构 5 AutoLISP

14、程序的书写规则 (2) AutoLISP语言函数的基本语法 函数的基本语法如下: (函数名称 参数1 参数2) 如: (PRINC “AutoLISP Programming“) 说明: 1)每一个完整的函数必须包在一对小括号( )内,左右括号成对出现;括号可以嵌套。 2)左边括号后紧随函数名称。 3)函数名称与参数之间,或参数与参数之间最少留一个空格。 4)函数可有一个或多个参数(也可能没有参数),视该函数而定。 5)函数名称不分大小写,即大小写字母视为相同。,2.1 数据类型,2.1.4 AutoLISP的程序结构 5 AutoLISP程序的书写规则 ( 3)举例 【例1】在图形屏幕上,画

15、一个如图圆心在(5 5),半径为8的圆。 (DEFUN mm() (SETQ r (GETREAL “n半径:“ ) (SETQ p (GETPOINT “n中心点:“) (COMMAND “circle“ p r ) ) 程序执行结果见右图。,2.1 数据类型,【例2】编程:随机输入两点坐标p1、p2,求两点距离及两点连线的方位角,并画出此线段,见图2-8,程序文件名为PROG1.LSP。 ( DEFUN mm1() (SETQ p1 (GETPOINT “n p1:“) P2 (GETPOINT “n p2:“) ) (SETQ d (DISTANCE p1 p2) (SETQ ang (ANGLE p1 p2) (PRINT d) (PRINT ang) (COMMAND “line“ p1 p2 “) ;在p1与 p2两点间画一条直线 ) 执行结果: 命令:(LOAD “C:PROG1.LSP“) 返回mm1 命令:(mm1) 命令:p1:30,45 命令:p2:123,89 图2-8 【例2】运行结果 139.461 0.439063 nil,2.1 数据类型,【例3】 文件名为PQ.LSP的AutoLISP文件是由以下程序组成的: (DEFUN mm2() (SETQ x 25.0) (SETQ y 12.2) (+ (* x y) x) ; 表示x*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号