摘 要: 介绍在AutoCAD环境下创建和管理图形库的一种方案、开发环境、流程等。使用图标菜单和合适的对话框展示图文并茂的图形信息,展示了方法的良好效果。 <D4)gRRo
9qqEr~
一、前言 ,;D74h2F
8-SVgo(
AutoCAD软件具有相当优秀的开放型结构(Open architecture)和一个强大的内部编程语言(Autolisp语言,可以完成一些计算机工作和作图功能),可以方便地让用户随意地开发自己的命令、标准库文件和各种应用程序等。 1eb1Lvn
~$Mp >ZB2W
图形管理是CAD应用的一个重要内容,是CAD应用中较为繁琐、较为困难的部分之一。用户在实际应用中总是为图形太多无法管理大伤脑筋。本文提供了一个图形库创建和管理的方法,其最终效果是展示一个方便快捷、图文并茂的直观的图形库。 Y[x ^59
vys*=48g
二、 方案设计 JL(*peeu3
]AHi$Xx
1、实现方案 YJ75dXc&&
-rH3rKtf~
许多AutoCAD用户在图形库的创建和管理方面都使用一种较为简便的方法:将图形文件命名为能体现其图形内容的名称,然后将其分类存入特定的文件夹。这种方法的优点在于简便快捷,但其不方便、不直观的缺点却更为突出。 C]r$
C ch1"j<k$
针对上述的简便方法,本文提出的方案方便、直观且内置于AutoCAD中。该方案如下: z5{I3 Y!1
Pq_Il9
●生成所有图形的幻灯片文件; x b _C1n
PN.=])7T
●在AutoCAD初始化界面的下拉菜单区加入“图形库”菜单条,此菜单条包含“机械图库”和“电子图库”两个菜单项; ,cm2uY
WQK#&r*
●点击“机械图库”和“电子图库”两个菜单区弹出相应的图标菜单,在图标菜单中可以看到图形文件标识名和相应的图形(幻灯片); awC&xVf
dmF<J>[
●在图标菜单中拾取图形弹出一幅对话框,该对话框给出图形的一些文字信息(如:作者, 图形内容, 绘图日期, 图号等)和图形的预览; 1C|j<w=i
^lQ-w|7(
●点击对话框的确定按钮即可打开拾取的图形文件。 FS@SC`~(
uvmNQg
2、方案论证 m' aakq
-}N{'S,Bp
该方案的关键在于图标菜单和对话框。 #
=322bnO
2ag]p
●图标菜单: {)%B?75~
&[s^`e
图标菜单是AutoCAD菜单的一种。图标菜单以20个为一组显示幻灯片,并同时显示一个包含有幻灯片名或其他文字的滚动列表框。图标菜单的长度不受限制,如果一个图标菜单包含的幻灯片多于20个AutoCAD会提供换页按钮,以便让用户换页显示更多的幻灯片。因此,可以利用AutoCAD的开放型体系结构上的二次开发定制图标菜单来对图形库进行管理。 zBoU;d%p>
bMv9f
J
图标菜单也有不足之处。图标菜单的一个页面需显示20幅幻灯片,所以只能从中获得比较概略的图形信息(尤其是复杂图形)。所以,需要采取一定的辅助措施来对使用图标菜单的缺陷进行弥补。 $9l3DJ
z5i!GJB
●对话框: G A7
Q 5jP`<zWU
从用户观点来看,窗口操作环境是目前最先进最流行的一种人机交互界面。它能控制光栅扫描型显示器和以鼠标器为代表的输入设备, +HfjnEbtBs
?]7ITF
向用户提供了图文并茂的可视化环境,是操作更为直观、自然、简便和快速。 0dgR;Dl(
APLu?wy7s5
AutoCAD R12以上版本提供了一种对话框语言(Dialog-box Control Gpgi@
Uf
x[>A'.m@)
Language,缩写为DCL),允许用户设计并实现自己的对话框。因此, 可以使用对话框语言编程来对图标菜单中图形进行放大并提供图标菜单中不能提供的文字信息。 :#gz)r
KlrKGmy,)
三、 开发环境 G;^iwxzhO
I{RktO;1
●486以上微机 Z4(2&t^
kQH!`-n:T
●win95或win98操作系统 e~-Dk .i
@L~y%#
●AutoCAD R12以上版本(本文提供方案在R12、R13、R14中都能实现,但本文提供的开发步骤主要是在R14中实现) 'l;?P
Np=*B_ @8
四、 开发步骤 QOP*vH >J
`b]
NB^/
1、建立图形库文件夹 *wSl~J|ZM%
9Qkww&VEk
在AutoCAD目录下创建文件夹Storeroom,将需要进入图形库进行管理的图形文件存入该文件夹。 tRXM8't
,O-lDzcw
2、制作幻灯片库(*.SLB) $ &^
,(z9
) Z^(+
◆制作幻灯片文件(*.SLD) /g8yc'{p
D{8V^%{
在当前视窗中打开图形文件,并将图形移到屏幕中央。然后在命令行键入MSLIDE命令并在“Creat slide bqe;) A7
)pvZM?
file”框中键入幻灯片名(按下〈return〉键则将当前图形名作缺省幻灯片名接受)。为了创建幻灯片库,将所有幻灯片文件保存到AutoCAD目录下的support子目录中。 b;}MA7=
\J13rL{<
◆创建幻灯片列表文件(*.txt) AG9U2x
=-q)I[4#
假设有mach001.dwg~mach030.dwg共30个图形文件和对应的mach001.sld~mach030.sld共30个幻灯片文件,编辑如下文件(文件名为mach.txt): Onc!5L
MDB}G
'
mach001.sld d+IPa<N
v |i(peA#
mach002.sld WK=!<FsC$
2N]y)S_<V
mach003.sld )WFUAzuN,
" 7aFVf
. `Y[zF1$kz^
t]vz+VQ
mach030.sld l,/5$JGnk
5(F!*6i>
◆幻灯片库的建立 f{)*"
bk7miRIB
使用AutoCAD的support目录中的实用程序slidelib,将幻灯片文件按照文件列表构造成幻灯片库mach.slb: [lnN~#(Y
x7*}4>|W,I
slidelib mach QHQj6]
&/zsIx+
3、编写对话框文件(*.dcl) SEuj=Vie#
I%(+tJ
对话框主要是展示一个图文并茂的图形库中的图形,在对话框中不仅要有图形预览,还要有该图形的一些文字说明。假设图形库中的mach001.dwg是一个绘制轴承的图形文件:图号为mach-001,则可编制如下对话框文件(文件名为mach001.dcl): Qv?jo(]
)V>FU=
dcl_settings:default_dcl_settings{audit_level=0;} u.arkp
FINM4<s)
accept_button:ok_button{ :,7VqCh3@
HD`%Ma
Yhc
label="确定"; .6tz ^4
U "}Kth
key="accept"; T0SD|'
?Cu$qE!h)[
} b&e?
6h^G
p1&d@PF&&
can_button:cancel_button{ I{2e0
,~3 sba
label="取消"; +&t{IP(?
7f(UbO@BD
key="cancel"; }W YY5L8^
#._!.P
} I,#U
_
p*N+B
o
mach001:dialog{ >!oN+8[~
xE9s=}
label="机械图库—mach001"; f{+8]VA
a $KM
q>
:row{ &,#VhT![
xqG`
_S
l
:column{ Y<|L|b6
(0k0gq;
:text{ OrH&dY
CtE".UlCA
label="图 号:mach-001"; q| j;dI&
7IvCMb&%R
key="num"; 8CYJR/
@ce4sSo
width=20; 6?t5g4q*nn
't>Qj7vh0
fixed_width=true; ))MP]j9
T
B kC(9[Ei
} (_W[~df4
;DGWUK.U[H
…… u}$U|Cw-;T
|Rl|Th
:image{ W6*(Y
6)?TWr'K e
key="img"; P]y5E9 k
9\"~ G)
width=40; GnLh qm"\
7/~"\nN:/
height=20; .a^/r'?
rDSt
~l
} @emZwN"m
6Z'zB&hM}
} M0]fh5O
0lBl5ke
spacer_1; H37Z\xS
_\1(7 ?0D
:row{ 8cd,SQ}y
!O.B,
:text{ T xN5K`q
gF:wdcO
label=" "; YvU#)M_h
)dvOg'it
} 4@VX%5uy
tF;aB*
accept_button; : Z.mM5
5<S1,u5
can_button; :text{ ES+&e/G"ds
2ru6bIb;
label=""; nd?m+C&W
oL~Yrb%R
} } ^8\pJg_0
"y`?KY$[N
} <6`,)(dj
SY{J
4、编制对话框控制程序(*.lsp) 4C2 Dwj
>Te{a*`"m:
下面给出对话框文件mach001.dcl的控制程序mach001.lsp: WRnUF[y+)
H1@"Yg8
(defun mach001() A/.cNen
l%)XPb2$J
(setq dcl_id (load_dialog "mach001.dcl"))
U]P;X~$!
Ky=&C8b<
(if (not (new_dialog "mach001" dcl_id)) $X{& KLM[
0q3:"X
(exit)) j@:LMR>
<&NR3^Eq
(action_tile "accept" "(draw001)") Z`f _e?
K[9 <a>D`
(action_tile "cancel" "(done_dialog)") 0 Hq$h
'.bMkty#
(setq x (dimx_tile "img") JAn3
d,>l;l
y (dimy_tile "img")) bv] ZUF0
9DT}sCLz:B
(start_image "img") K>q,?x b
}`eeIt I+
(fill_image 0 0 x y 0) 6m{3GKaW~
[m"X*ZF
(slide_image 0 0 x y "mach(mach001)") B^OhL!*tI
z6Hl+nq B
(end_image) EEaFi8
g"!B
|
(start_dialog) =l\D7s
.d*v fE$
(unload_dialog dcl_id) uo%zfi?
2vur_`cV
) 0lEIj/u
h?SUDk:2^
(defun draw001()command "open""mach001") "44X'G8N
c2i^dNp_
5、编制图标菜单 2
o.Mh/D0
e5AiIVlv
本文通过修改AutoCAD主菜单acad.mnu来实现,其操作步骤如下: Lh0<A%
N@) D,~
●在AutoCAD主菜单acad.mnu中加入自己的图标菜单区 1\3n
QM$?}>:
AutoCAD主菜单acad.mnu中的“***IMAGE”表示图标菜单区,对应幻灯片库中的幻灯片、对话框和对话框的控制程序,在图标菜单区加入以下内容(本文给出的是机械图库的图标菜单,电子图库的图标菜单与此类似): .z9JoQ
ycH=L8
***IMAGE mbd@4u
X-%*`XG'
**mach v<c8qg
*AJW8tIP
[电子图库] 2yN~[,L
sQ_{zOUPh
[mach(mach001,mach001)]^C^C(load "mach001");(mach001); dtnAMa5$T
APF-*/K?
[mach(mach002,mach002)]^C^C(load "mach002");(mach002); p3-sEIw}Ru
5bAy@n
_E1:3N|
u=4tW:W,
[mach(mach030,mach030)]^C^C(load "mach030");(mach030); eHv/3"Og
9\dC8
●将图标菜单的加载放到AutoCAD下拉菜单区 -Z#A}h
3cs'Oz<w
在菜单文件acad.mnu中的***POP10(下拉菜单第十区)前加入如下内容(同时将***POP10改为***POP11): , n+dB2\
KI#hII[Q.
***POP10 BO1Mz=q
zIlQqyOQ8
[图形库] DQE.;0ld
~UL;O\-b0
ID-ELE[电子图库]$I=ACAD.ELE + ,H|V\\
YUc&X