AutoCAD二次开发概述.ppt_第1页
AutoCAD二次开发概述.ppt_第2页
AutoCAD二次开发概述.ppt_第3页
AutoCAD二次开发概述.ppt_第4页
AutoCAD二次开发概述.ppt_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

第14章AutoCAD二次开发概述,教学提示:通过前面的学习我们已经看到,AutoCAD确实是一个功能强大的绘图软件,但这仅仅是它的一方面,它的最具吸引力的另一面则是给用户提供的二次开发环境,它为用户提供了很多增强和用户化AutoCAD功能的手段,利用这些手段,用户可将AutoCAD改造为符合自己工作环境要求的专门绘图系统,甚或是专业的CAD系统。教学要求:本章将通过简短的实例来说明AutoCAD二次开发的基本方法。学完本章,学员应该理解对AutoCAD进行二次开发的意义,了解对AutoCAD进行二次开发的途径。为进一步深入学习AutoCAD打下良好基础。,14.1AutoCAD二次开发的涵义,通过AutoCAD为用户提供的开放式体系结构,称之为AutoCAD二次开发环境,实际上它是AutoCAD软件最具吸引力的风景线,利用它,用户可轻松地对AutoCAD实施专业化系统改造。总之,虽然AutoCAD提供了丰富的图形处理命令和线型、图案、文字及符号库,但仍然不能覆盖用户的专业需要。因此要高效率地使用AutoCAD,就有必要对它们进行扩充与修改,即二次开发。二次开发应充分利用AutoCAD提供的二次开发环境。,14.2AutoCAD二次开发的主要途径,AutoCAD提供的二次开发环境主要有两类:基于文件系统的开发和基于高级语言的开发。首先,AutoCAD为用户开放了众多的系统文件,用户可以通过修改或创建这些文件来完成对AutoCAD软件的“用户化”工作,或称为“定制”工作。这些文件主要在Support文件夹中,如程序参数文件(acad.pgp)、线型文件(acad.lin,acadiso.lin等等)、图案文件(acad.pat等等)、形文件(acad.shp,acad.shx等等)、脚本文件(*.scr等等)、图形交换文件(*.dxf,*.dxb等等)和菜单文件(*.mnu,*.mnc,*.mns,*.mnr,*.mns等等)等都可由用户重新定制以适合本专业的需要。定制工作的主要内容包括:,(1)通过合理地设置系统变量,建立符合本企业标准的初始绘图环境。(2)通过建立模板图,可获得初始图形的高起点。(3)借助于程序参数文件为经常使用的AutoCAD命令建立简短易记的别名。(4)借助于程序参数文件为常用的外部程序建立可在AutoCAD内部执行的命令。(5)编写脚本文件,自动地完成成组的任务。利用脚本文件还可以编写外部程序与AutoCAD的接口程序。(6)通过线型文件定义符合企业标准和工作需要的线型。(7)利用图形文件建立符合企业标准的填充图案。(8)通过形文件定义符合企业标准和工作需要的符号和字体。(9)通过菜单文件建立适合自己工作需要的菜单、工具栏和快捷键,其次,定制工作虽然能够进一步增强AutoCAD原有功能,使其更加“用户化”一些。但这种方法开发AutoCAD仍受到许多方面的限制,比如通过对这些文件的改写与新建完不成如下工作:,(1)不能给AutoCAD增加新的命令;(2)不能给AutoCAD增加复杂线型和复杂填充图案;(3)菜单系统的用户化功能有限;(4)不能直接操作AutoCAD图形库文件;(5)不能实现“自动绘图”;(6)不能完成专业CAD系统的任务。,为了突破这些限制,能够使用户随心所欲地对AutoCAD进行二次开发,基于高级语言开发的主要内容包括:,(1)用DIESEL语言定义满足自己工作要求的状态行。(2)利用VisualLISP或ObjectARX提供的集成开发环境定义AutoCAD新命令,实现参数化绘图,直接操作图形库及扩充AutoCAD的现有功能。(3)通过图形交换文件编写外部程序与AutoCAD双向交换图形信息的接口程序。(4)用DCL语言定义对话框,得到方便实用的用户界面。只有利用高级语言,才有可能将AutoCAD开发为专业化的CAD系统。下面两节分别举例说明文件开发与高级语言开发的方法,14.3利用AutoCAD文件系统做二次开发,14.3.1线型文件的功能与结构,在AutoCAD中,每种线型都可通过线型文件来定义,这些线型文件的扩展名为.lin。系统线型文件为acad.lin和acadiso.lin。所有线型文件都是文本文件,可由任何文本编辑软件创建和修改.,下面是acad.lin的一部分,;简单线型定义*BORDER,Border_._._._._.A,12.7,-6.35,12.7,-6.35,0,-6.35*BORDER2,Border(.5x)_._._._._._._._._._._.A,6.35,-3.175,6.35,-3.175,0,-3.175*BORDERX2,Border(2x)_._._A,25.4,-12.7,25.4,-12.7,0,-12.7*CENTER,Center_A,31.75,-6.35,6.35,-6.35*CENTER2,Center(.5x)_A,19.05,-3.175,3.175,-3.175*CENTERX2,Center(2x)_A,63.5,-12.7,12.7,-12.7;复合线型定义*FENCELINE1,Fencelinecircle-0-0-0-0-0-0-A,6.35,-2.54,CIRC1,ltypeshp.shx,x=-2.54,s=2.54,-2.54,25.4*FENCELINE2,Fencelinesquare-A,6.35,-2.54,BOX,ltypeshp.shx,x=-2.54,s=2.54,-2.54,25.4*TRACKS,Tracks-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-A,3.81,TRACK1,ltypeshp.shx,s=6.35,3.81*BATTING,BattingSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSA,.00254,-2.54,BAT,ltypeshp.shx,x=-2.54,s=2.54,-5.08,BAT,ltypeshp.shx,r=180,x=2.54,s=2.54,-2.54*HOT_WATER_SUPPLY,Hotwatersupply-HW-HW-HW-A,12.7,-5.08,HW,STANDARD,S=2.54,R=0.0,X=-2.54,Y=-1.27,-5.08*GAS_LINE,Gasline-GAS-GAS-GAS-GAS-GAS-GAS-A,12.7,-5.08,GAS,STANDARD,S=2.54,R=0.0,X=-2.54,Y=-1.27,-6.35,由此可看出,线型文件中包含两种类型的线型:由点、线段和空格组成的线型称为简单线型和除包含简单线型的点、线段、空格外还包含形及文本的线型称之为复合线型。线型文件是由若干个线型定义顺序组成,每个线型定义由两行组成:标题行和描述行,其具体格式如下:*LineType-name,(description)Alignment,patdesc-1,patdesc-2Patdesc-n在以上格式中各项的含义为:,第1行定义了线型的名称及线型说明,称为标题行。在该行中,必须以一个星号开始,后面紧跟线型名称。如果需要给出线型的描述,则必须通过逗号与前面的线型名分开,并且描述不能超过47个字符。线型的描述部分为可选项,该描述部分并不能被AutoCAD系统所使用,仅仅是为了形象地显示出线型的形式或直接用文字说明。第2行是描述线型样式的代码,称为描述行。该行以A字符开始,表示线型的对齐方式。目前AutoCAD只支持一种A对齐方式,它保证了直线的端点处为短划线而非空格。Patdesc-1、Patdesc-2Patdesc-n用来描述线型的具体形式,称为虚线描述。Patdesc-i字段用来指定组成线型的线段长度。AutoCAD规定,当Patdesc-i为正值时,表示要画出长度为该值的线段;当Patdesc-i为负值时,表示空长度为Patdesc-i的一段;当Patdesc-i为0时,则表示要绘制一个点。在*.lin文件中,每个线型定义最多允许280个字符,例如,在acad.lin文件中,-Divide虚线描述为:0.5个绘图单位长的短划线;0.25个绘图单位长的隔;点;0.25个绘图单位长的间隔;点;0.25个绘图单位长的间隔。该线型的几何样式如图14.1所示。图14.1Divide线型样式示例该线型在系统中的定义形式为:*Divide,DivideA,0.5,-0.25,0,-0.25,0,-0.25,14.3.2新线型的定义及使用,AutoCAD提供了两种创建和修改线型定义的方法。一种是通过文本编辑器或文字处理软件来编辑线型文件,另一种方式是通过Linetype命令选项来编辑线型。用户可以将自定义的线型加入到acad.lin文件中,或创建新的线型库文件。1.简单线型的定义1)利用Linetype生成新线型进入AutoCAD绘图界面后,在命令行输入-Linetype命令生成新线型的具体操作过程如下:命令:-linetype当前线型:ByLayer输入选项?/创建(C)/加载(L)/设置(S):c输入要创建的线型名:(输入线型名),输入线型名并按回车键,系统打开【创建或附加线型文件】对话框,如图14.2所示。,图14.2创建或附加线型文件对话框,可在此对话框中选择已有文件增加新线型,也可另外建立新线型文件来定义新线型。下面分别叙述。,(1)在原文件中增加新线型。在【创建或附加线型文件】对话框中选择某一线型文件名后单击【保存】按钮,以后定义的线型将加入该文件中。为防止用户自定义的线型名与系统已有的线型名重复,而覆盖掉原有线型,命令行提示:请稍候,正在检查线型是否已定义.如果用户输入的线型名在所选线型文件中已经存在,此时系统在命令行显示该线型的定义内容,并随后提示如下:覆盖?N:在该提示下直接按回车键,则不覆盖原有的同名线型,系统提示用户输入另外的线型名和线型文件名。如果在该提示下输入Y并按回车键,则系统用新生成的线型覆盖掉原有的同名线型,并在命令行继续提示,说明文字:输入线型图案(下一行):A,(输入定义线型的虚线描述参数)新线型定义已保存到文件。输入选项?/创建(C)/加载(L)/设置(S):,直接按回车键后,新定义的线型加入到原有的线型文件中,并结束该命令操作。若要继续定义新线型,则可在上述提示后键入C,重复上面的操作。(2)建立新线型文件。在如图14.2所示的【创建或附加线型文件】对话框中,在【文件名】文本框中输入新线型文件名后,单击【保存】按钮,此时系统生成一个扩展名为.Lin的线型文件,并在命令行接着提示:说明文字:(输入线型的描述)输入线型图案(下一行):A,(输入定义线型的虚线描述参数)新线型定义已保存到文件。输入选项?/创建(C)/加载(L)/设置(S):(按回车或输入C)若在该提示下直接按回车键,则可结束Linetype命令,系统将新定义的线型加入到新建的线型文件中。若要继续定义新线型,则可在系统提示后键入C,重复上面的操作。,示例:通过以上介绍的两种方法分别定义一名为DAS的线型,该线型的样式如图14.3所示。,将该线型保存到AutoCAD标准线型文件acad.lin文件中。命令:-linetype当前线型:ByLayer输入选项?/创建(C)/加载(L)/设置(S):c输入要创建的线型名:DAS,此时系统打开如图14.2所示的【创建或附加线型文件】对话框,确认【文件名】文本框中的名称为ACAD,单击【保存】按钮,系统返回绘图窗口。在命令行继续进行以下操作:,请稍候,正在检查线型是否已定义.说明文字:-.-.-输入线型图案(下一行):A,1.0,-0.25,0,-0.25,0.25,-0.25,0,-0.25,新线型定义已保存到文件。输入选项?/创建(C)/加载(L)/设置(S):(按回车或输入C),结果新定义的线型加入到acad.lin文件中。将该线型保存到新建的线型文件adas.lin中。在系统打开如图14.2所示的【创建或附加线型文件】对话框时,在文件名文本框中输入adas,单击【保存】按钮,系统返回到绘图窗口。在命令行继续进行前述构建线型的步骤,结果新定义的线型DAS被保存到新建的线型文件adad.lin中。2)通过编辑线型文件生成新线型。用任一文本编辑程序或字处理程序打开某线型文件,直接在已有的线型文件中加入新定义的线型,或修改原有的线型来建立新线型。应当注意的是,不管是建立新的线型文件还是修改已有的线型文件,线型文件的扩展名都应为.lin。线型文件编辑完成并保存后,用户便可以调用该新建的线型。,2.复合线型的定义复合线型的定义使线型的定义不再局限于线段、点和空格,而在定义的线型中嵌入文本和形文件中的图形。下面首先介绍复合线型的定义格式。1)复台线型的定义格式复合线型的定义格式同简单线型格式的不同之处在于复合线型在描述行中增加了用方括号括起的特殊参数,参数可为形或文本,下面具体介绍。(1)插入形的复合线型格式。插入形的复合线型的具体格式如下:*linetype-name(,description)A1ignment,patdesc-1,patdesc-2shapename,shape-filename,Rotate=n,Angle=n,Scale=n,Xoffset=n,Yoffset=npatdescn下面主要介绍该线型格式中与简单线型不同的选项。Shapename:此选项是要嵌套的位于AutoCAD形文件shape-file中的形名。Shapefilename:此选项是形文件名,该文件必须存在并位于AutoCAD的搜索路径中。,如果Shapefilename文件不位于库搜索路径中,AutoCAD会提示并要求用户选择另外一个.shx文件。在Shapefilename文件中可以包含路径。Rotate:此选项为可选项,是所嵌套的形相对于当前画线方向的倾斜角度。在系统默认情况下该选项值为0,即形方向与所画线的方向一致。Angle:此选项表示所嵌套的形相对于世界坐标系(WCS)X轴的绝对倾斜角度。当Angle是0时,嵌套的形保持水平状态且与线段的方向无关。用户可以指定Rotate和Angle,但两者不能同时都给定值。如果两个都没有给定值,则AutoCAD将Rotate设置为0。Rotate和Angle都以度为单位。如果要将该值的单位设置为弧度或梯度,则数值后面应加上R或G。Scale:此选项用来确定嵌入形的比例因子。该比例因子可使形从其默认缩放系数1.0按确定的比例放大或缩小。在任何情况下,AutoCAD都可通过Scale比例因子与Ltscale和Celtscale的乘积来确定高度或缩放系数。因此,在保持Ltscale为正常情况下,应将Scale确定为以11作为输出比例所对应的值。当在不同图形中使用复合线型,且将Ltscale设置成与各图比例相对应的值时,这些形在图纸上则以相对应的尺寸出现,Xoffset,Yoffset:这两个选项用于确定所嵌套的形相对于线型定义所确定的当前点的偏移量。这两个选项均是可选项。当该选项为系统默认选项时,AutoCAD将当前点作为嵌套形的插入点。两个偏移量分别沿当前线段方向(对于X轴)和沿与当前线段方向垂直的方向(对于Y)。正的X偏移量可使形朝着当前线段的第二个端点的方向移动;正的Y偏移量使形沿着正Y方向(逆时针)移动。下面举例说明嵌入形的复合线型的样式。*.CONILINE,-CONI-CONI-CONIA,1.0,-0.25,CONI,es.shx,-1.0在以上线型格式中CONILINE为复合线型名。形CONI是在形文件es.shx中已定义的形,因此可直接引用。如果所需的形不存在,则先在es.shx文件中定义该形,并将其编译后再引用,形的定义需参考其它书藉。(2)插入文本的复合线型格式嵌入文本的复合线型定义格式如下:*Linetypename(,description)A1ignment,patdesc-1,patdesc-2“string”,stylescale=n,Rotate=n,Xoffset=nYoffset=npatdesc-n,该格式中各选项的含义为:string:该选项为要嵌套的由一个或多个字符组成的文本字符串。该字符串必须用双引号括起。style:该选项是文本样式名。如果当前图形中没有style,则AutoCAD系统不能使用该文本文件。scale:该选项用于确定文本的比例因子。如果在定义线型时,使用固定高度的文本样式,AutoCAD则将该高度乘以Scale后的数值。如果使用可变高度的文本样式进行插入,则AutoCAD将Scale后的数值看作是绝对高度。Xoffset,Yoffset:与前面介绍的形嵌入复合线型中的相应选项使用方法相同,只是在该选项为默认状态时,系统将文本字符串的左下角放在当前点上。其他选项与形嵌入复合线型中的相应选项的使用方法相同,这里不再重复介绍。下面举例说明含有文本的复合线型的定义。*MCLINE,-MC-MC-MCA,1.0,-0.25,“MC”,mystyle,s=0,R=0,X=0,Y=-0.25,-1.252)复合线型的开发在进行复合线型开发时,不能采用在AutoCAD内部的命令行上使用-Linetype命令创建的新复合线型,而只能通过编辑已有线型文件或建立新的线型文件生成新线型。,该格式中各选项的含义为:string:该选项为要嵌套的由一个或多个字符组成的文本字符串。该字符串必须用双引号括起。style:该选项是文本样式名。如果当前图形中没有style,则AutoCAD系统不能使用该文本文件。scale:该选项用于确定文本的比例因子。如果在定义线型时,使用固定高度的文本样式,AutoCAD则将该高度乘以Scale后的数值。如果使用可变高度的文本样式进行插入,则AutoCAD将Scale后的数值看作是绝对高度。Xoffset,Yoffset:与前面介绍的形嵌入复合线型中的相应选项使用方法相同,只是在该选项为默认状态时,系统将文本字符串的左下角放在当前点上。其他选项与形嵌入复合线型中的相应选项的使用方法相同,这里不再重复介绍。下面举例说明含有文本的复合线型的定义。*MCLINE,-MC-MC-MCA,1.0,-0.25,“MC”,mystyle,s=0,R=0,X=0,Y=-0.25,-1.252)复合线型的开发在进行复合线型开发时,不能采用在AutoCAD内部的命令行上使用-Linetype命令创建的新复合线型,而只能通过编辑已有线型文件或建立新的线型文件生成新线型。,在上节中主要介绍了嵌入形或文本的复合线型格式。在实际创建过程中,可以把形或文本同时嵌入到同一种线型。下面是这方面的一个例子。创建线型名为userl的复合线型,该线型中包括STAR形和TE文本,并将其保存到ACAD.LIN文件中。用任何一种文本编辑器或字处理程序打开acad.lin文件,在文件后面加入下面两行内容:*user1,-TESTARTESTAR-.A,2,-2,“TE”STANDARD,S=0,X=-0.66,Y=-0.5,-2,2,-2,STAR,SHSHX,-2保存该文件并退出编辑程序,便完成在acad.lin文件中加入新复合线型的操作。,3.线型的加载和调用在完成新线型的创建后,用户并不能直接应用该线型进行绘图操作,只有在对新线型进行加载后才能使用它。1)线型的加载对于创建后的新线型,只有将其从线型文件中加载到AutoCAD中后才能调用。如果用户只是对acad.lin文件中的线型进行了修改,则在AutoCAD启动后,系统自动将acad.lin文件中的定义线型装入,不必重新加载。线型的加载过程为:命令:Linetype(或Ddltype),执行该命令后,系统打开【线型管理器】对话框,如图14.4所示,在【线型管理器】对话框中,单击【加载】按钮,打开【加载或重载线型】对话框,如图14.5所示。,在【加载或重载线型】对话框中,【文件】文本框中显示默认线型文件acadiso.1in。在【可用线型】列表框中显示线型文件Acadiso.1in中包含的所有线型。如果用户创建的新线型在acadiso.1in文件中,则可直接在列表框中选取该线型,然后单击【确定】按钮,该线型就被加载到【线型管理器】对话框中。如果用户所创建的新线型保存在其他线型文件中,这时单击图14.5对话框中的【文件】按钮,系统将打开【选择线型文件】对话框。在该对话框中的列表框中选定文件名,或在【文件】文本框中直接输入线型文件名,然后单击【确定】按钮,此时该线型文件中的线型加载到【加载或重载线型】对话框中。在该对话框中选取所需线型,然后单击【确定】按钮,则该线型被加载到【线型管理器】对话框中。在【线型管理器】对话框中选取指定的线型,单击【确定】按钮,则该线型即被置于当前图层。2)线型的调用和替换。对于已经加载到标准线型库中的自定义线型,或保存到自定义的线型文件中的线型,只能进行加载操作,还不能马上用来绘制图形。要使用它们来绘制图形,还必须将其设置为当前层的线型才能使用。线型的调用方法有以下几种:,(1)使用Linetype命令调用。在绘图窗口的命令行输入Linetype命令,打开【线型管理器】对话框,如图14.4所示。在该对话框中单击【加载】按钮,打开【加载或重载线型】对话框,如图14.5所示。在【加载或重载线型】对话框中的列表框选取已加载的线型,单击【确定】按钮,返回到【线型管理器】对话框,前面所选的自定义线型名显示在该对话框的【线型管理器】列表框中。在【线型管理器】列表框中选取该线型,单击【当前】按钮,最后单击【确定】按钮,关闭【线型管理器】对话框,则所选线型被置于当前层,此后用户可以使用该线型绘制图形。(2)使用Change命令用新线型替代已有图形中的原线型。命令执行过程为:命令:change选择对象:找到1个选择对象:指定修改点或特性(P):p输入要修改的特性颜色(C)/标高(E)/图层(LA)/线型(LT)/线型比例(S)/线宽(LW)/厚度(T):lt输入新线型名:center输入要修改的特性颜色(C)/标高(E)/图层(LA)/线型(LT)/线型比例(S)/线宽(LW)/厚度(T):命令:结果选取的对象所使用的线型被新输入的线型所替代。,14.4利用AutoLISP高级程序设计语言进行二次开发,AutoCAD为用户提供的高级语言编程环境主要有嵌套在AutoCAD内部的AutoLISP和VBA,面向对象特征的C+编程环境ARX以及其他通过动态数据交换(DDE)完成与AutoCAD之间的通信的高级语言应用程序等等。最值得一提的是AutoLISP程序设计语言,Autodesk公司很早就将LISP改造为AutoLISP并将其嵌入AutoCAD一起提供给用户,并不断对AutoLISP进行升级,它的最新的可视化版本VisualLISP功能更加完善,这使得AutoLISP成为开发AutoCAD软件最方便、最直接、最简单的一种高级程序设计语言。就目前而言,与VBA和C+相比,采用AutoLISP对AutoCAD进行工程专业领域的应用程序或CAD系统的开发有许多明显的优势,比如在功能上它与C+已相差无几,而学习AutoLISP所需计算机专业知识却远远低于C+。VBA虽然在对话框的设计能力上比AutoLISP强许多,由于它使用ActiveX与AutoCAD交互,运行效率不如AutoLISP,且代码保密性差。在Windows环境下,AutoLISP的增强级VisualLISP功能十分强大,身临其境,足以领略现代程序设计的各种风格与方法。,14.4.1用AutoLISP实现参数化绘图,对一类几何形状相同而大小尺寸常变的图形,利用给出图形充要尺寸参数,由AutoCAD自动完成图形绘制的方法称为参数化绘图。它使得多种设计方案的对比工作能够高效率的完成。也使得调用零件图库可参数化进行(给参数后由程序自动画出零件,而不是事先画好零件后调用图形)。图14.6参数化绘图的例图如图14.6,矩形的变参数有L、W,只要给出L、W,矩形的形状大小就确定了。此矩形画在何位置需给出一个基点bp。AutoLISP程序如下:(defunbox(bplw/sp)(commandplinebp(setqsp(polarbp0l)(setqsp(polarsp(/pi2.0)w)(setqsp(polarsppil)c),启动AutoCAD并在【工具】菜单下依次选择【AutoLISP】|【VisualLISP编辑器】进入VLISP集成开发环境,再选择【文件】|【新建文件】将程序输入,再选择【文件】|【加载文件】出现对话框如图14.7所示。在【查找范围】下拉列表中选定保存文件的位置,在【文件名】文本框中键入“box”后单击【打开】按钮将文件保存。完成了LISP源程序的编辑与保存任务,如何调用这个程序呢?【关闭】VLISP返回到AutoCAD,在命令提示行键入:(box(100100)200150)我们看到屏幕上自动画出以点(100,100)为左下角的一个200150的矩形。试试改变上面的参数会得到一系列不同的矩形。,图14.7保存文件对话框,14.4.2给AutoCAD增加命令,用LISP给AutoCAD增加一条命令实在是轻而易举,只要在defun函数定义中遵守如下两条规则即可:(1)函数名写成C:XXX的形式,XXX即为AutoCAD命令名。(2)函数定义中不允许带有形参,只允许有局部变量或为空表。【例14.1】现在我们就将前面定义的box函数修改为AutoCAD的一条命令。首先,重新编辑box程序如下:(defunC:box(/bplwsp)(setqbp(getpoint“输入基点:”)(setql(getreal“输入矩形边长:”)(setqw(getreal“输入矩形另一边长:”)(commandplinebp(setqsp(polarbp0l)(setqsp(polarsp(/pi2.0)w)(setqsp(polarsppil)c)由于不能通过实参与形参的对应来传递数值,改为直接键盘输入了。,之后,要在AutoCAD中使用此函数,还需经过如下几步:将本函数或连同其它一些函数建立在文件中,比如文件名为MYFILE.lsp;进入AutoCAD,在命令行提示符下键入(LOADMYFILE)以装入这些函数;在命令行提示符下键入函数名即可,如:命令:box以下就是box的执行过程了。【例14.2】定义一个函数,用于增加一个画,如图14.8所示,带键槽轴的截面图的命令。图14.8轴的截面图程序:(defunc:akey(/dhwbpangpt1pt2)(setqd(/(getdist“nD=”)2.0)h(getdist“nH=”)w(/(getdist“nW=”)2.0)bp(getpoint“nCenterpoint:”)ang(atanw(sqrt(-(*dd)(*ww)(command“pline”(setqpt1(polarbp(-ang)d)(setqpt2(list(+(carbp)(-hd)(cadrpt1)(list(carpt2)(+(cadrpt2)ww)(polarbpangd)“a”“ce”bppt1“”),图14.8轴的截面图,按前面的方法装入此函数后在命令行:运行即可。如:命令:akeyD=(键入实际的D值后回车)H=(键入实际的H值后回车)w=(键入实际的W值后回车)CENTERPOINT:(键入实际的中心点后回车)带键槽轴的截面图就自动画出了。另一种执行函数的方法是在命令提示符下键入(c:akey),效果相同,这是LISP的调用方式。如果在LISP程序中调用函数,必须写成表的形式:(c:akey)。,14.4.3修改AutoCAD命令的功能,偶而也需要修改AutoCAD命令,所谓修改,即是给AutoCAD原有的命令赋予新的含义,需按以下两个步骤做:(1)用undefine命令取消一条原来的命令,如:命令:undefine命令名:lineline命令被取消,再输入line将提示错误的命令名。对被取消的命令,只要在命令前加一个“”号,仍可执行原来的命令。如:命令:.line仍完成原有的画线命令的功能。在LISP中取消命令时,可如下写法:(command“Undefine”“line”)(2)AutoCAD命令取消后,就可用C:XXX函数定义新的功能。【例14.3】修改line,使其可根据提示画line或pline。(defunC:linenil(initget1“linepline”)(setqs(getword“Line/pline?”)(if(=s“line”)(command“.line”)(command“.pline”),14.5开发CAD系统基本方法介绍,CAD系统开发的关键是软件开发,相对而言,这种软件较解决某个特定问题的“程序”复杂些,因为它实际上是一种多功能的组合软件,应该按照“软件工程学”的原理和方法组织完成开发工作。软件工程学对软件系统开发所要求的基本步骤是:开始准备系统分析系统设计代码编写系统测试系统完成,每一个步骤的依据都是前一步骤的结果。如系统分析的质量直接影响系统设计,系统设计的质量又直接影响代码编写,每一步骤的质量都是非常重要的。系统分析的任务是调查、分析、理解全系统的要求,确定系统的基本框架,输入/输出参数以及统一设计标准,明确测试验收条件,最后形成“系统说明书”。系统说明书的写法格式没有统一规定,一般除系统要达到的目标、步骤、方法外,还应有对系统的投资/效益评价。,系统设计的任务是将系统说明书规定的各个内容以模块结构的形式具体表达出来,为系统编写提供依据。模块设计通常按“自顶向下”的方法先进行总体设计,将复杂目标分解为多个具体模块,然后确定各模块之间的数据传送关系及相互调用关系,最后针对每一个模块详细确定其功能、输入/输出参数。系统设计的结果是形成“模块说明书”,它包含模块结构图与模块功能说明书两部分内容。代码设计的任务是具体地实现模块说明书中提出的要求,这一阶段的结果是代码的算法说明书和源程序。从软件工程学的角度看,这一阶段是前面两个阶段的自然延伸和扩展,但全部的软件设计技术在这一阶段集中地体现出来,因此它的质量优劣是至关重要的。在将模块框架转化为程序代码的过程中,应该充分运用结构化程序设计方法,合理构造算法,编写易于理解、易于测试、易于排错、易于修改维护的软件。系统测试的任务是检验系统的功能,查出可能存在的明显的和潜在的错误,提出修改要求。系统开发的各个环节都有可能存在错误,因此整个系统开发过程中的测试工作实际上是不断进行的。经过反复测试修改,最终达到了要求,CAD系统就完成了,AutoCAD提供了高级语言程序开发的方法,借助于这类方法,用户为AutoCAD扩充新功能的能力几乎是无限的,小到增加专用命令,大到构造专业级的CAD系统。与AutoCAD相联系的高级语言主要包括AutoLISP/VisualLISP、C/C+、VisualBasic等。用户可以利用这些语言创建新的AutoCAD命令,使AutoCAD更好地满足用户自己的需要。用户可以编写自己的AutoLISP程序,也可以使用第三方程序和共享程序。为了突破这些限制,能够使用户随心所欲地对AutoCAD进行二次开发,AutoCAD提供了高级语言程序开发的方法,借助于这类方法,用户为AutoCAD扩充新功能的能力几乎是无限的,小到增加专用命令,大到构造专业级的CAD系统。与AutoCAD相联系的高级语言主要包括AutoLISP/VisualLISP、C/C+、VisualBasic等。用户可以利用这些语言创建新的AutoCAD命令,使AutoCAD更好地满足用户自己的需要。用户可以编写自己的AutoLISP程序,也可以使用第三方程序和共享程序。基于高级语言开发的主要内容包括,(1)不能给AutoCAD增加新的命令;(2)不能给AutoCAD增加复杂线型和复杂填充图案;(3)菜单系统的用户化功能有限;(4)不能直接操作AutoCAD图形库文件;(5)不能实现“自动绘图”;(6)不能完成专业CAD系统的任务。其次,定制工作虽然能够进一步增强AutoCAD原有功能,使其更加“用户化”一些。但这种方法开发AutoCAD仍受到许多方面的限制,比如通过对这些文件的改写与新建完不成如下工作:(1)通过合理地设置系统变量,建立符合本企业标准的初始绘图环境。(2)通过建立模板图,可获得初始图形的高起点。(3)借助于程序参数文件为经常使用的AutoCAD命令建立简短易记的别名。(4)借助于程序参数文件为常用的外部程序建立可在AutoCAD内部执行的命令。(5)编写脚本文件,自动地完成成组的任务。利用脚本文件还可以编写外部程序与AutoCAD的接口程序。(6)通过线型文件定义符合企业标准和工作需要的线型。(7)利用图形文件建立符合企业标准的填充图案。(8)通过形文件定义符合企业标准和工作需要的符号和字体。,14.6上机实训实训目的:通过实训,掌握构造新的线型文件为AutoCAD2004增加新线型的方法。实训内容:建立一个名为myline.lin的线型文件,文件内容为新定义

温馨提示

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

评论

0/150

提交评论