CAD二次开发ppt

上传人:德****1 文档编号:1089366 上传时间:2017-05-27 格式:PPT 页数:751 大小:40.57MB
返回 下载 相关 举报
CAD二次开发ppt_第1页
第1页 / 共751页
CAD二次开发ppt_第2页
第2页 / 共751页
CAD二次开发ppt_第3页
第3页 / 共751页
CAD二次开发ppt_第4页
第4页 / 共751页
CAD二次开发ppt_第5页
第5页 / 共751页
点击查看更多>>
资源描述

《CAD二次开发ppt》由会员分享,可在线阅读,更多相关《CAD二次开发ppt(751页珍藏版)》请在金锄头文库上搜索。

1、第1章,AutoLISP和Visual LISP,1.1 关于LISP,LISP是人工智能领域中广泛采用的一种程序设计语言。主要用于人工智,能、机器人、专家系统、博奕、定理证明等领域。,LISP也被称为符号式语言,因为它处理的对象是符号表达式。LISP语言,的程序和数据都是以符号表达式的形式来表示,因此,一个LISP程序可以把,另一个LISP程序作为它的数据来处理。,LISP语言语法简单,编写程序便捷、灵活,数据类型丰富。利用LISP语,言可以很容易地定义或调用新的函数。这就是Autodesk公司早在1985年的2.1,版本就引用了LISP语言的宏操作,在1986年的2.5版本就推出了比较完整

2、的,AutoLISP语言的原因。,LISP在它几十年的发展过程中产生了多种版本,如MacLISP、InterLISP,、ZetaLISP、和CommonLISP等。其中CommonLISP是近几年美国的几所大,学(如麻省理工、斯坦福等)和工业界(如Bell实验室、DEC公司、HP公司,等)的人工智能研究人员协同推出的,它概括了MacLISP、InterLISP、,ZetaLISP等版本的特点,因而功能较强且拥有其它版本的一些优点,是目前,LISP语言较完整的版本。,1.2 关于AutoLISP,AutoLISP是为二次开发AutoCAD而专门设计的编程语言,它起源于LISP,语言,嵌入在Aut

3、oCAD的内部,是LISP语言和AutoCAD有机结合的产物。,AutoLISP 采 用 了 和 CommonLISP 最 相 近 的 语 法 和 习 惯 约 定 , 具 有,CommonLISP的特性,但又针对AutoCAD增加了许多功能。它既有LISP语言,人工智能的特性,又具有AutoCAD强大的图形编辑功能的特点。它可以把,AutoLISP程序和AutoCAD的绘图命令透明地结合起来,使设计和绘图完全融,为一体,还可以实现对AutoCAD图形数据库的直接访问和修改。,利用AutoLISP语言可以进行各种工程分析计算、自动绘制复杂的图形,,还可以定义新的AutoCAD命令、驱动对话框、控

4、制菜单。为AutoCAD扩充具,有一定智能化、参数化的功能,可以使设计人员的主要精力用于产品的构思,和创新设计上,实现真正意义上的计算机辅助设计。,1.3 关于Visual LISP,Visual LISP是Autodesk公司在1997年14版本推出的。它是为,加速AutoLISP程序开发而设计的软件开发工具,是一个完整的,集成开发环境。 Visual LISP包括文本编辑器、格式编排器、语,法检查器、源代码调试器、检验和监视工具、文件编译器、工,程管理系统、上下文相关帮助与自动匹配功能和智能化控制台,等。,Visual LISP用户界面良好,用过Microsoft软件的用户只需很,短的时间

5、即可掌握它。,Visual LISP兼容以前的AutoLISP程序。在Visual LISP集成环,境下开发AutoLISP程序,就不再象以前那样编辑程序时,用其,它系统的文本编辑程序编写程序代码;调试程序时,需要用户,自己决定在程序的什么位置插入打印语句,以便查看变量的内,容;在程序运行正常后,再将插入的调试代码删除或注释掉。,在VLISP集成环境下可以便捷、高效地开发AutoLISP程序,,可以经过编译得到运行效率更高、代码更加紧凑、源代码受到,保护的应用程序。,Visual LISP是新一代AutoLISP语言,它对AutoLISP语言进行,了 扩 展 , 可 以 通 过 Microso

6、ft ActiveX Automation 接 口 与,AutoCAD对象交互,可以通过反应器函数扩展AutoLISP响应事,件的能力。,如果使用Visual LISP对AutoLISP扩展功能的部份,必须调用,vl-load-com 函 数 , 或 者 将 调 用 该 函 数 的 表 达 式 写 在,acad2006doc.lsp 文件内。,第2章,数据类型、表达式和函数,AutoLISP的数据类型丰富,除了一般程序设计语言具有的整,型、实型、字符串等类型之外,还有表、函数、文件描述符、,AutoCAD选择集、AutoCAD图元名、VLA对象、函数分页表和,外部函数等数据类型。,2.1 数据

7、类型,1. 整型(INT),整型即整数,整数由数字和正负号组成,正号可省略。整数为,32位带符号的数字,其范围从2147483648到2147483647。,2. 实型(REAL),实型数是带小数点的数。在-1和1之间的实数必须以0开头,例,如:.5是错误的,应该写成0.5。实数用双精度的浮点数表示,并,且至少有14位有效位数的精度。注意,Visual LISP不显示所有的,有效位。,3. 字符串(STR),字符串又被称为字符常数,它是由双引号括起来的字符序列,。字符串中字母的大、小写和空格符都是有意义的。,字符串中字符的个数(不包括双引号)称为字符串的长度。字,符串的最大长度为100,如果超

8、过100,第100个字符后面的字符,将是无效的。字符串可以是空的,即,称为空串,其长度为0,。,任何字符都可以用nnn的格式表示,其中反斜杠“”是ASCII码,的前导标识字符,nnn是该字符八进制的ASCII码。例如,字符,串ABCD也可表示为101102123104。一些常用的控制字符,象,反斜杠、双引号,除了可以用 nnn的格式表示之外,还可以用,“”转义字符的格式表示为“”、“”等特殊字符,见下表。,表2-1常用控制字符的表示方法,控制字符反斜杠“”双引号“”Esc键换行回车键Tab键,用“”为前导字符enrt,用“”为前导的ASCII码表示134042033012015011,注意,其

9、中的字符e,n,r,t必须小写。,4. 表,表以左圆括号开始,以配对的右圆括号结束,表可以是空的,,可以有若干个元素;元素可以是简单的,也可以是复杂的,,还可以是其它的表。例如:(+ 1 2 3)、(sin (* 0.5 pi),、(A B)、(A B) C (C D)、(0 LINE)、(101.5 2.6 0.0)、()都是合法的表。表中元素的个数称为表的长度。例如,表(+ 1 2 3)的长度为4、表(sin (* 0.5 pi)的长度为2、表(A B) C (C D)的长度为3、表()的长度为0。用表可以方便地构造出复杂的数据结构,例如,(1.5 3.6)可以表示为一个X等于1.5、Y等

10、于3.6的二维点,(2.5 2.0 1.0)可以表示为一个X等于2.5、Y等于2.0、Z等于1.0的三维点。,5. 函数(SUBS),函数相当于子程序或过程。函数分为内部函数和外部函数。AutoLISP提供的或用AutoLISP定义的函数为内部函数。用ADS、ADSRX或ARX定义的函数为外部函数。例如sin 、cos、sqrt为内部函数。,运算符在AutoLISP里属于函数,例如“”、“”、“*”、,“/”分别称之为加、减、乘、除函数,“”、“”分别称之为小于、小于等于和大于函数。,其它计算机语言里的子程序、过程、程序流程控制的关字,在AutoLISP里也属于函数,例如“if”、 “whil

11、e”分别称之为条件和条件循环函数。,6. 文件描述符(FILE),文件描述符是AutoLISP赋于被打开文件的标识号,它类似于,文件指针。下面的例子是以“读”的方式打开文件myfile.dat,并,将该文件的描述符赋予符号f1。,(setq f1 (open myfile.dat r) 返回,7. 图元名(ENAME),图元名是AutoCAD为图形对象指定的16进制的数字标识。AutoLISP通过该标识,找到该图形对象在图形数据库中的位,置,以便对其进行访问或编辑。,8. 选择集(PICKSET),选择集是一个或多个图形对象命名的集合。可以通过,AutoLISP程序建立选择集、向指定的选择集添

12、加或移去图形对,象,通过选择集可以对其内指定的成员进行访问或编辑。,9. VLA 对象,VLA 对象是ActiveX 应用程序的主要组成部分。 不仅直线,、圆弧、多义线和圆等都被称为VLA对象,图层、组、块、视,图、视口、图形的模型空间、图纸空间、线型和尺寸标注样式,等也被称为VLA对象,甚至连AutoCAD本身也被认为是VLA对,象。,2.2 变量,2.2.1 符号,符号(SYMBOL)可以理解为标识,用来作为变量、函数的名字。它的命名规则是不能只含数字,可以由下列字符以外的任何可打印的字符所组成:,“(”、“)”、“”、“”、“”、“;”,例如,a1、b2 、c_3是合法的符号,(a、)b

13、、.c、4、5是非法的符号。注意:1、2、3、!4、/5、1a、3c、-d、+e、b-2、c*3也是合法的符号,这是与多数计算机语言的不同之处。,在AutoLISP中,符号的大小写等价,符号的长,度没有限制,且所有的字符都是有意义的。,如果一个符号的长度不超过6,就用节点本身来存,储;如果符号的长度超过6,这样的符号就不能用节,点来存储,而是在节点中存放一个指向实际存储符号,名的指针。这将会多占用存储空间,且减慢了执行速度。因此,符号的长度最好不要超过6。,2.2.2 变量的数据类型,AutoLISP变量属于符号,是指存储静态数据的符号。,数据类型是变量的重要的特征,因为它关系到存放变量值的,

14、存储空间的大小。多数的计算机语言都在为变量赋值前对变量做显式或隐式的说明。AutoLISP无须对变量做事先的类型说明,,变量被赋予值的类型即为变量的类型。,用setq函数对变量赋值,例如,(setq a 5),赋值后的结果是:变量a是整型的,因为5是整型的;同样的原因,(setq b 2.5)之后, b是实型的,(setq c ABC)之后,c就是字符串类型的。,在程序运行过程中,同一变量在不同的时刻可以被赋予不同类型的值,因此在程序运行过程中,变量的数据类型是可以被改变的。,例如,在一个程序里有以下两行:,(setq a 5)当前的变量a是整型的。,(setq a ABC) 当前的变量a是字

15、符串类型的。,用type函数了解变量的类型,例如,(type a ) 返回INT,显示变量a是整型的;(type b)返回REAL,显示变量b是实型的,(type c) 返回STR,显示变量c是字符串类型的。,2.2.3 为变量赋值,用setq函数为变量赋值,其格式如下:(setq 变量1 值1变量2 值2 . . .) 例如:Command:(setq x 1.5 y 20 p Center)返回“Center”除了为变量x、y、p赋值外,还返回最后一个表达式的结果,“Center”。如果上述表达式还有外层表达式,那么,将把该表,达式的返回值“Center”赋给外层表达式的变量。例如,,Command:(setq v(setq x 1.5 y 20 p Center) )返回“Center”该表达式同样为变量x、y、p赋值,并将内层表达式返回的结,果“Center”赋给变量v,最后返回外层表达式的结果“Center”。,没有被赋值的变量属于无定义的变量。,2.2.4 预定义的符号,AutoLISP对变量nil、T、Pause和Pi进行了预定义,用户可以,在编写AutoLISP程序时直接使用。,(1) nil,如果变量没有被赋值,它的值为nil。nil与空和0不同的是,它,

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

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

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