AUTO CAD二次开发与应用.docx
- 文档编号:8308068
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:8
- 大小:21.71KB
AUTO CAD二次开发与应用.docx
《AUTO CAD二次开发与应用.docx》由会员分享,可在线阅读,更多相关《AUTO CAD二次开发与应用.docx(8页珍藏版)》请在冰豆网上搜索。
AUTOCAD二次开发与应用
AutoCAD二次开发与应用
AutoCAD是目前国内使用最广泛的DLG软件,由美国Autodesk公司研制开发,自1982年面世以来以发展到18.1版,其丰富的绘图命令,强大的编辑功能和良好的用户界面受到了广大工程技术人员的普遍欢迎,目前AutoCAD的正式用户已经超过100万个,普及全世界150国家和地区。
AutoCAD得到广泛应用的原因除了因为它功能强大、支持的平台多、外设广、性能价格好、易学易用外,更主要的原因是因为它具有开放的体系结构,允许用户和开发者在几乎所有方面对其扩充和修改,能最大限度地满足用户的特殊要求,特别是该软件提供的各种编程工具与接口,为用户在其基础上进行二次开发创造了便利的条件。
通过二次开发,可方便地将之改造为一个按照用户要求的专题软件。
1命令的用户化
1.1程序参数文件(ACAD.GPG)结构与功能
ACAD.PGP文件是AutoCAD用户化命令列表,当用户输入一个非AutoCAD的内部命令时,AutoCAD系统系统首先在ACAD.PGP中寻找该命令的定义。
该文件是一个ASCII码文件,该文件分两部分:
第一部分定义外部命令;第二部分定义命令别名。
每一部分均有若干命令定义项组成,任意一命令定义项均占一行。
文件中可包含用户对有关的命令定义所做的注解和说明。
注解项均有分号“;”引导。
当AutoCAD做图形编辑时,可以随时编辑ACAD.PGP文件,用来满足绘图时的个人习惯,使用REINIT命令从新对ACAD.PGP进行初始化(从新调入)。
1.2在ACAD.PGP中定义AutoCAD的外部命令
为了在AutoCAD中执行其它应用程序,用户必须告诉AutoCAD程序名及其有关的内容和运行方式,这些程序主要包括DOS命令、DOS应用程序、Windows命令、文本编辑器和字处理器、数据库管理程序、电子表格、通讯程序、用户的应用程序,用户必须在ACAD.PGP文件中有关外部命令的信息。
当用户在ACAD.PGP中定义外部命令时,每行描述一个可执行的应用程序,所定义的外部命令有四个字段组成,中间用逗号分开,格式如下:
<命令名>,[
1.2.1命令名
命令是用户在为了运行外部命令而在AutoCAD的命令符下所输入的命令名字,它不能是AutoCAD的内部命令,否则被忽略,命令的大小写字母通用,不能包含空格,否则AutoCAD将视为回车,命令结束
1.2.2DOS请求
DOS请求是AutoCAD传递给DOS、Windows操作系统的命令,它可以DOS、Windows下任何合法的命令,甚至是一个批处理文件名。
1.2.3位标志
位标志用于指定外部命令与AutoCAD之间的运算关系,位标志最常用的设置值(十进制)主要有:
0:
启动外部程序并等待其运行结束
1:
启动外部程序并不等待其运行结束
3:
最小化外部程序而并不等待其运行结束
5:
“隐藏”(后台)运行外部程序而并不等待其运行结束
标志位2、4一般应避免采用,因为等待外部程序结束方可返回AutoCAD环境,而在外部外部程序运行期间,AutoCAD是被“屏蔽”起来而“无效”的
1.2.4提示
当用户的外部命令定义包含这个字段时,AutoCAD将显示提示信息,等待用户输入,并把用户的相应作为参数提供给操作系统,如果提示符前有“*”号,AutoCAD允许输入空格,用户必须键入ENTER(回车)来结束,否则将以空格会回车来终止用户输入,如果用户不想用提示,仅需加一个逗号即可。
1.3定义命令别名和缩写
用户可以通过在ACAD.PGP的命令别名项中定义其别名,把经常使用的命令简化成缩写,不用输入比较长的命令。
命令别名项的定义格式为:
<命令别名>,*<命令名>
1.3.1命令别名
用户在“命令(Command):
提示符下输入的内容
1.3.2命令名
命令名是指完整的AutoCAD内部命令、用户定义的AutoLISP或ARX命令名、显示器驱动程序或设备驱动程序名
1.3.3命令别名命名规则
a)优先考虑采用命令的首字母、前两、三个字符作为命令的别名
b)忽略带对话框操作命令中的前两个字符“DD”
c)尽量不用以数字开头来定义
d)如果命令别名已被定义,可通过添加后缀来定义命令别名
e)命令别名尽量比原命令短
f)利用连字号(前缀加“_”)来区分命令与对话框
2线型图案的开发
AutoCAD提供了标准线型文件ACAD.LIN和标准图库文件ACAD.PAT当AutoCAD环境运行时会自动加载上述文件,当上述文件不能满足用户的需要时,也可新建该文件,但是需要用户自己加载。
2.1线型文件的格式
线型文件是一种纯ASCII的格式的文本文件,一个线型文件可以定义多种线型。
每一个线型的定义占两行,空行、注解(分号)都被忽略,格式如下:
*线型名[,线型描述]
Alignment,dash-1,dash-2,dash-3
2.1.1线型对齐方式
Alignment字段是线型的对齐方式,目前AutoCAD只是支持着这一种对齐方式,即字段开头用A来指定。
2.1.2线型的提笔与落笔
dash-n用来指定组成线型的线段长度,若长度为正则表示下笔段(实线),若长度为负则表示抬笔短(间隔),若长度为零则表示画出一个点。
每个线型定义应该控制在80个字符内,最多允许280个字符,对于一般线型已经足够了。
2.1.3简单线型的建立
用户可以在AutoCAD的环境下键入-linetype命令来建立新的线型,也可以使用文本编辑器直接编辑、建立线型文件,用户不必进入AutoCAD环境,在使用已有的线型文件时新建线型时应注意不能在已定义线型的两行间插入内容。
2.1.4复合线型的建立
复合线型的定义语法与简单线型的语法基本相同,不同之处只是在定义中增加了用方括号括起来的的特殊参数,用来告诉AutoCAD如何镶入文本、形。
复合线型的参数如下
*线型名[,线型描述]
Alignment,dash-1,dash-2..[镶入的文本或形定义],dash-3
其中“镶入的文本”定义语法为:
[String,Style,R=n,A=n,S=n,X=n,Y=n]
镶入形定义语法为:
[Shapename,Shape_file,R=n,A=n,S=n,X=n,Y=n]
String是一个或多个字符串组成的文本,Style是文本的样式名,Shapename是Shape_file的形名,需要指出的是Shape_file中必须有Shapename的形名,否则AutoCAD将拒绝使用使用此线型。
R=n表示文本、形相对于当前线段方向的旋转角,缺省值为0,表示文本、形的方向与段的方向一致。
A=n表示文本、形相对于世界坐标系X轴绝对旋转角。
当希望总是以水平放置时A=0,用户可以指定R、A的值,但是不能同时指定数值,基本单位是度,如果想基本单位改换成弧度、梯度,需要在值后加R或G。
S=n是文本、形的比例系数。
X=n和Y=n是相对于线型分类中的当前点的偏移量。
2.2图案文件的格式
图案填充是有一族或多族组成的有规律的图案线组成,每一族有若干个平行或相交的线组成。
每一个图案填充的定义占一行或多行,格式如下:
*图案名[,图案描述]
A.dx,dy,dl,ds[,第一组参数]
A.dx,dy,dl,ds[,第二组参数]
A表示基准线与X轴的夹角
dx,dy表示基准线的起点坐标
dl表示平行线间距
ds平行线间距离
3菜单的开发
菜单文件一般包含翻译菜单(MNC)、菜单资源(MNR)、菜单源代码(MNS)菜单样板(MNU)等,其中翻译菜单、菜单资源为两进制文件,一般会有系统翻译而成,菜单源代码、菜单样板是一种纯ASCII的格式的文本文件,可以使用文本编辑器编辑、修改。
3.1菜单开发的一般方法
a)确定菜单的类型,即下拉菜单、图像块菜单、屏幕菜单、图形输入板菜单、工具菜单、快捷键、状态栏帮助等。
b)分析所需增加的菜单功能,在MNS、MNU找出相应的字菜单。
c)决定菜单的位置。
d)用文本编辑器编辑MNS、MNU文件,在合适的位置增加菜单或子菜单。
3.2建立组合菜单
基础菜单是指AutoCAD启动时的自动加载的菜单文件,也可以使用MENU命令加载基础菜单,在任何情况下基础菜单只能有一个,局部菜可以使用MENULOAD加载,局部菜单允许同时有一个或多个,用户可以随心所欲的删除基础菜单、局部菜单的菜单内容。
从而拼凑出一个适合于当前用户习惯的菜单文件。
4AutoLISP语言设计
AutoLISP语言是一种运行在AutoCAD环境下的的镶入式语言,是AutoCAD提供给用户主要的开发语言之一,利用AutoLISP语言编程可以快速实现对AutoCAD当前图形数据进行直接访问和修改,是人工只能领域中广泛使用的一种程序设计语言。
在LISP语言中,最基本的数据类型是符号表达式,一个LISP程序可以把另一个LISP程序作为它的数据进行处理,因此编程比较灵活,看起来,是一个一个的函数调用,其实支持递归定义是AutoLISP语言重要性质。
4.1AutoLISP语言的特性
a)AutoLISP语言属于解释型语言,其优点在于执行这种语言编写的程序不需要任何的中间步骤,用户可以交互、独立地来验证程序段或语句。
b)AutoLISP语言特点是可移植性。
AutoLISP程序可以运行于多种平台上的AutoCAD中执行而与CPU或操作系统无关。
c)AutoLISP的设计向下兼容,任何一个AutoCAD版本下所编写的AutoLISP程序均可在以后的AutoCAD运行。
4.2AutoLISP程序的自动加载
AutoCAD每次启动时,都会将目录下的ACAD.LSP自动加载,因此可将AutoLISP的程序集放到该文件内,实现自动载入。
AutoCAD启动时,每次都会自动加载基础菜单,因此用户可以将AutoLISP的程序集放到菜单文件MNL中,也可实现自动加载。
5ARX程序的开发
ARX编程环境是Autodesk公司在AutoCADR13及其以后的版本中提供的面向对象特性的C++应用程序编程接口,开发人员可以开发出相应的模块来开发和定制AutoCAD的功能,ARX可以直接进入AutoCAD的数据库,图形系统原始命令内部。
ARX可以创建AutoCAD新命令,这些新定义的操作方式与AutoCAD原有命令相同。
5.1ARX程序的特点
a)基于WINDOWSDLL翻译应用程序环境
b)集成了AutoCAD,AutoLISP和ADS
c)提供了220类,3000多个不重复的函数成员
d)可操作性,直接利用C++进入结构内核
e)能够从新定义AutoCAD命令
5.2ARX类库结构
a)AcRx类库包含于RXAPI.LIB文件中,用于附加应用程序、运行时类登记与管理
b)AcED类库包含于ACEDAPI.LIB文件中,用于原始命令的登记和系统事件的声明
c)AcDb类库包含于ACAD.LIB文件中,用于数据库类对象引用的管理
d)AcGi类库包含于ACGIAPI.LIB文件中,用于AutoCAD实体绘制的图形接口
e)AcGe类库包含于LIBACGE.LIB文件中,用于通用线性和集合对象的工具库
f)ADS类库包含于ACAD.LIB文件中,用于生成AutoCAD的C语言库
5ActiveXAutomatiom开发技术
AutoCAD从R14开始提供ActiveXAutomatiom技术,通过VisualBasic6.0的对象浏览器可以观察到对象的属性、方法、全局共有变量、常用变量的定义等。
5.1ActiveXAutomatiom优点
a)应用程序可以在第一次引用类型库时自动启动AutoCAD
b)函数、方法、属性可以在翻译时得到检查、纠正,从而提高工作效率
c)可以使用库中声明的变量类型和常量定义,提高程序的可读性、安全性
d)ActiveXAutomatiom向下兼容,任何的VBA程序均可在以后的版本中得到可靠的运行
e)可以生成可执行文件,从而提高了程序的稳定性、移动性
5.2将Application与AutoCAD程序连接
Application对象是VB应用程序与AutoCAD之间链接的关键。
只有通过Application对象用户才能获得Document对象、ModelSpace、PaperSpace对象。
这是ActiveXAutomatiom开发AutoCAD应用程序的第一步。
5.2.1获取Application对象
Dimacadappasobject
OnErrorResumeNext
Setacadapp=GetObject(,”AutoCAD.Application”)
IfErrThen
Err.Clear
Setacadapp=GetObject(”AutoCAD.Application”)
EndIf
当AutoCAD运行时GetObject函数返回给声明acadapp一个Application对象。
5.2.2获取Document对象
Document是有Application对象的ActiveDocument返回的对象,是当前在编辑的图形,是图形进行图形编辑的最高对象。
DimacadappDocasobject
SetacadDoc=acadapp.ActiveDocument
当的到Document对象后就可以使用它的实行方法。
例如保存文件
acadDo.Save
5.2.3获取图形对象
图形对象是ModelSpace或PaperSpace集合对象的子对象,因此在产生新对象之前必须获取一个ModelSpace或PaperSpace的对象集合,这两个对象可有Document对象的ModelSpace和PaperSpace返回,利用ModelSpace或PaperSpace的ADDEntity的方法,就可以产生一个图形对象。
DimmoSpaceasobject
DimpaSpaceasobject
SetmoSpace=acadDoc.ModelSpace
SetpaSpace=acadDoc.PaperSpace
5.2.4增加一个Polyline对象
DimAPoly(0To9)ASDoubie
DimAObiectASobject
APoly(0)=0
APoly
(1)=0
APoly
(2)=0
APoly(3)=1
APoly(4)=1
APoly(5)=1
APoly(6)=1
APoly(7)=0
APoly(8)=0
APoly(9)=0
SetAObiect=moSpace.AddightWeighPolyline(APoly)
5.2.5增加一个文本对象
Diminspnt(0To2)ASDoubie
DimtxthgtASDoubie
DimtxtobjASobject
DimtxtstrASString
txtstr=”河南煤田信息中心”
inspnt(0)=0
inspnt
(1)=0
inspnt(3)=0
txthgt=3
Settxtobj=moSpace.addtext(txtstr,inspnt,txthgt)
5.2.6最后一个实体
DimentAsObject
Setent=moSpace.Item(moSpace.Count-1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AUTO CAD二次开发与应用 CAD 二次开发 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)