资源描述
AutoCAD二次开发技术在工程图纸绘制中的应用
1 前言
随着计算机知识的普及和应用,计算机在社会各个领域显示出其巨大的生命力和发展潜力,作为计算机应用的一个重要领域--计算机辅助设计(CAD),在工程绘图设计中发挥了巨大的作用,而作为CAD绘图设计的代表软件,AutoCAD又显示出了它不同凡响的一面,由于其友好的用户界面,以及允许用户进行二次开发的特点,使之愈来愈为广大工程设计人员所熟悉、掌握并开发应用于专业方面的绘图设计软件。掌握了AutoCAD的二次开发技术,可以充分发掘AutoCAD的潜力,简化了绘图程序,在工作中能够事半功倍,大大提高工作效率。
本文通过作者在最近几年的计算机辅助设计和绘图工作中应用AutoCAD进行二次开发的一些经验,分别利用几个实例程序来说明AutoCAD二次开发技术在工程图纸绘制中的应用,内容包括以下几个部分:
(1) 以多种图象文件格式实现对CAD图象屏幕的"高保真"的保存,并以此为基础建立图纸目录库,以便于今后对专业图纸的查询。
(2) 利用对话框编程语言(DCL)来建立特殊字符编辑器,扩充AutoCAD的字符集。
(3) 利 用AutoCAD语言实现Excel与Auto-CAD间的通讯。作者衷心希望以此抛砖引玉,同广大的工程设计人员及CAD技术人员进行交流,互相取长补短,为CAD技术在我国的进一步推广及应用尽自己的菲薄之力。
2 用BMP位图文件来实现CAD图像屏幕"高保真"的保存
目前对CAD图像屏幕进行保存的方法很多,时下流行的一些抓图软件如Grabber等均能用热键激活来捕捉CAD图像屏幕的画面,生成COM 文件,通过在DOS下运行该文件来达到显示的目的,这在工程图纸的查询,浏览与管理中确实为用户提供了不少方便。
我们在这里谨向读者提供一种新的方法,利用AutoCAD的一项鲜为人知的功能,通过配置打印机及光栅文件的输出,来实现CAD图像屏幕"高保真"的保存,通过此方法可生成256色的GIF,TGA,PCX,TIFF,BMP等各种图像格式的图形文件,可在DOS状态或WINDOWS下直接显示,也可在EXCEL,WORD, POWERPOINT,CORELDRAW等文字处理和图形图像处理软件中应用,兼容性极好,且图像清晰,背景色可随用户需要调整,也可运用于工程图纸的查询,浏览和管理,以及多媒体的图纸文档管理。
下面我们以如何生成256色的BMP位图文件为例,来说明一下如何应用AutoCAD的这项功能。
(1)进人AutoCAD,打开一张工程图纸,用Zoom E全屏显示。
(2)键人Config后回车,出现配置菜单(Configuration Menu),选择第5项配置绘图仪(Configure Plotter)后回车。
(3)在随后出现的配置绘图仪菜单(Plotter Configuration Menu)中选择第1项增加绘图仪配置(Add a Plotter Configuration),回车。
(4)随后出现可用的绘图仪配置菜单(Available Plotters ),从中选择第21项光栅文件的输出(Raster File Export ADI4 .2- by Autodesk),回车,然后在支持模式(Support Models)中选择3项640X 350(EGA)模式,回车。
(5) 接着将会出现光栅文件的格式菜单,用户可根据自己的要求选择其中的一项,在此我们选择第4项BMP图像格式(Microsoft Windows Device-Independent Bitmap( .BMP),回车。
(6) 然后选择颜色模式,在此处选择第3项256色模式(All 256 Standard AutoCAD Colours),并选择背景色,此处选用黑色,即0号色。
(7) 接下来选项可用缺省设置,在最后的打印机描述(Plotter Description)中键入BMP PLOTTER后回车,保存设置并退出Config。便大功告成了。
照上述方法,一旦配置成功,这种打印的配置就永久的留在AutoCAD的打印机配置中了。读者可配置几种以上的光栅文件输出格式,并分别用GIFPLOTTER,PCX PLOTTER等命名,以备后用。
在生成位图文件时,用户只需键人PLOT命令,选择BMP PLOTTER的打印机配置,再选择打印至文件(Plot to File),然后在Filename的对话框中键人完整的路径及文件名即可,其余步骤同一般的打印步骤相同,最后打印输出,一幅清晰的CAD图像屏幕的BMP位图文件便生成了。用此方法可做成图纸档案库,便于用户今后对图纸进行浏览和查询。
3 为AutoCAD设计特殊字符编辑- 对话框编制语言在AutoCAD中的应用实例
在AutoCAD中有几个常用的特殊字符表示方法,如士用%%P来表示,直径Φ用%%C表示等等,但终究数量太少,许多常用的符号,如平方,立方符号,μ、 ε、σ、ρ等,在AutoCAD的缺省定义字体Standard(由字形文件Romans. shx定义)中并无描述,因此在绘图过程中遇到要写这些字符时,常使人感到无从人手。
笔者在实践中发现只要通过修改字形源文件Romans.shp,增加用户自己定义的正文字形描述,便可解决上述的问题。特别值得一提的是26个希腊字母在Greeks. shp中已有描述,用户只需把这26个字母的字形描述Copy至Romans. shp中,就能在标准Standard字体状态下使用这些特殊字符,而不必每次更改字体。修改方法如下,用户可以先打开ACAD\SOURCE目录下的字形源文件Romans.shp,在文件末尾加上下列字形描述,字形编号从130开始至160,由于篇幅有限,这里仅列出笔者添加的平方,立方,根号,约等号及船肿符号的字型描述如下:
* 130,27,ksquard /平方号描述/
2,8, 0, 18, 14, 8,一2,一21,1,10,3,一044, 01B,
01A,58,01A,01B,060,2,8,4,一11,14,8,一6,7,0
*1 31 ,25 ,ksquare /立方号描述/
2,8,一3,21,14,8,一2,一21,1,060,8,一3,一4,10,
3,一025,2,8,8,一12,14,8,一6,7,0
*158,28,lcf /约等号描述/
4,21,3,6,2,14,8(一1,一6),024,1,02D,8, 0,6),
2,8,(2,一6),14,8,(一3,一3),4,6,3,21,0
*159,37,lcq /根号描述/
4,21,3,6,2,14,8,(一2,一6),020,1,064,2, 02D,
1,10,1,004,02C,10,1,044,2,02B,1,020,2,020,
14,8,(一4,一3),4,6,3,21,0
*160,31,ksq /船舯号描述/
2,8,0,7,14,8,一2,一21,1,10,3,一044,01B,OIA,
58,01A,01B,060,2,8,4,一11,14,8,一6,7,2,8,0,
11,0
把以上这几段描述加人以后,再用。ompile命令编译成romans. shx文件,这里建议用户仍保留原来的romans.sh x,把新编译成的形文件以short.shx保存。
在完成上述工作后,用户就可以方便地使用这些特殊字符了,但是每次使用时,需键人相应字符的ascii码,如此多的ascii码,用户要记住恐怕也非易事,因此笔者用AutoCAD中的对话框编制语言专门为此设计了一个特殊字符编辑器,上面所提及的特殊字符,均可以幻灯片对话框形式显示在用户面前,一目了然,便于选择,用户无需去背记相应的ascii码,就可把自己想要用的字符写到图形中。
源程序由两部分组成,分别是对话框说明程序ddst. dcl和AutoLisp程序ddst. lsp,由于篇幅所限,这里不一一赘述,有兴趣的读者请与作者联系。
4 利用AutoLisp语言实现Excel与AutoCAD间的通讯- 浅谈AutoCAD下材料表格的制作
众所周知,Excel是一个优秀的电子表格制作软件,其制作出来的表格风格多样,界面美观,而AutoCAD则是风靡世界的计算机辅助绘图软件,其绘图的精确度是任何绘图软件所不能比拟的,如果把这两者有机的结合起来,利用AutoCAD的绘图精度和Excel的完美格式,建立Excel和Auto-CAD之间的通讯联系,就可以在AutoCAD图形状态下制作出各种格式的表格。
我们在实际工作中,运用AutoLisp编程,实现了Excel和AutoCAD之间的连接,下面就举例说明其用法。以下是一张材料表格的基本形式。
这样一张表格如果在Excel中制作可以说是不费吹灰之力,同时在表中填写代号,名称等也很方便,然而如果是在AutoCAD下,制作表格当然是不成问题,甚至可以作的更好,更精确,但是要往上面填写代号,名称等,而且又要格式整齐,上下左右对齐,用AutoCAD下的命令,不管是Text,还是Dtext,都不太容易。以下这两个Lisp程序可以帮助你解决这些问题。程序1用来在AutoCAD图形中按上述格式画出材料表,行数由用户自定。程序2把在Excel中已经制作好的表格内容,写到AutoCAD的图形中,格式整齐美观。
用户可以先在Excel中按预定格式制作好材料表的模板文件,文件后缀名为.xlt,以后每次使用时,只要打开此模板文件,在上面填写好内容,以csv格式(逗号分格方式)存盘即可。在AutoCAD下运行程序2,便可把此材料表格中的内容写人图形中,此程序特别适用于大量材料表的编制书写工作,使用之后会倍觉得心应手。
程序清单如下:
程序1,T able.ls p
程序2,L i st.ls p
以上程序由于篇幅所限,这里不一一赘述,有兴趣的读者请与作者联系。
5 结束语
以上只是我们对AutoCAD二次开发技术在工程上应用的一点切身体会,希望能对读者有所启发,并希望以此起到抛砖引玉的作用,促进我国的计算机应用技术蓬勃发展。
第14章 AutoCAD二次开发概述
教学提示:通过前面的学习我们已经看到,AutoCAD确实是一个功能强大的绘图软件,但这仅仅是它的一方面,它的最具吸引力的另一面则是给用户提供的二次开发环境,它为用户提供了很多增强和用户化AutoCAD功能的手段,利用这些手段,用户可将AutoCAD改造为符合自己工作环境要求的专门绘图系统,甚或是专业的CAD系统.
教学要求:本章将通过简短的实例来说明AutoCAD二次开发的基本方法.学完本章,学员应该理解对AutoCAD进行二次开发的意义,了解对AutoCAD进行二次开发的途径.为进一步深入学习AutoCAD打下良好基础.
14.1 AutoCAD二次开发的涵义
通过AutoCAD为用户提供的开放式体系结构,称之为AutoCAD二次开发环境,实际上它是AutoCAD软件最具吸引力的风景线,利用它,用户可轻松地对AutoCAD实施专业化系统改造.
总之,虽然AutoCAD提供了丰富的图形处理命令和线型,图案,文字及符号库,但仍然不能覆盖用户的专业需要.因此要高效率地使用AutoCAD,就有必要对它们进行扩充与修改,即二次开发.二次开发应充分利用AutoCAD提供的二次开发环境.
14.2 AutoCAD二次开发的主要途径
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) 利用Visual LISP或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,Fenceline circle ----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,Fenceline square ----[]-----[]----[]-----[]----[]---
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,Batting SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
A,.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,Hot water supply ---- 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,Gas line ----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-2…Patdesc-n
在以上格式中各项的含义为:
第1行定义了线型的名称及线型说明,称为标题行.在该行中,必须以一个星号开始,后面紧跟线型名称.如果需要给出线型的描述,则必须通过逗号与前面的线型名分开,并且描述不能超过47个字符.线型的描述部分为可选项,该描述部分并不能被AutoCAD 系统所使用,仅仅是为了形象地显示出线型的形式或直接用文字说明.
第2行是描述线型样式的代码,称为描述行.该行以A字符开始,表示线型的对齐方式.目前AutoCAD只支持一种A对齐方式,它保证了直线的端点处为短划线而非空格.
Patdesc-1,Patdesc-2……Patdesc-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.1 Divide线型样式示例
该线型在系统中的定义形式为:
*Divide,Divide
A,0.5,-0.25,0,-0.25,0,-0.25
14.3.2 新线型的定义及使用
AutoCAD提供了两种创建和修改线型定义的方法.一种是通过文本编辑器或文字处理软件来编辑线型文件,另一种方式是通过Linetype命令选项来编辑线型.用户可以将自定义的线型加入到acad.lin文件中,或创建新的线型库文件.
1. 简单线型的定义
1) 利用Linetype生成新线型
进入AutoCAD绘图界面后,在命令行输入-Linetype命令生成新线型的具体操作过程如下:
命令: -linetype0
当前线型: "ByLayer"
输入选项 [ /创建(C)/加载(L)/设置(S)]: c0
输入要创建的线型名: (输入线型名)0
输入线型名并按回车键,系统打开【创建或附加线型文件】对话框,如图14.2所示.
图14.2 创建或附加线型文件对话框
可在此对话框中选择已有文件增加新线型,也可另外建立新线型文件来定义新线型.下面分别叙述.
(1) 在原文件中增加新线型.
在【创建或附加线型文件】对话框中选择某一线型文件名后单击【保存】按钮,以后定义的线型将加入该文件中.为防止用户自定义的线型名与系统已有的线型名重复,而覆盖掉原有线型,命令行提示:
请稍候,正在检查线型是否已定义...
如果用户输入的线型名在所选线型文件中已经存在,此时系统在命令行显示该线型的定义内容,并随后提示如下:
覆盖 :
在该提示下直接按回车键,则不覆盖原有的同名线型,系统提示用户输入另外的线型名和线型文件名.
如果在该提示下输入Y并按回车键,则系统用新生成的线型覆盖掉原有的同名线型,并在命令行继续提示
说明文字:
输入线型图案 (下一行):
A,(输入定义线型的虚线描述参数)
新线型定义已保存到文件.
输入选项 [ /创建(C)/加载(L)/设置(S)]:
直接按回车键后,新定义的线型加入到原有的线型文件中,并结束该命令操作.
若要继续定义新线型,则可在上述提示后键入C,重复上面的操作.
(2) 建立新线型文件.
在如图14.2所示的【创建或附加线型文件】对话框中,在【文件名】文本框中输入新线型文件名后,单击【保存】按钮,此时系统生成一个扩展名为.Lin的线型文件,并在命令行接着提示:
说明文字: (输入线型的描述)
输入线型图案 (下一行):
A,(输入定义线型的虚线描述参数)
新线型定义已保存到文件.
输入选项 [ /创建(C)/加载(L)/设置(S)]: (按回车或输入C)
若在该提示下直接按回车键,则可结束Linetype命令,系统将新定义的线型加入到新建的线型文件中.
若要继续定义新线型,则可在系统提示后键入C,重复上面的操作.
示例:通过以上介绍的两种方法分别定义一名为DAS的线型,该线型的样式如图14.3所示.
① 将该线型保存到AutoCAD标准线型文件acad.lin文件中.
命令: -linetype0
当前线型: "ByLayer"
输入选项 [ /创建(C)/加载(L)/设置(S)]: c0
输入要创建的线型名: DAS0
此时系统打开如图14.2所示的【创建或附加线型文件】对话框,确认【文件名】文本框中的名称为ACAD,单击【保存】按钮,系统返回绘图窗口.在命令行继续进行以下操作 :
请稍候,正在检查线型是否已定义...
说明文字: ----.----.----0
输入线型图案 (下一行):
A, 1.0,-0.25,0,-0.25,0.25,-0.25,0,-0.25,0
新线型定义已保存到文件.
输入选项 [ /创建(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 -2…[shape name,shape -filename,Rotate=n,Angle=n,Scale=n,Xoffset=n,Yoffset=n]…patdesc 0n
下面主要介绍该线型格式中与简单线型不同的选项.
Shape name:此选项是要嵌套的位于AutoCAD形文件shape-file中的形名.
Shape filename:此选项是形文件名,该文件必须存在并位于AutoCAD的搜索路径中.
如果Shape filename文件不位于库搜索路径中,AutoCAD会提示并要求用户选择另外一个.shx文件.在Shape filename文件中可以包含路径.
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确定为以1:1作为输出比例所对应的值.当在不同图形中使用复合线型,且将Ltscale设置成与各图比例相对应的值时,这些形在图纸上则以相对应的尺寸出现
Xoffset,Yoffset:这两个选项用于确定所嵌套的形相对于线型定义所确定的当前点的偏移量.这两个选项均是可选项.当该选项为系统默认选项时,AutoCAD将当前点作为嵌套形的插入点.两个偏移量分别沿当前线段方向(对于X轴)和沿与当前线段方向垂直的方向(对于Y).正的X偏移量可使形朝着当前线段的第二个端点的方向移动;正的Y偏移量使形沿着正Y方向(逆时针)移动.
下面举例说明嵌入形的复合线型的样式.
*.CONILINE,-[CONI]-[CONI]-[CONI]
A,1.0,-0.25,[CONI,es.shx],-1.0
在以上线型格式中CONILINE为复合线型名.形CONI是在形文件es.shx中已定义的形,因此可直接引用.如果所需的形不存在,则先在es.shx文件中定义该形,并将其编译后再引用,形的定义需参考其它书藉.
(2) 插入文本的复合线型格式
嵌入文本的复合线型定义格式如下:
*Linetype0name (,description)
A1ignment,patdesc-1,patdesc-2…["string",style scale=n,
Rotate=n,Xoffset=n Yoffset=n]…patdesc-n
该格式中各选项的含义为:
string:该选项为要嵌套的由一个或多个字符组成的文本字符串.该字符串必须用双引号括起.
style:该选项是文本样式名.如果当前图形中没有style,则AutoCAD系统不能使用该文本文件.
scale:该选项用于确定文本的比例因子.如果在定义线型时,使用固定高度的文本样式,AutoCAD则将该高度乘以Scale后的数值.如果使用可变高度的文本样式进行插入,则AutoCAD将Scale后的数值看作是绝对高度.
Xoffset,Yoffset:与前面介绍的形嵌入复合线型中的相应选项使用方法相同,只是在该选项为默认状态时,系统将文本字符串的左下角放在当前点上.
其他选项与形嵌入复合线型中的相应选项的使用方法相同,这里不再重复介绍.下面举例说明含有文本的复合线型的定义.
*MCLINE,-MC-MC-MC
A,1.0,-0.25,["MC",mystyle,s=0,R=0,X=0,Y=-0.25],-1.25
2) 复合线型的开发
在进行复合线型开发时,不能采用在AutoCAD内部的命令行上使用-Linetype命令创建的新复合线型,而只能通过编辑已有线型文件或建立新的线型文件生成新线型.
该格式中各选项的含义为:
string:该选项为要嵌套的由一个或多个字符组成的文本字符串.该字符串必须用双引号括起.
style:该选项是文本样式名.如果当前图形中没有style,则AutoCAD系统不能使用该文本文件.
scale:该选项用于确定文本的比例因子.如果在定义线型时,使用固定高度的文本样式,AutoCAD则将该高度乘以Scale后的数值.如果使用可变高度的文本样式进行插入,则AutoCAD将Scale后的数值看作是绝对高度.
Xoffset,Yoffset:与前面介绍的形嵌入复合线型中的相应选项使用方法相同,只是在该选项为默认状态时,系统将文本字符串的左下角放在当前点上.
其他选项与形嵌入复合线型中的相应选项的使用方法相同,这里不再重复介绍.下面举例说明含有文本的复合线型的定义.
*MCLINE,-MC-MC-MC
A,1.0,-0.25,["MC",mystyle,s=0,R=0,X=0,Y=-0.25],-1.25
2) 复合线型的开发
在进行复合线型开发时,不能采用在AutoCAD内部的命令行上使用-Linetype命令创建的新复合线型,而只能通过编辑已有线型文件或建立新的线型文件生成新线型.
在上节中主要介绍了嵌入形或文本的复合线型格式.在实际创建过程中,可以把形或文本同时嵌入到同一种线型.下面是这方面的一个例子.
创建线型名为userl的复合线型,该线型中包括STAR形和TE文本,并将其保存到ACAD.LIN文件中.
用任何一种文本编辑器或字处理程序打开acad.lin文件,在文件后面加入下面两行 内容:
*user1,- TE 0 STAR 0 TE 0 STAR - .
A,2,-2,["TE"STANDARD,S=0,X=-0.66,Y=-0.5],-2,2,-2,[STAR,SH.SHX],-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命令用新线型替代已有图形中的原线型.
命令执行过程为:
命令: change0
选择对象: 找到 1 个
选择对象: 0
指定修改点或 [特性(P)]: p0
输入要修改的特性
[颜色(C)/标高(E)/图层(LA)/线型(LT)/线型比例(S)/线宽(LW)/厚度(T)]: lt0
输入新线型名 : center0
输入要修改的特性
[颜色(C)/标高(E)/图层(LA)/线型(LT)/线型比例(S)/线宽(LW)/厚度(T)]: 0
命令:
结果选取的对象所使用的线型被新输入的线型所替代.
14.4 利用AutoLISP高级程序
设计语言进行二次开发
AutoCAD为用户提供的高级语言编程环境主要有嵌套在AutoCAD内部的AutoLISP和VBA,面向对象特征的C++编程环境ARX以及其他通过动态数据交换(DDE)完成与AutoCAD之间的通信的高级语言应用程序等等.最值得一提的是AutoLISP程序设计语言,Autodesk公司很早就将LISP改造为AutoLISP并将其嵌入AutoCAD一起提供给用户,并不断对AutoLISP进行升级,它的最新的可视化版本Visual LISP功能更加完善,这使得AutoLISP成为开发AutoCAD软件最方便,最直接,最简单的一种高级程序设计语言.就目前而言,与VBA和C++相比,采用AutoLISP对AutoCAD进行工程专业领域的应用程序或CAD系统的开发有许多明显的优势,比如在功能上它与C++已相差无几,而学习AutoLISP所需计算机专业知识却远远低于C++.VBA虽然在对话框的设计能力上比AutoLISP强许多,由于它使用ActiveX与AutoCAD交互,运行效率不如
展开阅读全文