AutoCAD中图形库的创建和管理
摘要:介绍在AutoCAD环境下创建和管理图形库的一种方案、开发环境、流程等。使用图标菜单和合适的对话框展示图文并茂的图形信息,展示了方法的良好效果。
关键词:CAD 制图应用
一、前言
AutoCAD软件具有相当优秀的开放型结构(Open architecture)和一个强大的内部编程语言(Autolisp语言,可以完成一些计算机工作和作图功能),可以方便地让用户随意地开发自己的命令、标准库文件和各种应用程序等。
图形管理是CAD应用的一个重要内容,是CAD应用中较为繁琐、较为困难的部分之一。用户在实际应用中总是为图形太多无法管理大伤脑筋。本文提供了一个图形库创建和管理的方法,其最终效果是展示一个方便快捷、图文并茂的直观的图形库。
二、 方案设计
1、实现方案
许多AutoCAD用户在图形库的创建和管理方面都使用一种较为简便的方法:将图形文件命名为能体现其图形内容的名称,然后将其分类存入特定的文件夹。这种方法的优点在于简便快捷,但其不方便、不直观的缺点却更为突出。
针对上述的简便方法,本文提出的方案方便、直观且内置于AutoCAD中。该方案如下:
●生成所有图形的幻灯片文件;
●在AutoCAD初始化界面的下拉菜单区加入“图形库”菜单条,此菜单条包含“机械图库”和“电子图库”两个菜单项;
●点击“机械图库”和“电子图库”两个菜单区弹出相应的图标菜单,在图标菜单中可以看到图形文件标识名和相应的图形(幻灯片);
●在图标菜单中拾取图形弹出一幅对话框,该对话框给出图形的一些文字信息(如:作者, 图形内容, 绘图日期,图号等)和图形的预览;
●点击对话框的确定按钮即可打开拾取的图形文件。
2、方案论证
该方案的关键在于图标菜单和对话框。
●图标菜单:
图标菜单是AutoCAD菜单的一种。图标菜单以20个为一组显示幻灯片,并同时显示一个包含有幻灯片名或其他文字的滚动列表框。图标菜单的长度不受限制,如果一个图标菜单包含的幻灯片多于20个AutoCAD会提供换页按钮,以便让用户换页显示更多的幻灯片。因此,可以利用AutoCAD的开放型体系结构上的二次开发定制图标菜单来对图形库进行管理。
图标菜单也有不足之处。图标菜单的一个页面需显示20幅幻灯片,所以只能从中获得比较概略的图形信息(尤其是复杂图形)。所以,需要采取一定的辅助措施来对使用图标菜单的缺陷进行弥补。
●对话框:
从用户观点来看,窗口操作环境是目前最先进最流行的一种人机交互界面。它能控制光栅扫描型显示器和以鼠标器为代表的输入设备,向用户提供了图文并茂的可视化环境,是操作更为直观、自然、简便和快速。
AutoCAD R12以上版本提供了一种对话框语言(Dialog-box Control
三、 开发环境
●486以上微机
●win95或win98操作系统
●AutoCAD R12以上版本(本文提供方案在R12、R13、R14中都能实现,但本文提供的开发步骤主要是在R14中实现)
四、 开发步骤
1、建立图形库文件夹
在AutoCAD目录下创建文件夹Storeroom,将需要进入图形库进行管理的图形文件存入该文件夹。
2、制作幻灯片库(*.SLB)
◆制作幻灯片文件(*.SLD)
在当前视窗中打开图形文件,并将图形移到屏幕中央。然后在命令行键入MSLIDE命令并在“Creat slide
◆创建幻灯片列表文件(*.txt)
假设有mach001.dwg~mach030.dwg共30个图形文件和对应的mach001.sld~mach030.sld共30个幻灯片文件,编辑如下文件(文件名为mach.txt):
mach001.sld
mach002.sld
mach003.sld
mach030.sld
◆幻灯片库的建立
使用AutoCAD的support目录中的实用程序slidelib,将幻灯片文件按照文件列表构造成幻灯片库mach.slb:
3、编写对话框文件(*.dcl)
对话框主要是展示一个图文并茂的图形库中的图形,在对话框中不仅要有图形预览,还要有该图形的一些文字说明。假设图形库中的mach001.dwg是一个绘制轴承的图形文件:图号为mach-001,则可编制如下对话框文件(文件名为mach001.dcl):
dcl_settings:default_dcl_settings{audit_level=0;}
accept_button:ok_button{
label="确定";
key="accept";
}
can_button:cancel_button{
label="取消";
key="cancel";
}
mach001:dialog{
label="机械图库—mach001";
:row{
:column{
:text{
label="图 号:mach-001";
key="num";
width=20;
fixed_width=true;
}
……
:image{
key="img";
width=40;
height=20;
}
}
spacer_1;
:row{
:text{
label=" ";
}
accept_button;
can_button; :text{
label="";
} }
}
4、编制对话框控制程序(*.lsp)
下面给出对话框文件mach001.dcl的控制程序mach001.lsp:
(defun mach001()
(setq dcl_id (load_dialog "mach001.dcl"))
(if (not (new_dialog "mach001" dcl_id))
(exit))
(action_tile "accept" "(draw001)")
(action_tile "cancel" "(done_dialog)")
(setq x (dimx_tile "img")
y (dimy_tile "img"))
(start_image "img")
(fill_image 0 0 x y 0)
(slide_image 0 0 x y "mach(mach001)")
(end_image)
(start_dialog)
(unload_dialog dcl_id)
)
(defun draw001()command "open""mach001")
5、编制图标菜单
本文通过修改AutoCAD主菜单acad.mnu来实现,其操作步骤如下:
●在AutoCAD主菜单acad.mnu中加入自己的图标菜单区
AutoCAD主菜单acad.mnu中的“***IMAGE”表示图标菜单区,对应幻灯片库中的幻灯片、对话框和对话框的控制程序,在图标菜单区加入以下内容(本文给出的是机械图库的图标菜单,电子图库的图标菜单与此类似):
***IMAGE
**mach
[电子图库]
[mach(mach001,mach001)]^C^C(load "mach001");(mach001);
[mach(mach002,mach002)]^C^C(load "mach002");(mach002);
[mach(mach030,mach030)]^C^C(load "mach030");(mach030);
●将图标菜单的加载放到AutoCAD下拉菜单区
在菜单文件acad.mnu中的***POP10(下拉菜单第十区)前加入如下内容(同时将***POP10改为***POP11):
ID-ELE[电子图库]$I=ACAD.ELE +
$I=ACAD.*
ID-MACH[机械图库]$I=ACAD.MACH +
$I=ACAD.*
●将修改后的菜单文件用AutoCAD中的menu命令编译成acad.mns即可。