化工制图AutoCAD实战教程与开发随书电子课件第9章_第1页
化工制图AutoCAD实战教程与开发随书电子课件第9章_第2页
化工制图AutoCAD实战教程与开发随书电子课件第9章_第3页
化工制图AutoCAD实战教程与开发随书电子课件第9章_第4页
化工制图AutoCAD实战教程与开发随书电子课件第9章_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章二次开发及AutoLISP▪

AutoCAD二次开发在化工制图中的应用▪

AutoLISP语言基础▪VisualLISP基础▪

DCL基础1编辑课件第9章二次开发及AutoLISP▪AutoCAD二次AutoCAD二次开发在化工制图中的应用本章目录2编辑课件AutoCAD二次开发在化工制图中的应用本章目录2编辑课件二次开发的目的及必要性几种主要的二次开发语言简介化工AutoCAD二次软件开发的思路及步骤3编辑课件二次开发的目的及必要性3编辑课件二次开发的目的及必要性AutoCAD软件作为CAD工业的旗帜产品,以其强大的功能得到广大用户的青睐。它具有精确的坐标系,能够完成各种图形的精确绘制、任意缩放和修改,支持数字化仪的精确输入。尽管如此,由于AutoCAD是作为一个通用的绘图软件而设计开发的,但各行各业都有自己的行业和专业标准,许多单位也有自己的技术规格和企业标准,化工行业也不例外,有着大量的各种图纸设计标准,因而,AutoCAD不可能完全满足每一用户的具体应用要求。但是,AutoCAD具有开放的体系结构,它允许用户和开发者在几乎所有方面对其进行扩充和修改,同时可以利用多种开发语言,开发可以自动完成某一绘制任务的软件,可大大提高绘制速度,改善工作效率。以上工作可称之为AutoCAD的二次开发技术。也就说AutoCAD二次开发技术主要包括两个方面:一方面是对它的功能进行扩充和修改,如修改或增加菜单、进行各种定制工作;另一方面是利用开发工具编写能够完成特殊任务的自动绘制软件,如下面将介绍的通过人机交互界面输入必要的数据后,系统自动完成法兰的绘制,就属于这一类型,在化工绘图中,我们需要的也是有关这一方面的开发软件,它能最大限度地满足用户的特殊需要,通过调用各种已经开发好的专用零件图绘制软件,加快绘制速度,提高工作效率。尤其重要的是,可以将大量的计算工作交给计算机去完成。这样,不仅提高了绘图速度,同时也提高了绘制精度,避免了人为的计算错误。AutoCAD二次开发在化工制图中的应用4编辑课件二次开发的目的及必要性AutoCAD二次开发在化工制图中的应目前很多化工技术人员对AutoCAD的使用一般还仅限于它自身的各种绘图功能,使用鼠标手工绘制各种图件,对其强大的二次开发功能还没有进行深入使用。如果能使用AutoCAD的二次开发技术开发出一套软件,让AutoCAD自动绘制我们目前使用的各种图件,就可以大大提高作图效率,发挥出AutoCAD的强大图形编辑、修改功能,对图件中的各种元素进行任意修改,满足各种不同的图件格式和绘图标准,由此可见,对于一个化工技术人员来说,学会自己开发AutoCAD二次应用软件显得十分必要,因为这将大大减少具体的绘制工作,而可以将主要精力集中到设备的设计中去,从而加快化工设备的开发速度。近几年来,随着计算机软、硬件技术的飞速发展及其应用的普及,也带来了化工领域使用计算机的浪潮。首先是各课程教学使用了CAI课件,学生们可以清楚地看到各种物质的具体颜色,并可以看到动画反应,让学生们能够形象生动地上课。然后是各种实验仿真软件的出现,让学生们不用亲自下到工厂,也不用浪费任何原料,在没有危险的情况下就可以完成对实验过程或者是生产流程的学习和实习。同时计算机可以对反应进行模拟,对实验数据的拟合都大大方便了化工工作者。随之诞生的各种化工专用软件,给化学工业的发展注入了新鲜血液,使化学工业的发展如虎添翼。AutoCAD二次开发在化工制图中的应用5编辑课件目前很多化工技术人员对AutoCAD的使用一般目前,随着化学工业的进一步向前发展,各种新的机械设备被人们设计和制造,这些设备的工程图都是一件很大的工程。比如一个完整热交换器图纸,就需要一个专人1~2天的工夫才能完成。利用AutoCAD的二次开发技术,可以编出对热交换器的图进行批处理的程序,只需通过简单的人机会话,计算机能自动绘制出图纸,这也是化工技术人员学习掌握AutoCAD二次开发技术的目的之所在。随着化学工业的不断日新月异,对设备图纸绘制的速度要求也将越来越快,利用AutoCAD二次开发技术开发而成的软件直接绘制各种设备的技术将在化学工业中得到更加广泛的应用,其开发技术必将伴着化学工业一起发展。AutoCAD二次开发在化工制图中的应用6编辑课件目前,随着化学工业的进一步向前发展,各种新的机械设备被人们设几种主要的二次开发语言简介⑴AutoLISPAutoLISP语言是AutoCAD所支持的一种内嵌式语言,它由美国Autodesk公司开发,其目的是使用户十分方便地利用AutoLISP编程语言对AutoCAD进行二次开发,它采用了与LISP语言中的CommonLISP最近的语法和习惯约定,同时又针对AutoCAD增加了许多新的功能,使用户可以直接调用几乎全部的AutoCAD命令,因此它既具有一般高级语言的基本结构和功能,又具有AutoCAD强大的图形处理能力,是目前计算机辅助设计和绘图中较广泛采用的语言之一。⑵VisualLISPVisualLISP(简称VLISP)是为加速AutoLISP程序开发而设计的强有力的工具。它提供了一个完整的集成开发环境(包括编译器、调试器及其他工具,它可以显著地提高自定义AutoCAD的效率)。VisualLISP提供的主要工具有:文本编辑器、格式编排器、语法检查器、源代码调试器、检验和监视工具、文件编译器、工程管理系统/快捷相关帮助与自动匹配功能和智能化控制台等。VisualLISP克服了AutoLISP一直以来开发中所存在的诸多不便和某些局限性。从语言方面看,VisualLISP对AutoLISP语言进行了扩展,可以通过MicrosoftActiveXAutomation接口与对象交互。同时,通过实现事件反应器函数,还扩展了AutoLISP响应事件的能力。VisualLISP已经被完整地集成到AutoCAD中。AutoCAD二次开发在化工制图中的应用7编辑课件几种主要的二次开发语言简介AutoCAD二次开发在化工制图中⑶VBAVBA(VisualBasicforApplication)最早是建立在Office97中的标准宏语言,由于它在开发方面的易用性且功能强大,许多软件开发商都将其嵌入自己的应用程序中,作为一种开发工具提供给用户使用。而AutoCADVBA就是集成在AutoCAD中的VisualBasic开发环境,与VB的主要区别是VBA在与AutoCAD相同的进程空间中运行,提供了与AutoCAD关联的快捷的编程环境,程序设计直观快捷。它还提供了与其它可使用VBA应用程序集成的能力,可以作为其它应用程序如Word或Excel的自动化控制器。可以看出,VBA是其中编程很为快捷方便的一种,对于非计算机专业而更多熟悉VB编程语言的人来说,可以很快就掌握它。⑷ADSADS的全名是AutoCADDevelopmentSystem,它是AutoCAD的C语言开发系统,ADS本质上是一组可以用C语言编写AutoCAD应用程序的头文件和目标库,它直接利用用户熟悉的各种流行的C语言编译器,将应用程序编译成可执行的文件在AutoCAD环境下运行,这种可以在AutoCAD环境中直接运行的可执行文件叫做ADS应用程序。ADS由于其速度快,又采用结构化的编程体系,因而很适合于高强度的数据处理,如二次开发的机械设计CAD、工程分析CAD、建筑结构CAD、土木工程CAD、化学工程CAD、电气工程CAD等。AutoCAD二次开发在化工制图中的应用8编辑课件⑶VBAAutoCAD二次开发在化工制图中的应用8编辑课件⑸ObjectARX

ObjectARX是一种崭新的开发AutoCAD应用程序的工具,她以C++为编程语言,采用先进的面向对象的编程原理,提供可与AutoCAD直接交互的开发环境,能使用户方便快捷地开发出高效简洁的AutoCAD应用程序。ObjectARX并没有包含在AutoCAD中,可在AutoDESK公司网站中去下载,其最新版本是ObjectARXforAutoCAD2005,它能够对AutoCAD的所有事务进行完整的、先进的、面向对象的设计与开发,并且开发的应用程序速度更快、集成度更高、稳定性更强。⑹ActiveXAutomation ActiveX技术来源于OLE(ObjectLinkingandEmbedding)技术。OLE最初是对象链接与嵌入,后来发展成为复合文档技术,包括文字、图片、声音、动画片和视频等媒体可以共同存在于一个文档中。它们可以由不同的应用程序产生,同时也可以在该文档中编辑。如果应用程序支持OLE文档,则在不同应用程序之间的切换由OLE自动完成。OLE技术和其它技术共同作用,从而实现不同应用程序之间的无缝链接。自动化技术(Automation)允许一个应用程序驱动另外一个程序。驱动程序被称为自动化客户,另一个为自动化服务器。自动化技术后来发展成为ActiveXAutomation。AutoCAD二次开发在化工制图中的应用9编辑课件⑸ObjectARXAutoCAD二次开发在化工制图中的应⑺VisualJava

Java是最早由Sun公司创建的一种颇具魅力的程序设计语言,她是针对嵌入系统而设计的。像许多开发语言一样,Java是一组实时库的集合,可为软件开发者提供多种工具来创建软件、管理用户接口、进行网络通讯、发布应用程序等。对AutoCAD用户和开发者而言,Java代表着新一代的编程语言,它主要用于开发出全新的优秀产品。AutoCAD二次开发在化工制图中的应用10编辑课件⑺VisualJavaAutoCAD二次开发在化工制图中化工AutoCAD二次软件开发的思路及步骤化工AutoCAD二次软件的开发和其它软件的开发一样,均需遵循一定的规律。一般来说,一个完善的AutoCAD二次软件开发过程可以分成4个阶段的内容,它们分别是系统规划、系统开发、系统运行与维护、系统更新。而系统规划又可以分成3个方面的内容,它们分别是战略规划、需求分析、资源分配。在这个阶段,我们主要任务是确定所需要开发软件的目的、使用对象、使用者的要求、开发者目前的能力及拥有的资源。软件开发的第二阶段是系统开发,它包括系统分析、系统设计、系统实施。这时的主要任务根据第一阶段已经做的工作基础上,提出所开发软件的逻辑方案、确定系统开发中每一步的内容和任务,在此基础上,再进行系统总体结构设计,提出系统总体布局的方案。至此,软件开发工作还停留在逻辑开发状态,尚未进入具体的编码工作。软件开发完成第二阶段的系统设计后,就进入了实质性的编码工作,也就是说进入了系统的实施阶段,这时要完成各种编码工作,完善系统各个接口之间的联络,改善界面的友好程度,对整个软件进行组装及调试,最后完成交付使用前的各项工作。如该保密的部分需要进行封装;可以公开的部分需要做好友善的人机界面。AutoCAD二次开发在化工制图中的应用11编辑课件化工AutoCAD二次软件开发的思路及步骤AutoCAD二次软件开发的第三阶段是运行和维护阶段,一般对于规模较小的软件,对这方面的考虑就比较少。比如我们自己经常开发一些小软件来解决一些实际问题,就较少考虑以后的维护,一般只要满足目前的应用就可以了。但对于一个完善的软件来说,就需要考虑实际运行过程中出现的各种情况,并有解决方案及维护方法。这样,就会使得一个看上去较小的软件,也会变得复杂起来,但这种复杂为使用和维护带来了方便,提高了软件对付外来情况的能力,提高了软件的使用寿命,实际上等于节约了软件使用成本。任何一个软件,总有它更新的时候,此时,进入了软件开发的第4阶段,即系统更新阶段,在新的情况下,对原有的系统进行更新开发。AutoCAD二次开发在化工制图中的应用12编辑课件软件开发的第三阶段是运行和维护阶段,一般对于AutoLISP语言基础本章目录13编辑课件AutoLISP语言基础本章目录13编辑课件基本运算基本函数编程中常用的分支及条件判断函数常用的绘图命令AutoLISP命令调用过程

14编辑课件基本运算14编辑课件⑴加法

格式:(+<数><数>…)功能:求出所列数的总和实例:(+2030)结果为50(+15-10)结果为5⑵减法格式:(-<数><数>…)功能:求出第一个数逐次减去后面数的差实例:(-1203050)结果为40(-15-10)结果为25⑶乘法格式:(*<数><数>…)功能:求出所列数的乘积实例:(*2030)结果为600(*1.5-102)结果为-30⑷除法格式:(/<数><数>…)功能:求出第一个数逐次除以后面数的商实例:(/20)结果为20(/1302)结果为65(/330)由于表中的两个元素均为整型数,结果也为整型数,故结果为0(/3.030)结果为0.1

(/30(/69))系统显示被0除,原因在于表(/69)的值为0AutoLISP语言基础基本运算15编辑课件⑴加法AutoLISP语言基础基本运算15编辑⑸自然数求幂格式:(exp<数>)功能:求e的<数>次幂值,e=2.71828实例:(exp2.0)结果为7.3890561(exp0)结果为1⑹普通数求幂格式:(expt<底数><幂>)功能:求<底数>的<幂>次方值实例:(expt23)结果为8⑺求自然对数格式:(log<数>)功能:求<数>的自然对数,要求<数>必须大于零实例:(log10.0)结果为2.3025851⑻求平方根格式:(sqrt<数>)功能:求<数>的平方根,要求<数>必须大于零实例:(sqrt4.0)结果为2.0AutoLISP语言基础基本运算16编辑课件⑸自然数求幂AutoLISP语言基础基本运算16⑼求绝对值格式:(abs<数>)功能:求<数>的绝对值实例:(abs-3)结果为3⑽求最大值格式:(max<数1><数2>…)功能:求<数1>,<数2>…的最大值实例:(max23410)结果为10⑾求余数格式:(rem<数1><数2>…)功能:求<数1>整除<数2>的余数,若参数多于两个,则将<数1>整除<数2>后的余数再整除<数3>,求出余数,以此类推。实例:(rem5094)结果为1AutoLISP语言基础基本运算17编辑课件⑼求绝对值AutoLISP语言基础基本运算17编AutoLISP语言基础⑴正弦函数SIN格式:(sin<角度>),其中<角度>用弧度表示功能:求<角度>的正弦值实例:(sin(/pi2))结果为1⑵余弦函数COS格式:(cos<角度>),其中<角度>用弧度表示功能:求<角度>余弦值实例:(cos(/pi2))结果为0⑶正切TAN格式:(tan<角度>),其中<角度>用弧度表示功能:求<角度>正切值实例:(tan(/pi4))结果为1⑷反正切函数ATAN格式:(atan<数>)功能:求<数>反正切值,单位为弧度,为[-π/2,π/2]实例:(atan(1))结果为0.785398,即(π/4)实例:(cos(/pi2))结果为0基本函数18编辑课件AutoLISP语言基础⑴正弦函数SIN基本函数⑸取整函数FIX格式:(fix<数>)功能:求<数>的整数部分,相当于高级语言中的“INT(数)”语句。实例:(fix7.8)结果为7(fix-7.8)结果为-7(fix9)结果为9⑹实型化函数FLOAT格式:(float<数>)功能:求<数>转化为实型数,不考虑该数原来的类型实例:(float3)结果为3.0(float3.3)结果为3.3⑺赋值函数SETQ 格式:(setq<变量1><表达式1>[<变量2><表达式2>]…)功能:将表达式的值赋给变量,变量和表达式需成对出现实例:(setqa10)结果a=10(setqs“it”)结果s=“it”(setqb123c10d45)结果b=123c=10d=45(setqt(+3445))结果t=79(setqP1‘(3445))(setqp1'(3040))//确定点P1的坐标(setqp2'(300400))//确定点P2的坐标(command“line”p1p2“”)//绘制从P1点到P2点的直线AutoLISP语言基础基本函数19编辑课件⑸取整函数FIXAutoLISP语言基础基本函数⑻取表中第一元素CAR函数格式:(car<表>),表必须为引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取<表>的顶层第一个元素实例:(car‘(135))结果为1(car‘((13)65))结果为(13)⑼取表中除第一元素外其它元素的CDR函数格式:(cdr<表>),表必须为引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取<表>的除顶层第一个元素外的其它元素实例:(cdr‘(135))结果为(35)(cdr‘((13)65))结果为(65)⑽CAR和CDR的组合函数CAR和CDR可以任意组合,其组合深度可达4层,执行时从右到左依次执行,若搞错次序,其结果必然出错。4个层次的组合形式为CAR、CXXR、CXXXR、CXXXXR,其中X既可以是A也可以是D,例如:(cadr'(2(123)34))结果为(123)(caadr'(2((116)23)34))结果为(116)(caaadr'(2((116)23)34))结果为11(caaddr'(2((116)23)(34)))结果3AutoLISP语言基础基本函数20编辑课件⑻取表中第一元素CAR函数AutoLISP语言基础基⑾LAST函数格式:(last<表>),表必须为引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取<表>的顶层中最后一个元素实例:(last'(123))结果为3(last‘(123(45)))结果为(45)⑿NTH函数格式:(nth<序号><表>),表必须为引用表而非标准表,但可以是简单表,也可以是嵌套表。功能:提取<表>中第<序号>个元素,注意第一个元素的序号为0号,以此类推。实例:(nth2'(23(45)5))结果为(45)(nth3'(23(45)5))结果为5⒀LIST函数格式:(list<表达式1><表达式2>……)功能:将所有的<表达式>按原位置构成新表,可用于确定点的坐标位置。实例:(list23'(56))结果为(23(56))(list23)结果为(23)下面是一个利用list确定点的位置,绘制圆的小程序:(setqp1(list22233))(setqp2(list200300))(command"circle"p2160)(command"circle"p1160)AutoLISP语言基础基本函数21编辑课件⑾LAST函数AutoLISP语言基础基本函⒁ATOF函数格式:(atof<数字串>)功能:将<数字串>转换成实型数,返回实型数实例:(atof"23")返回结果为23.0⒂ASCII函数格式:(ascii<字符串>)功能:将<字符串>中第一个字符转换成ASCII码,并返回该值实例:(ascii"bc")返回结果为98⒃CHR函数格式:(chr<整数>)功能:将ASCII码为<整数>的转换成相应字符,并返回该字符实例:(chr69)返回结果为"E"(chr80)返回结果为"P“⒄ITOA函数格式:(itoa<整数>)功能:将<整数>转换成整数字符串实例:(itoa5)返回结果为"5“AutoLISP语言基础基本函数22编辑课件⒁ATOF函数AutoLISP语言基础基本函数2⒅ATOI函数格式:(atoi<数字串>)功能:将<数字串>转换成整数,返回值截去小数部分实例:(atoi"45.4")返回结果为45(atoi"-5.6")返回结果为-5(atoi"7")返回结果为7(atoi"34.6ac")返回结果为34(atoi"df43")45返回结果为0说明:当数字串中有非数字字符时,则转换到第一个非数字原子时终止。⒆STRCAT函数格式:(strcat<字符串1><字符串2>……)功能:将<字符串>按先后顺序头尾相连起来,组成一个新的字符串。实例:(strcat"bc""etr""ty")返回结果为"bcetrty"AutoLISP语言基础基本函数23编辑课件⒅ATOI函数AutoLISP语言基础基本函数2(20)SUBSTR函数格式:(substr<字符串><起点>[<长度>]功能:从<字符串>中提取一个子串,该子串从起点的字符位置开始,由连续<长度>个字符组成,若<长度>缺省,则到字符串结束。实例:(substr"b212c"23)返回结果为"212"(substr"b2er12c"2)返回结果为"2er12c“(21)READ函数格式:(read<字符串>)功能:将<字符串>转化成表或原子,文件处理时经常使用实例:(read"ad")返回结果为AD(read"b")返回结果为B(read"(ab)")返回结果为(AB)(read"(34)")返回结果为(34)AutoLISP语言基础基本函数24编辑课件(20)SUBSTR函数AutoLISP语言基础基本编程中常用的分支及条件判断函数

在程序编写中经常会用到一些条件判断函数及循环函数,没有这些函数,就难以完成一个理想的程序,下面将一些在编程中使用程度较高的函数介绍一下。⑴关系运算函数关系运算函数是编程中分支及条件判断函数的基础,它对数值型表达式的大小进行比较,表达式可以是两个或两个以上,其返回值是逻辑变量。比较运算成立,则返回T;不成立则返回nil,常作为条件用于条件判断语句和循环判断语句中,这一点将在下面讲解中提到。AutoLISP共有6种关系运算函数,它们分别是“=”等于、“/=”不等于、“<”小于、“>”大于、“<=”小于等于、“>=”大于等于。其中等于的关系函数,其表达式只能两个,下面是6种关系函数的实际例子:AutoLISP语言基础(<2456)返回结果T(<2453)返回结果nil,全程比较(>8739)返回结果nil,全程比较(>8731)返回结果T(=22)返回结果T(="s""b")返回结果nil(/=123)返回结果T(/=113)返回结果nil,只比较前面两个表达式(<=335)返回结果T(>=551)返回结果T25编辑课件编程中常用的分支及条件判断函数AutoLISP语言基础(<⑵逻辑运算函数AutoLISP共有3种逻辑运算函数,分别是逻辑和AND、逻辑或OR、逻辑非NOT,下面通过实例说明其应用。(andadc3)返回结果nil,只要有一个表达式为假,则返回nil(anddc)返回结果nil(setqa3b4)返回结果4,返回最后一个赋值(andab)返回结果T,由于前面给a、b赋了值(and(<23)(+13)(>35))返回结果nil(or12ab)返回结果T,只要有一个表达式为真,则返回T(or(>42)(<42))返回结果T(not2)返回结果nil(not(>69))返回结果T⑶二分支条件函数IF格式:(if<测试表达式><成立表达式><非表达式>)功能:对<测试表达式>进行运算,若<测试表达式>成立,则执行<成立表达式>,否则,执行<非表达式>,两者必居其一,所以称之为二分支条件函数,是在编程中经常用到的条件判断函数。下面是几个实际例子:(if(=13)35)测试式不成立,执行第二个表达式,第二个表达式为原子,返回5(if(<13)(setqa2)(setqa9))测试式成立,执行第一个表达式,返回2(if(=13)"yes")测试式不成立,但无第二个表达式,返回nil(if1"yes""no")测试表达式为1,虽然不为T,但也不为nil,仍执行第一表达式,返回“yes”AutoLISP语言基础26编辑课件⑵逻辑运算函数AutoLISP语言基础26编辑课件⑷多分支条件函数COND前面二分支条件函数只能解决两种结果中选一种的条件判断,若有多个条件中选一,则需用COND函数。格式:(cond(<测试表达式1><结果表达式1>)(<测试表达式2><结果表达式2>)::(<测试表达式n><结果表达式n>))该函数的参数为任意数目的表,每个表有两个元素,第一个元素为测试式,第二个元素为结果。功能:对每一个支表中的<测试表达式>依次进行运算,若<测试表达式>成立,则执行该支表对应的<结果表达式>,停止后面的测试工作;否则,继续执行<测试表达式>,直到最后一个分支条件。AutoLISP语言基础27编辑课件⑷多分支条件函数CONDAutoLISP语言基础27编辑课件⑸顺序控制函数PROGN常和IF函数一起使用,使其在某一条件下,顺序执行多个表达式。格式:(progn<表达式1>

<表达式2>::)功能:按顺序执行多个表达式,并返回最后表达式求值结果,表达式需为标准表。⑹常见测试函数ZEROP函数用于判断测试项是否为零,若为零,则返回T,否则返回nil。MINUSP函数用于判断测试项是否为负,若为负,则返回T,否则返回nil。NUMBERP函数用于判断测试项是否为数,若为数,则返回T,否则返回nil。ATOM函数用于判断测试项是否为原子,若为原子数,则返回T,否则返回nil。LISTP函数用于判断测试项是否为表,若为表,则返回T,否则返回nil。AutoLISP语言基础28编辑课件⑸顺序控制函数PROGNAutoLISP语言基础28编辑课件⑺循环函数在各种程序编写中,循环语句是不可缺少的,AutoLISP的两种主要循环函数是WHILE函数和REPEAT函数,下面分别介绍之。①WHILE函数格式:(while<测试表达式>[标准表1][标准表2]:)功能:先对测试表达式进行测试,若其值不为nil,则依次执行下面的各个[标准表],执行完各[标准表]后,再返回来对测试表达式进行测试,直至测试表达式为nil,停止循环执行。②REPEAT函数格式:(repeat<次数>[标准表1][标准表2]:)功能:按该定的次数进行循环计算式为nil,停止循环执行。AutoLISP语言基础29编辑课件⑺循环函数AutoLISP语言基础29编辑课件常用的绘图命令⑴常用的交互命令在程序编写中经常要用到一些交互式命令,通过交互命令,可提高程序的人机对话能力。AutoLISP也提供了一些常见的交互命令,下面分别介绍。①输入整型数GETINT格式:(getint[提示])功能:该函数提示用户输入一个整型数,并返回该数,常和赋值函数SETQ合用实例:(setqn(getint“n=”))//等待用户输入一个整型数,并将该数赋值给n。②输入实型数GETREAL格式:(getreal[提示])功能:该函数提示用户输入一个整型数,并返回该数,常和赋值函数SETQ合用实例:(setqa(getreal“a=”))//等待用户输入一个实型数,并将该数赋值给a。③输入字符串GETSTRING格式:(getstring[提示])功能:该函数提示用户输入一个字符串,并返回该数,常和赋值函数SETQ合用实例:(setqm(getstring“yourname”))//等待用户输入一个字符串,并将该字符串赋值给m,若输入xiaodong,返回“xiaodong”。需要注意的是输入字符串时,千万别用空格键,否则只把空格键以前的内容作为输入的字符串。AutoLISP语言基础30编辑课件常用的绘图命令AutoLISP语言基础30编辑课件④输入点GETPOINT格式:(getpoint[基点][提示])功能:该函数提示用户输入一个点,若有基点,这将从基点到输入的点之间画一条直线拖动直线,但命令执行过后消失。实例:(setqP1(getpoint‘(4050)“第二点”))//等待用户从键盘输入点或用光标选点。⑤输入距离值GETDIST格式:(getdist[提示])功能:该函数提示用户输入一个距离值。实例:(setqtspac(getdist“输入距离”))//等待用户从键盘输入某一数值。⑵点的确定确定点的位置,是进行各种绘制工作的基础,除了前面介绍的用getpoint函数外,还可以用下面几种方法确定点(通过绘制直线的小程序加以说明验证)。实例:(setqp1'(3040))//用禁止求值表,确定P1点的位置(setqp2'(300400))(command"line"p1p2"")⑶直线的绘制LINE格式:(command“line”P1P2P3…………[条件])功能:将P1、P2、P3…….等点用直线连接起来,其中[条件]可缺省,若条件中输入“c“,则绘制的将是封闭曲线。AutoLISP语言基础31编辑课件④输入点GETPOINTAutoLISP语言⑷多义线绘制格式:(command“pline”<起点>“w”<起点线宽><末点线宽><第二点>……<末点>[条件])功能:将P1、P2、P3…….等点用各种曲线连接起来,其中[条件]可缺省,若条件中输入“c“,则绘制的将是封闭曲线。⑸矩形绘制格式:(command“rectang”[倒角(C)/标高(E)/圆角(F)/厚度(T)/宽度(W)]<指定另一个角点>[尺寸(D)]<指定另一个角点>)功能:绘制符合格式中定义的矩形。⑹圆的绘制格式:(command“circle”[三点(3P)/两点(2P)/相切、相切、半径(T)]<圆心<半径>)功能:绘制符合格式中定义的圆,默认的输入方式是圆心、半径,其它输入方式需根据具体选定的形式而定。⑺交点的确定格式:(inters<端点1><端点2><端点3><端点4>[<任选项>])功能:求<端点1>和<端点2>所确定的直线和<端点3>和<端点4>所确定的直线的交点,若存在则返回交点,若不存在,则返回nil。如果有任选项,且该项为nil,则可求延长线的交点。AutoLISP语言基础32编辑课件⑷多义线绘制AutoLISP语言基础32编辑课件⑻图层的设置格式:(command“layer”“m”<图层名>“c”<图层颜色>“l”<图层线型>“lw”<图层线宽>"")功能:设置和格式中描述相符合的图层,除图层名为不可缺省外,其它均可采用默认值,当调用图层时,可只采用格式中的前4项。⑼剖面线绘制格式:(command“batcht”<填充图案模式>[<比例>][<角度>]<填充对象>)功能:将<填充对象>按格式中定义的要求进行填充,其中[<比例>]和[<角度>]可默认,<填充对象>有多种获取方法,如果是填充刚绘制好的实体,则可用entlast命令。⑽尺寸标注格式:(command“dim”<标注模式><标注起点><标注终点><标注线位置中点>)[<标注内容>])功能:<标注起点>和<标注终点>之间按标注模式标注尺寸,若标注内容缺省,则按默认方式标注。⑾文本书写格式:(command“text”[<起点类型>]<起点><字高><字旋转角度4><文字内容>)功能:将文字内容按格式中的定义书写出来,如缺省[<起点类型>]则以左下角为起点。AutoLISP语言基础33编辑课件⑻图层的设置AutoLISP语言基础33编辑课件AutoLISP命令调用过程首先将AUTOLISP的程序用任何一种ASCII码文本编辑器来编辑,在DOS环境下可采用EDIT编辑,在WINDOWS环境下可用附件中的记事本编辑,并注意在保存时以.LSP为后缀,一般的调用过程如下。①用编辑器编写好,以*.LSP存盘。②在AutoCAD中的命令中输入:(Load“盘符/子目录/文件名”),回车。③输入:(文件名、参数1、参数2……)[注意参数和参数之间不要加逗号],回车。④在AutoCAD的界面上自动生成图。AutoLISP语言基础34编辑课件AutoLISP命令调用过程AutoLISP语言基础34编辑VisualLISP基础本章目录35编辑课件VisualLISP基础本章目录35编辑课件安装启动编辑调试36编辑课件安装36编辑课件安装

VisualLISP无需单独安装,我们在安装AutoCAD2004时已经将其捆绑按安装在一起,只要在使用时调用它即可,这为我们省了不少安装软件过程中的麻烦,同时也使得该软件和AutoCAD之间的关系更加紧密。尤其是VisualLISP中的部分AutoLISP程序几乎可以移植到任何版本的AutoCAD中,而不受版本先后的影响。VisualLISP基础37编辑课件安装VisualLISP基础37编辑课件启动

启动VisualLISP有两种方法,但都需首先启动AutoCAD软件。第一种方法是从AutoCAD菜单中选择“工具”>>“AutoLisp”>>“VisualLisp编辑器”;第二中方法是在AutoCAD命令行中输入“vlisp”,启动VisualLisp编辑器。VisualLISP基础38编辑课件启动VisualLISP基础38编辑课件编辑VisualLISP的程序在编辑窗口进行编辑,编辑时,系统会自动进行一些识别,并将其显示成不同的颜色。如括号是红色;函数是蓝色,如果想输的是各种函数,一般为表中第一项,但输完后系统没有自动变成蓝色,则说明你输错了;双引号内的绘图命令为粉红色,包括双引号本身;各种变量是黑色;数字是绿色。掌握这些规律对减少编程中的错误很有帮助。在编程过程中,如果遇到一些较为生疏的函数,可以通过系统的帮助功能加以解决。VisualLISP基础39编辑课件编辑VisualLISP基础39编辑课件调试调试是编程工作中一项十分重要又非常繁重的工作。在没有VisualLISP之前,AutoLISP程序的调试是十分困难的,常常找不到问题之所在。幸好有了VisualLISP,使调试工作有了质的飞跃。利用其提供的调试工具和专用工具,一般可以较快地找到问题。系统调试中最常见的错误是缺少括号或有多余括号;其次是错误函数或命令,常常是绘图命令输错,因为若函数错误,在编写中可以根据颜色判断;还有列表缺陷,被零除及函数被取消。对函数被取消这种现象有点特殊,因为它并不是当前所编的程序有问题,而是在上一次调试过程中,所编程序存在缺陷,使的AutoCAD处于命令等待状态。这时,需要通过视图转换,激活AutoCAD,取消命令等待状态,就可以了。根据我们自己开发程序的经验,认为调试工作需和整个软件的开发工作结合起来。在程序开发的步骤上考虑到调试工作问题,以采用从下到上的程序编程工作为佳,结合该方法,作者推荐如下的编程调试步骤。①将整个软件分解成功能相对独立的功能块,再将功能块分解成若干个小程序。VisualLISP基础40编辑课件调试VisualLISP基础40编辑课件②将小程序中的每一个语句,按照先后次序进行编辑。在编辑过程中首先利用颜色的改变,纠正一些明显的错误,如果对某一语句把握不大,可直接加载该语句,判断系统能否通过。关于加载运行可通过选中需要加载的语句,点击专用工具中栏中的第二个工具,一般情况下,以编完相对较完整的一段语句后,再将这段进行加载运行较好,如所有的赋值语句。一段语句编写完成,加载运行结果正确,则进入下一段语句的编写。如正确,但根据错误提示可明显找到问题的,则修改后再加载运行;如无法根据错误提示找到问题的,则可以采用调试工具栏中的各种方法进行错误查找,如仍无法查到,则需逐句加载,但在逐句加载中,需要补充对加载语句中所需变量值的设定工作。通过以上工作,将小程序全局调通,并进行封装。③将同一功能的小程序进行组装,并进行调试,调试完成,将功能程序进行封装。④将不同功能的功能程序进行组装,并进行全局调试,调试通过,完成软件基本开发工作。⑤根据客户应用的各种情况,对软件进行各种测试,对发现问题进行修改,最后得到完善软件,并将其封装。VisualLISP基础41编辑课件②将小程序中的每一个语句,按照先后次序进行编辑。在编辑过程中DCL基础本章目录42编辑课件DCL基础本章目录42编辑课件定义控件程序编辑软件调试及加载43编辑课件定义43编辑课件定义对话框是人机交互的主要界面之一,它具

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论