定制自己的AutoCAD图形界面 AutoCAD强大的功能和良好的适用性，使它在微机硬件条件下实现了原来需要在SGI图形工作站上才能实现的功能，已成为计算机辅助设计(CAD)行业事实上的软件标准，尤其是AutoCAD R14版是国内使用最广泛的计算机绘图软件。国内多家CAD公司如：华中InteCAD、正直CAD等都是在AutoCAD R14的内核基础上做的汉化和二次开发。 你也想定制自己的AutoCAD图形界面和菜单吗？其实很简单，AutoCAD中有一“menu”命令，可调用所需的菜单模板文件(AutoCAD Menu Template)“.mnu”，而菜单模板文件的内容就是你所需的图形界面和菜单。.mnu文件可用文本文件编辑器来打开，AutoCAD R14默认的菜单文件就是AutoCAD R14安装目录中Support子目录下的ACAD.mnu文件。双击该文件，提示“该文件太大，无法用记事本打开，要用写字板来读取该文件吗？”单击“是”后，ACAD.mnu文件被写字板打开。可以看到文件的开头是版本信息和注释(以“//”开头)，然后依次是数字按钮菜单(//Begin AutoCAD Digitizer Button Menus)、下拉菜单(//Begin AutoCAD Pull-down Menus)、工具栏(//Begin AutoCAD ToolBars)、图像菜单(//Begin AutoCAD Image Menus)、屏幕菜单(//AutoCAD Screen Menus)、写字板菜单(//Begin AutoCAD Tablet Menus)，最后是AutoCAD R14的标识符ID name和命令提示(***HELPSTRINGS)。其中，屏幕菜单又分命令菜单command menus 和选项菜单options menus。熟悉了这些菜单的功能和语法，你就可以定制自己的图形界面和菜单了。

一、自己汉化AutoCAD

1. 汉化下拉菜单(Pull-down Menus)
将***POP1～***POP10中[ ]内的英文命令改为中文命令即可。以“File”菜单为例，其余菜单类似。
汉化前的文件:
***POP1
**FILE
ID_MnFile　　　 [&File]
ID_New 　　　　 [&New...\tCtrl+N]^C^C_new
ID_Open 　　　　[&Open...\tCtrl+O]^C^C_open
[--]
ID_Save 　　　　[&Save\tCtrl+S]^C^C_qsave
ID_Saveas 　　　[Save &As...]^C^C_saveas
ID_Export　　　 [&Export...]^C^C_export
[--]
ID_Config 　　　[P&rinter Setup...]^C^C_config
ID_Preview 　　 [Print Pre&view]^C^C_preview
ID_Print 　　　 [&Print...\tCtrl+P]^C^C_plot
[--]
ID_MnDrawing　　[->Drawing &Utilities]
ID_Audit 　　　 [&Audit]^C^C_audit
ID_Recover 　　 [&Recover...]^C^C_recover
[--]
ID_MnPurge 　　 [->&Purge]
ID_PurgeAll 　　[&All]^C^C_purge _a
[--]
ID_PurgeLay　　 [&Layers]^C^C_purge _la
ID_PurgeLin 　　[Li&netypes]^C^C_purge _lt
ID_PurgeTxt 　　[&Text Styles]^C^C_purge _st
ID_PurgeDim 　　[&Dimension Styles]^C^C_purge _d
ID_PurgeMln　　 [&Multiline Styles]^C^C_purge _m
ID_PurgeBlk 　　[&Blocks]^C^C_purge _b
ID_PurgeShp 　　[<-<-&Shapes]^C^C_purge _sh
ID_SendMail 　　[Sen&d...]
[--]
ID_MRU 　　　　 [Drawing Histo&ry]
[--]
ID_Quit 　　　　[E&xit]^C^C_quit

如图一所示为原AutoCAD R14界面和“File”下拉菜单内容。

汉化后的文件：
***POP1
**FILE
ID_MnFile　　　　　[文件&F]
ID_New　　　　　　 [新建&N...\tCtrl+N]^C^C_new
ID_Open　　　　　　[打开&O...\tCtrl+O]^C^C_open
[--]
ID_Save　　　　　　[存盘&S\tCtrl+S]^C^C_qsave
ID_Saveas　　　　　[另存为&A...]^C^C_saveas
ID_Export　　　　　[输出&E...]^C^C_export
[--]
ID_Config　　　　　[打印机配置&R...]^C^C_config
ID_Preview　　　　 [打印预览&V]^C^C_preview
ID_Print　　　　　 [打印&P...\tCtrl+P]^C^C_plot
[--]
ID_MnDrawing　　　 [->图形管理&U]
ID_Audit　　　　　 [审计&A]^C^C_audit
ID_Recover　　　　 [<-修复出错图形&R...]^C^C_recover
[--]
ID_MnPurge　　　　 [->清除&P]
ID_PurgeAll　　　　[全部&A]^C^C_purge _a
[--]
ID_PurgeLay　　　　[图层&L]^C^C_purge _la
ID_PurgeLin　　　　[线形&N]^C^C_purge _lt
ID_PurgeTxt　　　　[文字类型&T]^C^C_purge _st
ID_PurgeDim　　　　[标注类型&D]^C^C_purge _d
ID_PurgeMln　　　　[多线类型&M]^C^C_purge _m
ID_PurgeBlk　　　　[图块&B]^C^C_purge _b
ID_PurgeShp　　　　[<-造型&S]^C^C_purge _sh
ID_SendMail　　　　[发送&D...]
[--]
ID_MRU　　　　　　　[图形历史记录&R]
[--]
ID_Quit　　　　　　[退出&X]^C^C_quit

如图二所示为汉化后的"文件"下拉菜单内容。

2. 汉化工具栏
将***TOOLBARS中" "内的英文命令改为中文命令即可。以标准工具栏为例，其余工具栏类似。
汉化后的标准工具栏：
**TB_STANDARD
ID_TbStandar　[_Toolbar("_标准工具条", _Top, Show, 0, 0, 2)]
ID_New　　　　[_Button("新建", ICON_16_NEW,ICON_24_NEW)]^C^C_new
ID_Open　　　 [_Button("打开", ICON_16_OPEN,ICON_24_OPEN)]^C^C_open
ID_Save　　　 [_Button("存盘", ICON_16_SAVE,ICON_24_SAVE)]^C^C_qsave
[--]
ID_Print　　　[_Button("打印", ICON_16_PRINT,ICON_24_PRINT)]^C^C_plot
ID_Preview　　[_Button("打印预览",ICON_16_PREVIEW, ICON_24_PREVIEW)]^C^C_　　　　　　　　 preview
ID_Spell　　　[_Button("拼写检查",ICON_16_SPELL,ICON_24_SPELL)]^C^C_spell
[--]
ID_Cutclip　　[_Button("修剪到剪切板",ICON_16_CUT, ICON_24_CUT)]'_cutclip
ID_Copyclip　 [_Button("复制到剪切板",ICON_16_COPY,ICON_24_COPY)]'_copyclip
ID_Pasteclip　[_Button("从剪切板粘贴",ICON_16_PASTE, ICON_24_PASTE)]'_pas　　　　　　　　 teclip
ID_Matchprop　[_Button("特性匹配",ICON_16_MATCH, ICON_24_MATCH)]matchprop
[--]
ID_U　　　　　 [_Button("回退", ICON_16_UNDO,ICON_24_UNDO)]_u
ID_Redo　　　　[_Button("重做", ICON_16_REDO,ICON_24_REDO)]^C^C_redo
[--]
ID_Browser　　 [_Button("网络浏览器",ICON_16_URL,ICON_24_URL)]^C^C_　　　　　　　　　　　　browser;;
[--]
ID_TbOsnap　　 [_Flyout("物体捕捉",ICON_16_OSNAP, ICON_24_OSNAP,OtherIcon, 　　　　　　　　ACAD.TB_OBJECT_SNAP)]
ID_TbUcs　　　 [_Flyout("坐标系", ICON_16_UCS,ICON_24_UCS,_OtherIcon,　　　　　　　　　　　ACAD.TB_UCS)]
ID_TbInquiry　 [_Flyout("查询", ICON_16_LIST,ICON_24_LIST,_OtherIcon,　　　　　　　　　　　ACAD.TB_INQUIRY)]
[--]
ID_Redrawall　 [_Button("重画全部Redraw All",ICON_16_REDRAW,ICON_24_　　　　　　　　　　　　REDRAW)]^C^C_redrawall
[--]
ID_Dsviewer　　[_Button("航空视图Aerial View",ICON_16_AERIAL,ICON_24_　　　　　　　　　　　AERIAL)]'_dsviewer
ID_TbViewpoi　 [_Flyout("三维观察Viewpoint",ICON_16_DDVIEW,ICON_24_　　　　　　　　　　　　DDVIEW,OtherIcon, ACAD.TB_VIEWPOINT)]
[--]
ID_Pan　　　　 [_Button("实时平移",ICON_16_RTPAN, ICON_24_RTPAN)]'_pan
ID_ZoomRealt　 [_Button("实时缩放",ICON_16_RTZOOM, ICON_24_RTZOOM)]'_zoom;
ID_TbZoom　　　[_Flyout(" 缩放", ICON_16_ZOOM,ICON_24_ZOOM, _OtherIcon,　　　　　　　　　　ACAD.TB_ZOOM)]
ID_ZoomPrevi　　[_Button(" 前一视图",ICON_16_ZOOPRE, ICON_24_ZOOPRE)]'　　　　　　　　　　　 _zoom;_p
[--]
ID_Help　　　　 [_Button("帮助",ICON_16_HELP,ICON_24_HELP)]^C^C^P 　　　　　　　　　　　　　(help"rd.hlp")

3. 汉化快捷菜单
按住"Shift"键，在绘图区右击鼠，就会弹出AutoCAD的标快捷菜单。将***POP0中[ ]内的英文命令改为中文命令即可。
汉化后的文件：
***POP0
**SNAP
// Shift-right-click
[物体捕捉菜单&O]
ID_Tracking　　　　　　　　　　 [追踪&K]_tracking
ID_From　　　　　　　　　　　　 [从&F]_from
ID_MnPointFi　　　　　　　　　　[->点&过滤]
ID_PointFilx　　　　　　　　　　[.X].X
ID_PointFily　　　　　　　　　　[.Y].Y
ID_PointFilz　　　　　　　　　　[.Z].Z
[--]
ID_PointFixy　　　　　　　　　　[.XY].XY
ID_PointFixz　　　　　　　　　　[.XZ].XZ
ID_PointFiyz　　　　　　　　　　[<-.YZ].YZ
[--]
ID_OsnapEndp　　　　　　　　　　[端点&E]_endp
ID_OsnapMidp　　　　　　　　　　[中点&M]_mid
ID_OsnapInte　　　　　　　　　　[交点&I]_int
ID_OsnapAppa　　　　　　　　　　[虚交点&A]_appint
[--]
ID_OsnapCent　　　　　　　　　　[中心点&C]_cen
ID_OsnapQuad　　　　　　　　　　[四分圆点&Q]_qua
ID_OsnapTang　　　　　　　　　　[切线点&T]_tan
[--]
ID_OsnapPerp　　　　　　　　　　[垂线点&P]_per
ID_OsnapNode　　　　　　　　　　[节点&D]_nod
ID_OsnapInse　　　　　　　　　　[插入点&S]_ins
ID_OsnapNear　　　　　　　　　　[最近点&R]_nea
ID_OsnapNone　　　　　　　　　　[无&N]_non
[--]
ID_Osnap　　　　　　　　　　　　[捕捉设置...&O]'_osnap

图三所示为汉化后的快捷菜单内容。

4. 汉化命令提示
在ACAD.mnu文件的末尾***HELPSTRINGS字段是AutoCAD的标识符ID name，用来对AutoCAD命令在状态栏进行提示。不论是下拉菜单命令、快捷菜单命令还是工具栏命令，只要在菜单文件.mnu中使用规定的ID name，就可在状态栏显示帮助提示。同样将[ ]内的英文提示改为中文提示即可：
***HELPSTRINGS
ID_3darray　　　　　　　　　　[创建一个三维阵列: 3darray]
ID_3dface　　　　　　　　　　 [创建一个三维面: 3dface]
ID_3dmesh　　　　　　　　　　 [创建自由格式的多边形网格: 3dmesh]
ID_3dpoly　　　　　　　　　　 [创建一条含有三维空间信息的连续直线: 3dpoly]
ID_3dsin　　　　　　　　　　　[输入一个3D Studio 文件: 3dsin]
见图三状态栏中的快捷菜单命令帮助提示。

二、定制自己的菜单

熟悉了菜单文件的功能和语法就可以用命令标识符来定制自己的菜单了。以新增下拉菜单"红海扩充&B"为例（//后为注释，文件中应无此内容），语法一般为：
ID name[菜单显示命令及快捷键]命令参数和AutoCAD命令符
其中：ID name可有可无（如无则在状态栏没有该命令的帮助提示，也可以在***HELPSTRINGS字段中定义后使用自己的ID name；[]中，->为有下级菜单，<-表示下级菜单结束，...为有对话框；
命令参数中，^C^C表示终止前一指令。

***POP11 //下拉菜单第11项[红海扩充&B]//下拉菜单名
ID_MNBnsText　　　　　　　　　　[->文字&E]
ID_TEXT_M　　　　　　　　　　　 [字 型..]^P_style
ID_TEXT_Dt　　　　　　　　　　　[写 文 字]^C^C_dtext
ID_TEXT_Dde　　　　　　　　　　 [文字编缉...]^C^Crd-text1
ID_TEXT_XY　　　　　　　　　　　[文字对位]^C^C^Crd-xytext1
[--]//分隔线
ID_BnsTxtfit　　　　　　　　　　[拟合文字&F]^C^Ctextfit
ID_BnsTxtmsk　　　　　　　　　　[文字遮掩&M]^C^Ctextmask
ID_BnsChtext　　　　　　　　　　[改变文字&C]^C^Ccht
ID_BnsTxtexp　　　　　　　　　　[炸开文字&X]^C^Ctxtexp
ID_BnsArctxt　　　　　　　　　　[弧线布置文字&A]^C^C_.arctext
ID_BnsFind　　　　　　　　　　　[查找替换文字&R...]^C^Cfind
[--]
ID_BnsBurst　　　　　　　　　　 [炸开为文字&P]^C^Cburst
ID_BnsGatte　　　　　　　　　　 [<-通用属性编辑&G]^C^Cgatte

ID_MNBnsLayr　　　　　　　　　　[->图层&L]
ID_BnsLayman　　　　　　　　　　[图层管理&L...]^C^Clman
[--]
ID_BnsLaymch　　　　　　　　　　[图层匹配&M]^C^Claymch
ID_BnsLaycur　　　　　　　　　　[改变到当前图层&C]^C^Claycur
ID_BnsLayiso　　　　　　　　　　[图层隔离&I]^C^Clayiso
[--]
ID_BnsLayfrz　　　　　　　　　　[图层冻结&F]^C^Clayfrz
ID_BnsLayoff　　　　　　　　　　[图层关闭&O]^C^Clayoff
[--]
ID_BnsLaylck　　　　　　　　　　[锁住图层&K]^C^Claylck
ID_BnsLayulk　　　　　　　　　　[解开图层&U]^C^Clayulk
[--]
ID_BnsLayon　　　　　　　　　　 [显示所有图层&N]^C^Clayon
ID_BnsLaythw　　　　　　　　　　[<-解冻所有图层&T]^C^Claythw

ID_MNBnsMdfy　　　　　　　　　　[->修改&M]
ID_BnsChgprp　　　　　　　　　　[扩展属性修改&E]^C^Cexchprop
ID_BnsMstrch　　　　　　　　　　[多重实体拉伸&M]^C^Cmstretch
ID_BnsMocoro　　　　　　　　　　[移动复制旋转&O]^C^C_.mocoro
ID_BnsExtrim　　　　　　　　　　[沿曲线修剪&T]^C^Cextrim
ID_BnsClipit　　　　　　　　　　[扩展裁剪&L]^C^Cclipit
ID_BnsMpedit　　　　　　　　　　[多义线编辑&P]^C^Cmpedit
[--]
ID_BnsXplode　　　　　　　　　　[扩展炸开&X]^C^Cxplode
ID_BnsNcopy　　　　　　　　　　 [复制嵌套实体&C]^C^Cncopy
ID_BnsTrmblk　　　　　　　　　　[图块实体修剪&R]^C^Cbtrim
ID_BnsExtblk　　　　　　　　　　[<-图块实体扩展&N]^C^Cbextend
ID_MNBnsDraw　　　　　　　　　　[->绘制&D]
ID_BnsWipout　　　　　　　　　　[擦除&W]^C^C_.wipeout
ID_BnsRevcld　　　　　　　　　　[绘制云&R]^C^Crevcloud
ID_BnsLeader　　　　　　　　　　[->引出线工具&L]
ID_BnsQleadr　　　　　　　　　　[快速绘制&Q]^C^C_.qleader
[--]
ID_BnsQlatch　　　　　　　　　　[注解附加引出线&A]^C^C_.qlattach
ID_BnsQldtch　　　　　　　　　　[注解分离引出线&D]^C^C_.qldetachset
ID_BnsQlatal　　　　　　　　　　[<-<-注解附加通用引出线&G]^C^C_.qlattachset
ID_MNBnsTool　　　　　　　　　　[->工具&T]
ID_BnsPopup　　　　　　　　　　 [弹出菜单&U]^C^C(bonuspopup)
ID_BnsPakngo　　　　　　　　　　[图象打包&P...]^C^C_.Pack
ID_BnsPcnvrt　　　　　　　　　　[复合线转化&C]^C^C_.convertplines
ID_BnsGetsel　　　　　　　　　　[获得选择集&G]^C^Cgetsel
ID_BnsAlias　　　　　　　　　　 [命令行编辑&A...]^C^Caliasedit
ID_BnsSysvar　　　　　　　　　　[系统变量编辑&V...]^C^C_.sysvdlg
ID_BnsXrflst　　　　　　　　　　[列出外部引用/图块 实体&L]^C^Cxlist
[--]
ID_BnsXdata　　　　　　　　　　 [扩展数据附加&X]^C^Cxdata
ID_BnsXdlist　　　　　　　　　　[列出实体扩展数据&D]^C^Cxdlist
[--]
ID_BnsDimex　　　　　　　　　　 [标注类型输出&E...]^C^C_.dimex
ID_BnsDimim　　　　　　　　　　 [<-标注类型输入&I...]^C^C_.dimim
[--]
ID_MNBnsBout　　　　　　　　　　[关于扩充命令的信息&BNSABOUT]
ID_MNBnsHelp　　　　　　　　　　[在线帮助&H...]^C^C(help"ac_bonus.hlp")
[--]
[关于郭红海汉化组件RED&AceV1.0...]^C^C^P(princ) (alert "此组件由郭红海汉化！欢迎多提宝贵意　　　　　　　　　　　　　　　　　　　见。") ^P //调用外部程序y2ktest.exe，该程序必　　　　　　　　　　　　　　　　须在所安装的AutoCAD R14目录中，否则显示"未安装　　　　　　　　　　　　　　　　本组件!"；
ID_Menuload　　　　　　　　　　[调入菜单文件: &menuload]
[->关于郭红海其它软件系统&REDSEA]
[千年虫测试&Y]^C^C^P(if (startapp 　　　　　　　　　　　　　　　　　　　　　　(findfile"y2ktest.exe")) (princ) (alert "未安　　　　　　　　　　　　　　　　装本组件!")) ^P
三、菜单命令的调用

按以上所述编辑好ACAD.mnu文件后，将文件另存为pacad.mnu。运行AutoCAD R14，在命令行输入命令menu,在对话框的文件类型中选"Menu Template (*.mnu)"，在文件列表中选编辑好的pacad.mnu文件。单击"打开"，并按提示确认。AutoCAD将其编译分别生成AutoCAD Compiled Menu文件pacad.mnc、AutoLISP Menu Source文件pacad.mnl、AutoCAD Menu Resource文件pacad.mnr和 AutoCAD Menu Source文件pacad.mns，等待几秒后，你自己特有的AutoCAD图形界面生成了。

其实，AutoCAD中很多内容都可以定制，如：通过编辑Support子目录下的acad.lin文件，可以定义AutoCAD的线型；编辑acad.pgp文件，还可以定义在AutoCAD命令行中调用外部命令，为常用命令定义缩写或别名等。这些改动都比较类似，参照原文件多试几次就可搞定。怎么样，软件也可以DIY！
（郭红海）