二次开发及AutoLISP.ppt
《二次开发及AutoLISP.ppt》由会员分享,可在线阅读,更多相关《二次开发及AutoLISP.ppt(50页珍藏版)》请在三一办公上搜索。
1、第9章 二次开发及AutoLISP,AutoCAD 二次开发在化工制图中的应用 AutoLISP语言基础 Visual LISP 基础 DCL基础,AutoCAD 二次开发在化工制图中的应用,本章目录,二次开发的目的及必要性几种主要的二次开发语言简介化工AutoCAD二次软件开发的思路及步骤,二次开发的目的及必要性 AutoCAD软件作为CAD工业的旗帜产品,以其强大的功能得到广大用户的青睐。它具有精确的坐标系,能够完成各种图形的精确绘制、任意缩放和修改,支持数字化仪的精确输入。尽管如此,由于AutoCAD是作为一个通用的绘图软件而设计开发的,但各行各业都有自己的行业和专业标准,许多单位也有自
2、己的技术规格和企业标准,化工行业也不例外,有着大量的各种图纸设计标准,因而,AutoCAD不可能完全满足每一用户的具体应用要求。但是,AutoCAD具有开放的体系结构,它允许用户和开发者在几乎所有方面对其进行扩充和修改,同时可以利用多种开发语言,开发可以自动完成某一绘制任务的软件,可大大提高绘制速度,改善工作效率。以上工作可称之为AutoCAD的二次开发技术。也就说AutoCAD二次开发技术主要包括两个方面:一方面是对它的功能进行扩充和修改,如修改或增加菜单、进行各种定制工作;另一方面是利用开发工具编写能够完成特殊任务的自动绘制软件,如下面将介绍的通过人机交互界面输入必要的数据后,系统自动完成
3、法兰的绘制,就属于这一类型,在化工绘图中,我们需要的也是有关这一方面的开发软件,它能最大限度地满足用户的特殊需要,通过调用各种已经开发好的专用零件图绘制软件,加快绘制速度,提高工作效率。尤其重要的是,可以将大量的计算工作交给计算机去完成。这样,不仅提高了绘图速度,同时也提高了绘制精度,避免了人为的计算错误。,AutoCAD二次开发在化工制图中的应用,目前很多化工技术人员对AutoCAD的使用一般还仅限于它自身的各种绘图功能,使用鼠标手工绘制各种图件,对其强大的二次开发功能还没有进行深入使用。如果能使用AutoCAD的二次开发技术开发出一套软件,让AutoCAD自动绘制我们目前使用的各种图件,就
4、可以大大提高作图效率,发挥出AutoCAD的强大图形编辑、修改功能,对图件中的各种元素进行任意修改,满足各种不同的图件格式和绘图标准,由此可见,对于一个化工技术人员来说,学会自己开发AutoCAD二次应用软件显得十分必要,因为这将大大减少具体的绘制工作,而可以将主要精力集中到设备的设计中去,从而加快化工设备的开发速度。近几年来,随着计算机软、硬件技术的飞速发展及其应用的普及,也带来了化工领域使用计算机的浪潮。首先是各课程教学使用了CAI课件,学生们可以清楚地看到各种物质的具体颜色,并可以看到动画反应,让学生们能够形象生动地上课。然后是各种实验仿真软件的出现,让学生们不用亲自下到工厂,也不用浪费
5、任何原料,在没有危险的情况下就可以完成对实验过程或者是生产流程的学习和实习。同时计算机可以对反应进行模拟,对实验数据的拟合都大大方便了化工工作者。随之诞生的各种化工专用软件,给化学工业的发展注入了新鲜血液,使化学工业的发展如虎添翼。,AutoCAD二次开发在化工制图中的应用,目前,随着化学工业的进一步向前发展,各种新的机械设备被人们设计和制造,这些设备的工程图都是一件很大的工程。比如一个完整热交换器图纸,就需要一个专人12天的工夫才能完成。利用AutoCAD的二次开发技术,可以编出对热交换器的图进行批处理的程序,只需通过简单的人机会话,计算机能自动绘制出图纸,这也是化工技术人员学习掌握Auto
6、CAD二次开发技术的目的之所在。随着化学工业的不断日新月异,对设备图纸绘制的速度要求也将越来越快,利用AutoCAD二次开发技术开发而成的软件直接绘制各种设备的技术将在化学工业中得到更加广泛的应用,其开发技术必将伴着化学工业一起发展。,AutoCAD二次开发在化工制图中的应用,几种主要的二次开发语言简介 AutoLISP AutoLISP语言是AutoCAD所支持的一种内嵌式语言,它由美国Autodesk公司开发,其目的是使用户十分方便地利用AutoLISP编程语言对AutoCAD进行二次开发,它采用了与LISP语言中的Common LISP最近的语法和习惯约定,同时又针对AutoCAD增加了
7、许多新的功能,使用户可以直接调用几乎全部的AutoCAD命令,因此它既具有一般高级语言的基本结构和功能,又具有AutoCAD强大的图形处理能力,是目前计算机辅助设计和绘图中较广泛采用的语言之一。Visual LISP Visual LISP(简称VLISP)是为加速AutoLISP程序开发而设计的强有力的工具。它提供了一个完整的集成开发环境(包括编译器、调试器及其他工具,它可以显著地提高自定义AutoCAD的效率)。Visual LISP提供的主要工具有:文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文件编译器、工程管理系统/快捷相关帮助与自动匹配功能和智能化控制台等。Vi
8、sual LISP克服了AutoLISP一直以来开发中所存在的诸多不便和某些局限性。从语言方面看,Visual LISP对AutoLISP语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象交互。同时,通过实现事件反应器函数,还扩展了AutoLISP响应事件的能力。VisualLISP已经被完整地集成到AutoCAD中。,AutoCAD二次开发在化工制图中的应用,VBAVBA(Visual Basic for Application)最早是建立在Office 97中的标准宏语言,由于它在开发方面的易用性且功能强大,许多软件开发商都将其嵌入自己的应用程序中,
9、作为一种开发工具提供给用户使用。而AutoCAD VBA就是集成在AutoCAD中的Visual Basic开发环境,与VB的主要区别是VBA在与AutoCAD相同的进程空间中运行,提供了与AutoCAD关联的快捷的编程环境,程序设计直观快捷。它还提供了与其它可使用VBA应用程序集成的能力,可以作为其它应用程序如Word或Excel的自动化控制器。可以看出,VBA是其中编程很为快捷方便的一种,对于非计算机专业而更多熟悉VB编程语言的人来说,可以很快就掌握它。ADSADS的全名是AutoCAD Development System,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语
10、言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。,AutoCAD二次开发在化工制图中的应用,ObjectARX ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C+为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD
11、直接交互的开发环境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARX for AutoCAD 2005,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。ActiveX AutomationActiveX技术来源于 OLE(Object Linking and Embedding)技术。OLE最初是对象链接与嵌入,后来发展成为复合文档技术,包括文字、图片、声音、动画片和视频等媒体可以共同存在于一
12、个文档中。它们可以由不同的应用程序产生,同时也可以在该文档中编辑。如果应用程序支持OLE文档,则在不同应用程序之间的切换由OLE自动完成。OLE技术和其它技术共同作用,从而实现不同应用程序之间的无缝链接。自动化技术(Automation)允许一个应用程序驱动另外一个程序。驱动程序被称为自动化客户,另一个为自动化服务器。自动化技术后来发展成为ActiveX Automation。,AutoCAD二次开发在化工制图中的应用,Visual Java Java是最早由Sun公司创建的一种颇具魅力的程序设计语言,她是针对嵌入系统而设计的。像许多开发语言一样,Java是一组实时库的集合,可为软件开发者提供
13、多种工具来创建软件、管理用户接口、进行网络通讯、发布应用程序等。对AutoCAD用户和开发者而言,Java代表着新一代的编程语言,它主要用于开发出全新的优秀产品。,AutoCAD二次开发在化工制图中的应用,化工AutoCAD二次软件开发的思路及步骤 化工AutoCAD二次软件的开发和其它软件的开发一样,均需遵循一定的规律。一般来说,一个完善的AutoCAD二次软件开发过程可以分成4个阶段的内容,它们分别是系统规划、系统开发、系统运行与维护、系统更新。而系统规划又可以分成3个方面的内容,它们分别是战略规划、需求分析、资源分配。在这个阶段,我们主要任务是确定所需要开发软件的目的、使用对象、使用者的
14、要求、开发者目前的能力及拥有的资源。软件开发的第二阶段是系统开发,它包括系统分析、系统设计、系统实施。这时的主要任务根据第一阶段已经做的工作基础上,提出所开发软件的逻辑方案、确定系统开发中每一步的内容和任务,在此基础上,再进行系统总体结构设计,提出系统总体布局的方案。至此,软件开发工作还停留在逻辑开发状态,尚未进入具体的编码工作。软件开发完成第二阶段的系统设计后,就进入了实质性的编码工作,也就是说进入了系统的实施阶段,这时要完成各种编码工作,完善系统各个接口之间的联络,改善界面的友好程度,对整个软件进行组装及调试,最后完成交付使用前的各项工作。如该保密的部分需要进行封装;可以公开的部分需要做好
15、友善的人机界面。,AutoCAD二次开发在化工制图中的应用,软件开发的第三阶段是运行和维护阶段,一般对于规模较小的软件,对这方面的考虑就比较少。比如我们自己经常开发一些小软件来解决一些实际问题,就较少考虑以后的维护,一般只要满足目前的应用就可以了。但对于一个完善的软件来说,就需要考虑实际运行过程中出现的各种情况,并有解决方案及维护方法。这样,就会使得一个看上去较小的软件,也会变得复杂起来,但这种复杂为使用和维护带来了方便,提高了软件对付外来情况的能力,提高了软件的使用寿命,实际上等于节约了软件使用成本。任何一个软件,总有它更新的时候,此时,进入了软件开发的第4阶段,即系统更新阶段,在新的情况下
16、,对原有的系统进行更新开发。,AutoCAD二次开发在化工制图中的应用,AutoLISP语言基础,本章目录,基本运算基本函数编程中常用的分支及条件判断函数常用的绘图命令AutoLISP命令调用过程,加法 格式:(+)功能:求出所列数的总和实例:(+20 30)结果为50(+15-10)结果为5减法 格式:(-)功能:求出第一个数逐次减去后面数的差实例:(-120 30 50)结果为40(-15-10)结果为25乘法格式:(*)功能:求出所列数的乘积实例:(*20 30)结果为600(*1.5-10 2)结果为-30除法格式:(/)功能:求出第一个数逐次除以后面数的商实例:(/20)结果为20(
17、/130 2)结果为65(/3 30)由于表中的两个元素均为整型数,结果也为整型数,故结果为0(/3.0 30)结果为0.1(/30(/6 9)系统显示被0除,原因在于表(/6 9)的值为0,AutoLISP语言基础,基 本 运 算,自然数求幂格式:(exp)功能:求e的次幂值,e=2.71828实例:(exp 2.0)结果为7.3890561(exp 0)结果为1普通数求幂格式:(expt)功能:求的 次方值实例:(expt 2 3)结果为8求自然对数格式:(log)功能:求的自然对数,要求必须大于零实例:(log 10.0)结果为2.3025851求平方根格式:(sqrt)功能:求的平方根
18、,要求必须大于零实例:(sqrt 4.0)结果为2.0,AutoLISP语言基础,基 本 运 算,求绝对值格式:(abs)功能:求的绝对值实例:(abs-3)结果为3求最大值格式:(max)功能:求,的最大值实例:(max 2 3 4 10)结果为10求余数格式:(rem)功能:求整除的余数,若参数多于两个,则将整除后的余数再整除,求出余数,以此类推。实例:(rem 50 9 4)结果为1,AutoLISP语言基础,基 本 运 算,AutoLISP语言基础,正弦函数SIN格式:(sin),其中 用弧度表示功能:求的正弦值实例:(sin(/pi 2)结果为1余弦函数COS格式:(cos),其中
19、用弧度表示功能:求余弦值实例:(cos(/pi 2)结果为0正切TAN格式:(tan),其中 用弧度表示功能:求正切值实例:(tan(/pi 4)结果为1反正切函数ATAN格式:(atan)功能:求反正切值,单位为弧度,为-/2,/2实例:(atan(1)结果为0.785398,即(/4)实例:(cos(/pi 2)结果为0,基 本 函 数,取整函数FIX格式:(fix)功能:求的整数部分,相当于高级语言中的“INT(数)”语句。实例:(fix 7.8)结果为7(fix-7.8)结果为-7(fix 9)结果为9实型化函数FLOAT格式:(float)功能:求转化为实型数,不考虑该数原来的类型实
20、例:(float 3)结果为3.0(float 3.3)结果为3.3赋值函数SETQ格式:(setq)功能:将表达式的值赋给变量,变量和表达式需成对出现实例:(setq a 10)结果 a=10(setq s“it”)结果 s=“it”(setq b 123 c 10 d 45)结果 b=123 c=10 d=45(setq t(+34 45)结果 t=79(setq P1(34 45)(setq p1(30 40)/确定点P1的坐标(setq p2(300 400)/确定点P2的坐标(command“line”p1 p2“”)/绘制从P1点到P2点的直线,AutoLISP语言基础,基 本 函
21、 数,取表中第一元素CAR函数 格式:(car),表必须为引用表而非标准表,但可以是简单表,也 可以是嵌套表。功能:提取的顶层第一个元素 实例:(car(1 3 5)结果为1(car((1 3)6 5)结果为(1 3)取表中除第一元素外其它元素的CDR函数 格式:(cdr),表必须为引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取的除顶层第一个元素外的其它元素 实例:(cdr(1 3 5)结果为(3 5)(cdr((1 3)6 5)结果为(6 5)CAR和CDR的组合函数 CAR和CDR可以任意组合,其组合深度可达4层,执行时从右到左依次执行,若搞错次序,其结果必然出错。4个层次的
22、组合形式为CAR、CXXR、CXXXR、CXXXXR,其中X既可以是A也可以是D,例如:(cadr(2(1 2 3)34)结果为(1 2 3)(caadr(2(11 6)2 3)34)结果为(11 6)(caaadr(2(11 6)2 3)34)结果为11(caaddr(2(11 6)2 3)(3 4)结果3,AutoLISP语言基础,基 本 函 数,LAST函数 格式:(last),表必须为引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取的顶层中最后一个元素 实例:(last(1 2 3)结果为3(last(12 3(4 5)结果为(4 5)NTH函数 格式:(nth),表必须为
23、引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取中第个元素,注意第一个元素的序号为0号,以此类推。实例:(nth 2(2 3(4 5)5)结果为(4 5)(nth 3(2 3(4 5)5)结果为5 LIST函数 格式:(list)功能:将所有的按原位置构成新表,可用于确定点的坐标位置。实例:(list 2 3(5 6)结果为(2 3(5 6)(list 2 3)结果为(2 3)下面是一个利用list确定点的位置,绘制圆的小程序:(setq p1(list 222 33)(setq p2(list 200 300)(command circle p2 160)(command cir
24、cle p1 160),AutoLISP语言基础,基 本 函 数,ATOF函数格式:(atof)功能:将转换成实型数,返回实型数实例:(atof 23)返回结果为23.0ASCII函数格式:(ascii)功能:将中第一个字符转换成ASCII码,并返回该值实例:(ascii b c)返回结果为98CHR函数格式:(chr)功能:将ASCII码为的转换成相应字符,并返回该字符实例:(chr 69)返回结果为E(chr 80)返回结果为P“ITOA函数格式:(itoa)功能:将转换成整数字符串实例:(itoa 5)返回结果为5“,AutoLISP语言基础,基 本 函 数,ATOI函数格式:(atoi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二次开发 AutoLISP
链接地址:https://www.31ppt.com/p-5029388.html