34.1.1菜单文件简介
菜单文件用于定义菜单,AutoCAD系统中所使用的菜单均保存在相应的菜单文件中。AutoCAD中的菜单是人机交互的主要方式,并且具有几种不同的形式,即菜单区域。在菜单文件中对以下几种菜单区域的功能和外观进行了定义:
(1)定点设备按钮菜单
(2)下拉菜单和快捷菜单
(3)工具栏
(4)图像控件菜单
(5)屏幕菜单
(6)数字化仪菜单
(7)帮助字符串和工具栏提示
(8)键盘加速键
在AutoCAD启动时,系统会自动装入菜单文件ACAD.MNC(或ACAD.MNS、ACAD.MNU)。用户可以根据需要通过修改菜单文件来定制菜单,也可以创建自定义的菜单文件。
34.1.2菜单文件的类型
在AutoCAD2002系统中,可以看到如下几种类型的菜单文件,具体内容见表34-1。
表34-1菜单文件类型说明
文件类型
说明
*.MNU
样板菜单文件(文本文件),记录着菜单的功能和结构。
*.MNC
编译后的菜单文件(二进制文件),可被AutoCAD直接使用,包含定义菜单功能和外观的命令字符串和菜单语法。
*.MNR
菜单资源文件(二进制文件),包含由菜单使用的位图(.BMP)。
*.MNS
菜单源文件(文本文件,由AutoCAD生成)
*.MNT
菜单资源文件。在*.MNR文件无效(例如,只读)时生成该文件。
*.MNL
与菜单配套的AutoLISP程序。这些文件包含由菜单文件使用的AutoLISP表达式。当加载同名的菜单文件时,这些文件也载入内存。
MNS文件是ASCII文件,最初与MNU文件相同。用户在AutoCAD界面中修改菜单文件的内容后(如修改菜单栏),MNS文件也被修改。MNS文件不能直接为AutoCAD使用,而是需编辑为同名的MNC文件。
每当AutoCAD编译一个MNC文件后,便会生成一个菜单源文件(MNR文件),该文件包含菜单中要用到的位图。
生成MNS文件后,如果修改了MNU文件,必须重新加载MNU文件以便AutoCAD生成新的MNS和MNC文件,确认所做的修改。
用户可直接对其中文本格式的菜单文件进行编辑,以实现对菜单的定制。当然,前提是用户应对菜单文件的结构和格式有着充分的了解。
34.1.3菜单文件的结构
AutoCAD采用层次结构来管理菜单文件,首先菜单文件按其功能的不同分为几个部分,每个部分中都包含菜单项,它为与菜单选项相关的外观和操作提供指示。菜单文件的各部分用部分标签来标识,其格式为:
***section_name
表34-2中列出了各个部分标签及其说明。
表34-2部分标签及说明
部分标签
说明
***MENUGROUP
定义菜单文件组
***BUTTONSn
定义定点设备按钮功能
***AUXn
定义系统定点设备菜单
***POPn
定义下拉菜单和快捷菜单
***TOOLBARS
定义工具栏按钮功能
***IMAGE
定义图像控件菜单
***SCREEN
定义屏幕菜单
***TABLETn
定义数字化仪菜单
***HELPSTRINGS
定义菜单项和工具栏按钮的提示信息
***ACCELERATORS
定义加速键
菜单文件中各部分中的第二层结构用**标识,第二层结构下则为菜单项的具体定义。
菜单文件中的注释行以“//”为标识,菜单编译器将忽略“//”开始的行。
注意菜单文件不要求包括所有的菜单部分,而只需要适用于应用程序的菜单部分。因此用户在编写菜单文件时,可以将菜单划分为几个小菜单文件,以便按需加载或卸载,使开发和维护工作更加容易。
34.1.4菜单文件的加载
1.基本菜单与局部菜单
在AutoCAD中加载菜单文件时,分为使用基本菜单和局部菜单的两种情况。基本菜单是菜单界面的基础,如果用户将某个菜单文件作为基本菜单加载,则系统自动取消原有的菜单文件,即新的基本菜单将替换原来的菜单。
加载基本菜单的方法为:
命令行:menu
调用该命令后,系统弹出“SelectMenuFile(选择菜单文件)”对话框,提示用户选择要加载的菜单文件。
局部菜单可以与基本菜单一起使用,即用户加载局部菜单时,原有菜单并不发生变化。使用局部菜单可使用户在菜单栏上增加或重新调整菜单。加载局部菜单后,该菜单所定义的全部菜单区域都被载入AutoCAD且都可以使用,但下拉菜单并不直接显示出来,需要用户使用菜单命令,用AutoLISP将它们插入到菜单栏中。
加载局部菜单的方法为:
菜单:【Tools(工具)】→【Customize(自定义)】→【Menu…(菜单)】
命令行:menuload
调用该命令后,将弹出“MenuCustomization(菜单自定义)”对话框,如图34-1所示。
在该对话框中,用户单击Browse...按钮,弹出“SelectMenuFile(选择菜单文件)”对话框,选择需加载的菜单文件并返回。这时,“FileName(文件名称)”编辑框中将显示出将被加载的菜单文件名称,用户单击Load按钮后,该文件的组名将出现在“MenuGroups(菜单组)”列表框里,即该菜单文件被加载到系统中。
与基本菜单不同的是,局部菜单还可以根据需要进行卸载。卸载局部菜单不会影响到其他未卸载菜单的使用。
卸载局部菜单的方法为:
菜单:【Tools(工具)】→【Customize(自定义)】→【Menu…(菜单)】
命令行:menuunload
调用该命令后,将弹出与图34-1完全相同的“MenuCustomization(菜单自定义)”对话框。用户在“MenuGroups(菜单组)”列表框里选择需卸载的菜单项,然后单击Unload按钮即可进行卸载。
当用户退出AutoCAD时,AutoCAD记录基本菜单的名称、最多24个局部菜单(由它们的菜单组定义)的名称和最多24个当前菜单栏中存在的菜单,并在下一次启动时加载该菜单文件。这确保AutoCAD界面在各任务期间保持不变。
2.菜单文件加载过程
如果用户使用对话框来选择需要加载的菜单文件,系统将根据用户所选择的菜单文件类型进行如下操作:
(1)如果用户选择了MNC文件,则系统直接加载它。
(2)如果用户选择了MNS文件,则系统在同一目录查找与其同名的MNC文件。如果找到该文件就加载它,否则系统将编译MNS文件来生成MNC文件并加载它。
(3)如果用户选择的是MNU文件,则系统将其编译成MNC和MNS文件,并加载MNC文件。
(4)无论采用上述何种方式,系统都在加载MNC文件后,查找相应的LISP菜单文件(MNL文件)。如果找到该文件,执行文件中的AutoLISP表达式。
当系统变量FILEDIA设为0时,用户需要在命令行中指定要加载的菜单文件。这种情况下AutoCAD将按下面的顺序查找、加载菜单文件:
(1)根据搜索路径搜索源菜单文件(MNS文件)
如果找到了MNS文件,AutoCAD在同一目录查找编译后的同名菜单文件(MNC文件)。如果找到同名的MNC文件,而且该文件的日期比相应的MNS文件要晚,则AutoCAD加载该文件。否则AutoCAD编译MNS文件,在同一目录中生成新的MNC文件,并加载它。
如果没有找到MNS文件,AutoCAD根据搜索路径查找编译后的同名菜单文件(MNC文件)。如果找到该文件,加载它。
如果既没有找到MNS文件,也没有找到MNC文件,AutoCAD将根据搜索路径查找同名的菜单样板文件(MNU文件)。如果找到了文件,将其编译成MNC和MNS文件,加载MNC文件。
如果没有找到上述任一文件,AutoCAD给出提示信息,并提示使用其他菜单文件名。
(2)加载MNC文件后,AutoCAD查找LISP菜单文件(MNL文件)。如果找到该文件,执行文件中的AutoLISP表达式。