AutoCAD论文AutoCAD开发技巧论文:
AutoCAD的开发技巧与应用
摘要:AutoCAD是目前国内外使用最广泛的计算机辅助绘图和设计软件包,它适用于机械、电子、建筑等多种领域。AutoCAD具有开放的体系结构,允许用户对其进行扩充与修改,开发出满足特殊专业需要的AutoCAD增值软件。
关键词:AutoLISP;AutoCAD;初始设置;菜单;属性块;参数化;对话框
对于机械工程设计人员在绘制一幅完整的机械制图时,需完成初始化设置、选择图幅大小、图幅比例、标题栏、形位公差与表面粗糙度和尺寸等的标注、特殊的绘图功能等。笔者在AutoCAD 2002 的版本下进行了二次开发(其它版本大同小异)。
1 AutoCAD 的初始设置
一幅好的图幅模板需包括:图幅的大小、图幅比例、标题栏等。下面以A3图幅建立模板文件为例进行说明。
1.1 绘图模板的建立
(1)创建新图(new):设置模型空间界限(limits)、文字样式(style)、标注样式(dimstyle)、绘图单位(units)、图层(layer)、选项设置(options)、分辨率的设置(viewres)等。
(2)保存路径为C:/Program Files/AutoCAD 2002/T emplate,文件名为acad,文件类型为AutoCAD图形样板文件(*.dwt),在样
板说明中可输入“通用模板”,最后按“保存”按钮。
1.2 图幅模板的建立
(1)根据企业的具体规定来绘制标题栏的格式与大小,并定义相应的属性。
(2)属性定义(ddattdef),弹出属性定义对话框。
①设置模式(Mode)、属性(Attribute)、文字选项(Text Options)、插入点(Pick Point)等。
②将标题栏生成属性块。
命令行(Command):wblock按"Enter"。按要求输入文件名(File Name,如标题栏),块名(Block Name),插入点(Inserttion Base Point,如标题栏的右下角点),选择对象(Select Objects,全选该标题栏),最后按"Enter"。
命令行(Command):oops按"Enter"。保存在C:/Program Files/AutoCAD 2002/Support下。
(3)插入标题栏属性块。
按国家标准,用画线(line)命令绘制A3图幅的大小。命令行(Command):ddinsert按"Enter",弹出插入块对话框。
①名称(File Name,如标题栏.dwg)、缩放比例(Scale Factor,为1)、旋转角度(Rotation Angle,为0)、插入点(Imsert Point,为图幅内框的右下角点)。如图1所示。
图1 A3图幅的局部视图
②模板的保存。
路径为C:/Program Files/AutoCAD 2002/Template,文件(*.dwt),在样板说明中可输入"A3图幅",最后按“保存”按钮。同理,可建立其它图幅A0~A4的模板文件。
(4)标题栏内容的输入。
①在命令行(Command):ddatte按"Enter",选择该标题栏上任一点,即弹出标题栏对话框。如图2所示。
②输入相应的属性值,将自动填充到图1所示的相应位置上。
图2 标题栏输入对话框
(5)说明:
用户可根据上述设置属性的方法,可自行定制出明细表、粗糙度符号、基准符号及特殊符号等的属性块。
2 AutoCAD 的功能开发与使用
2.1 自主开发功能的编辑与加载方法
(1)AutoLISP程序的编辑。
我们可新建一文本文件*.lsp(如:Mycad.lsp),在该文件中输入图幅比例的AutoLISP程序。
(2)AutoLISP程序的手动加载。
加载应用程序(appload):弹出加载/卸载应用程序对话框,在文件名中选择"Mycad.lsp",然后按“加载”钮。
(3)AutoLISP程序的自动加载。
把Mycad.lsp保存到C:/Program Files/AutoCAD 2002/Support 下,然后在AutoCAD2000doc.lsp文件的相应行中输入:(autoload "mycad" '("mycad")),然后保存文件。每次进入AutoCAD时,所定义的应用程序就可自动加载了。
2.2 AutoLISP程序开发特殊功能举例
图幅比例功能:该图幅比例命令是全局缩放,不会影响图纸的任何比例。
(1)AutoLISP程序。
(defun c:bscale(/ hk) ;定义图幅比例的命令名
(setq hk (getdist "/n 请输入图幅比例:"));如1/2
(command "SCALE" "all" "" "0,0" (/ 1 hk));比例缩放
(command "DIMSCALE" (/ 1 hk)) ;尺寸标注比例缩放
(command "ZOOM" "all" "") ;全图
(setvar "HPNAME" "ANSI31");剖面线图案类型
(setvar "HPSCALE" 1.5) ;剖面线比例
(setvar "TEXTSIZE" (/ 4 hk));文字高度缩放
(2)用法:在命令行下输入。
(Command):bscale按"Enter"。请输入图幅比例:1/2。
(3)说明:
用户可根据上述程序示例,可二次开发出诸如:粗糙度标注、基准标注、零件序列号、指引线标、形位公差标注、画断裂线、画螺纹
等许多指令功能。这里不一一介绍了。
3 AutoCAD 图标与下拉菜单的开发
我们自行开发的命令功能是自定义的,能否将开发的命令功能用形象的图标显示出来?或以下拉菜单的形式出现呢?
3.1 开发图标工具栏
3.1.1 手动开发图标工具栏
此方法不具有通用性,在重新安装CAD软件时,产生丢失现象。这里不详细介绍,其主要方法是:任意图标上,按鼠标右键、“编辑按钮图像”、在与此按钮关联的宏中输入"^C^C_bscale"。如图3所示。
图3 图标
3.1.2 自动开发图标工具栏
(1)打开C:/Program Files/AutoCAD 2002/Support下的菜单文件*.mnu(如:acad.mnu或acad.mns),把下述图标菜单程序插入任意图标菜单之后(如:**TB_DRAW)。如图4所示。
** TB_MYCAD
[_Toolbar(“特殊功能”,_Right,_Show,0,0,1)]
-------
[_Button(“断裂线”,"dlx.bmp","dlx.bmp")]^C^C_dlx
[--]
图4 图标工具栏
(2)说明:
①** TB_MYCAD:表示工具栏。
②[_Toolbar(“特殊功能”,_Right,_Show,0,0,1)]:表示工具栏名称(特殊功能)及位置。
③[_Button(“图幅比例”,"bscale.bmp","bscale.bmp")]^C^C_bscale:表示图标按钮名称(图幅比例)及调用图像(bscale.bmp),^C^C_bscale表示执行的命令。
④[--]:表示图标按钮分融符。
3.2 开发下拉菜单
(1)打开C:/Program Files/AutoCAD 2002/Support下的菜单文件*.mnu(如:acad.mnu或acad.mns),把下述下拉菜单程序插入下拉菜单之后(如:***POP12)。如图5所示。
***POP13
[自制CAD(&Z)]
[图幅比例(&A)]^C^C_bscale
-------
[两直线成尖角(&E)]^C^C_cfj
[--]
图5 开发下拉菜单
(2)说明:
①POP13:表示第十三个下拉菜单。
②[自制CAD(&Z)]:表示下拉菜单功能项名称(自制CAD),快捷键为ALT+Z。
③[图幅比例(&A)]^C^C_bscale:表示下拉菜单各分项名称(图幅比例),快捷键为SHIFT+A,^C^C 执行二次中断操作,bscale为执行的命令(功能中所定义的命令)。
④[--]:表示在下拉菜单中显示分融符。
4 AutoCAD 的参数化设计
在实际工程设计中,有许多结构相似,而尺寸不同的设计,比如:中心孔、键槽等。如何进行参数化设计呢?
4.1 程序开发
以圆盘设计为例,如图6上的圆盘图所示。
(defun C:yptype (/ p1 d1 d2 d3 d4 n1)
(setq sb (getvar "osmode"))
(setvar "osmode" 33)
(setq p1 (getpoint "/n圆盘位置:")
d1 (getreal "/n请输入内孔直径:")
d2 (getreal "/n请输入圆盘外径:")
d3 (getreal "/n请输入排列孔直径:")
d4 (getreal "/n请输入联接孔直径:")
n1 (getint "/n请输入联接孔个数:")
sc (getvar "DIMSCALE")
;部分程序省略
图6 对话框输入
4.2 对话框程序
部分对话框程序如下,对话框如图6所示。
yptype: dialog {
label= “圆盘设计”; ;对话框的标题名称
: column {;行/列大小
: row {
: image_button {
key= "yptype.sld";;图像幻灯片
;部分程序省略
4.3 使用方法
(1)命令行输入
命令:yptype按"Enter"。
输入圆盘位置、内孔直径等按"Enter"。
(2)对话框输入:结果如图6所示。
5 结束语
总而言之,Autodesk公司为用户提供了丰富的二次开发工具。比如:AutoLISP语言、对话框控制语言(Dialog-box ControlLanguage)、C语言、AutoCAD SQL数据库语言、VBA管理器等。利用这些,用户可随心所欲进行AutoCAD的二次开发。