摘 要: 介绍在AutoCAD环境下创建和管理图形库的一种方案、开发环境、流程等。使用图标菜单和合适的对话框展示图文并茂的图形信息,展示了方法的良好效果。 Z!o&};_j
z;`o>Ja2
一、前言 qD:3;85
)HWf`;VQ
AutoCAD软件具有相当优秀的开放型结构(Open architecture)和一个强大的内部编程语言(Autolisp语言,可以完成一些计算机工作和作图功能),可以方便地让用户随意地开发自己的命令、标准库文件和各种应用程序等。 "1P8[
bm9@A]yP
图形管理是CAD应用的一个重要内容,是CAD应用中较为繁琐、较为困难的部分之一。用户在实际应用中总是为图形太多无法管理大伤脑筋。本文提供了一个图形库创建和管理的方法,其最终效果是展示一个方便快捷、图文并茂的直观的图形库。 <wV?B9j
afY~Y?PJ<
二、 方案设计 g2p/#\D\J
`[x`#irD
1、实现方案 j]i:~9xKW
}Jkz0 JY~
许多AutoCAD用户在图形库的创建和管理方面都使用一种较为简便的方法:将图形文件命名为能体现其图形内容的名称,然后将其分类存入特定的文件夹。这种方法的优点在于简便快捷,但其不方便、不直观的缺点却更为突出。 _hlLM,p
GQ~wx1jj1
针对上述的简便方法,本文提出的方案方便、直观且内置于AutoCAD中。该方案如下: a&b75.-
I_xvg
>i
●生成所有图形的幻灯片文件; .T0w2Dv/
lN"%~n?
●在AutoCAD初始化界面的下拉菜单区加入“图形库”菜单条,此菜单条包含“机械图库”和“电子图库”两个菜单项; dbF?#s~u
P}B{FIpNG
●点击“机械图库”和“电子图库”两个菜单区弹出相应的图标菜单,在图标菜单中可以看到图形文件标识名和相应的图形(幻灯片); mEsOYIu{
+$R4'{9q
●在图标菜单中拾取图形弹出一幅对话框,该对话框给出图形的一些文字信息(如:作者, 图形内容, 绘图日期, 图号等)和图形的预览; W]cJP
m3zmyw}
●点击对话框的确定按钮即可打开拾取的图形文件。 )=6|G^
gB1w,96J
2、方案论证 wc##'u
/Zs;dam
该方案的关键在于图标菜单和对话框。 D9`J||]E
u2crL5^z2)
●图标菜单: }nNZp
K4938
v
图标菜单是AutoCAD菜单的一种。图标菜单以20个为一组显示幻灯片,并同时显示一个包含有幻灯片名或其他文字的滚动列表框。图标菜单的长度不受限制,如果一个图标菜单包含的幻灯片多于20个AutoCAD会提供换页按钮,以便让用户换页显示更多的幻灯片。因此,可以利用AutoCAD的开放型体系结构上的二次开发定制图标菜单来对图形库进行管理。 [>l2E
3B| ?{U~
图标菜单也有不足之处。图标菜单的一个页面需显示20幅幻灯片,所以只能从中获得比较概略的图形信息(尤其是复杂图形)。所以,需要采取一定的辅助措施来对使用图标菜单的缺陷进行弥补。 uN1(l}z$
y7J2:/@[x
●对话框: =8BMCedH|
;ew j
从用户观点来看,窗口操作环境是目前最先进最流行的一种人机交互界面。它能控制光栅扫描型显示器和以鼠标器为代表的输入设备, Cz@[l=-T7
04{*iS95J
向用户提供了图文并茂的可视化环境,是操作更为直观、自然、简便和快速。 tHgn-Dhzr
RzG7Xr=t
AutoCAD R12以上版本提供了一种对话框语言(Dialog-box Control ?CSc5b`eo
#4uuT?!
Language,缩写为DCL),允许用户设计并实现自己的对话框。因此, 可以使用对话框语言编程来对图标菜单中图形进行放大并提供图标菜单中不能提供的文字信息。 R7YLI1ov
)Zx;Z[
三、 开发环境 6^
UQ{P1;
owYf1=G
●486以上微机 >
cFH=um
!bEy~.
●win95或win98操作系统 @64PdM!L
$RA8U:Q!1e
●AutoCAD R12以上版本(本文提供方案在R12、R13、R14中都能实现,但本文提供的开发步骤主要是在R14中实现) !ER,o_T<
6
6S
I
四、 开发步骤 ;Y<Hi\2oy
2xy
&mNx
1、建立图形库文件夹 x;d*?69f]
pRS+vV3
在AutoCAD目录下创建文件夹Storeroom,将需要进入图形库进行管理的图形文件存入该文件夹。 yk
r5bS
v5J%
p4
2、制作幻灯片库(*.SLB) &3a1(>(7F
d8l T+MS=
◆制作幻灯片文件(*.SLD) (.6~t<DRv
cs0;:H*N*
在当前视窗中打开图形文件,并将图形移到屏幕中央。然后在命令行键入MSLIDE命令并在“Creat slide b[}f]pB@n
;2lKo ="
file”框中键入幻灯片名(按下〈return〉键则将当前图形名作缺省幻灯片名接受)。为了创建幻灯片库,将所有幻灯片文件保存到AutoCAD目录下的support子目录中。 C(o]3):?
Y`$dtg {
◆创建幻灯片列表文件(*.txt) <Z^ P8nu
')!+>b(P
假设有mach001.dwg~mach030.dwg共30个图形文件和对应的mach001.sld~mach030.sld共30个幻灯片文件,编辑如下文件(文件名为mach.txt): NCm>iEeY
Rw8l"`
mach001.sld b|7c]l
"`Y.N$M`k
mach002.sld ce3w0UeV
Aj| Gqw>
mach003.sld =3KK/[2M
u~kfz*hz
. 8WT^ES~C
<HReh>)[
mach030.sld 46U?aHKW@|
j,@N0~D5
◆幻灯片库的建立 *=+m;%]_
$"VgNynq
使用AutoCAD的support目录中的实用程序slidelib,将幻灯片文件按照文件列表构造成幻灯片库mach.slb: _," -25a
'rWu}#Nb
slidelib mach
VU~
R
Grot3a
3、编写对话框文件(*.dcl) kGaK(^w
xc|pl!ns
对话框主要是展示一个图文并茂的图形库中的图形,在对话框中不仅要有图形预览,还要有该图形的一些文字说明。假设图形库中的mach001.dwg是一个绘制轴承的图形文件:图号为mach-001,则可编制如下对话框文件(文件名为mach001.dcl): aI8k:FK"
Z' cQ<
f
dcl_settings:default_dcl_settings{audit_level=0;} ]#)1(ZE
ARcPHV<(2
accept_button:ok_button{ bwHl}3
ED9uKp<Wbv
label="确定"; r3~~4Q4XI>
TRB)cJZ?
key="accept"; ^Rgm3?7
Ww(($e!
} Jptzc:~B
_,S
L;*G4|
can_button:cancel_button{ |$$gj[+^
N*d
)<8_
label="取消"; hYm$Sx(=
&.1F\/]k
key="cancel"; (``EBEn
?fO
2&)r
} )e,Rp\fY$
`S&(J2KV
mach001:dialog{ -68E]O
-c%K_2`
label="机械图库—mach001"; %cy]dEL7
K|"97{*|2
:row{ 1h.Ypzu
+59tX2@Q
:column{ Oy U[(
k]J!E-yI8
:text{ S4n ~wo
k91ctEp9>
label="图 号:mach-001"; desrKnY
;.%Ii
w&WG
key="num"; -,;r %7T
YA7h! %52)
width=20; tS$^k)ZXip
yJ(BPSt
fixed_width=true; B/P E{ /
J;?#Zt]`L
} KY1(yni&8[
nEtG(^N
…… 1M%'Xe7
SONv]));
:image{ T]&%
KQ
)3W`>7>
key="img"; Fpz)@0K;
*pu ,|
width=40; NGA8JV/U
-\Y"MwIED
height=20; Z/y&;N4
=Gka;,n
} 2WKYf0t
}N^A
(`L
} b4l=Bg"
9qhX\, h
spacer_1; <W,M?r+
zQ;jaS3hf
:row{ [2]Ti_
>D
;S+UD~i[Bu
:text{ 4Dd@&N
E?L^L3s
label=" "; J$9`[^pV
c ilo8x`
} r8o9C
? {@UB*
accept_button; WtT*
1Z
jFa{h!
can_button; :text{ Bz&6kRPv
pZpAb+
label="";
4
_*^~w
'p%\fb6`
} } +[ +4h}?
XI4le=^EM
} m|:O:<
73:y&U
4、编制对话框控制程序(*.lsp) 2ZZ%BV!s
7Ya4>*B
下面给出对话框文件mach001.dcl的控制程序mach001.lsp: -?m"+mUP
vG`;2laY
(defun mach001() xJ2DkZ
R2]2#3`
(setq dcl_id (load_dialog "mach001.dcl")) /|
nZ)?
MLu@|Xgh
(if (not (new_dialog "mach001" dcl_id)) $#b@b[h<w
'U9l
(exit)) 7P&O{tl(
X?2ub/Nr#Y
(action_tile "accept" "(draw001)") |OgtAI9
,YEwz3$5u
(action_tile "cancel" "(done_dialog)") 5_|Sm=
-y@#
^SrJ
(setq x (dimx_tile "img") ,*y\b|<j
676r0`
y (dimy_tile "img")) RDX$Wy$@L
n54}WGo>9
(start_image "img") OA_WjTwDs
w1#1s|
(fill_image 0 0 x y 0) 3lkz:]SsE
OoG Nij
(slide_image 0 0 x y "mach(mach001)") "@P)
xI'sprNa_1
(end_image) |%V-|\GJ~j
n86=1G:%
(start_dialog) e-4 Qw#cw
lQkCA-
(unload_dialog dcl_id) v;%>F)I
ji8)/
) /t4#-vz
nm8XHk]
(defun draw001()command "open""mach001") KOYU'hw
1N3qMm^
5、编制图标菜单 w=|"{-ijo
;5ANw"Dq
本文通过修改AutoCAD主菜单acad.mnu来实现,其操作步骤如下: lRy^Wp
bL6, fUS
●在AutoCAD主菜单acad.mnu中加入自己的图标菜单区 E8`AU<
2.
t'!uwI
AutoCAD主菜单acad.mnu中的“***IMAGE”表示图标菜单区,对应幻灯片库中的幻灯片、对话框和对话框的控制程序,在图标菜单区加入以下内容(本文给出的是机械图库的图标菜单,电子图库的图标菜单与此类似): i]8 +JG6
B1u.aa$
***IMAGE JBvMe H5
r+yl{
**mach $,s"c(pv[,
p+ki1!Ed
[电子图库] 'yIz<o
)0tq&
[mach(mach001,mach001)]^C^C(load "mach001");(mach001); h)~i?bq!/
(^U
8wit/
[mach(mach002,mach002)]^C^C(load "mach002");(mach002); @v:p)|Ne;
zfm-vU
Omkpjr(1
`S&.gPE2
[mach(mach030,mach030)]^C^C(load "mach030");(mach030); n
_H]*~4F
Klv~#9Si
●将图标菜单的加载放到AutoCAD下拉菜单区 2k}8`P;
mO?yrM *
在菜单文件acad.mnu中的***POP10(下拉菜单第十区)前加入如下内容(同时将***POP10改为***POP11): 5N5Deb#V
~T'!.^/
***POP10 D.ajO^[
@pn<x"F5'
[图形库] ws_/F
gf]k@-)
ID-ELE[电子图库]$I=ACAD.ELE + Z~s"=kF,
ywCF{rRd
$I=ACAD.* ZD`9Ez)5
sX,."@[
ID-MACH[机械图库]$I=ACAD.MACH + *~b}]M700
mRYM,
$I=ACAD.* a6/$}lCq
KhWt9=9
●将修改后的菜单文件用AutoCAD中的menu命令编译成acad.mns即可。 ?T (@<