菜单文件是一种ASCII文本文件,其组成部分定义了用户界面(命令行除外)各部分(例如下拉菜单、工具栏和定点设备上的按钮)的功能。默认的菜单文件是acad.mnu。可以在support文件夹中找到该文件,并在记事本中打开该文件以查看完整菜单文件的外表特征。要打开菜单文件,请在“工具”菜单上单击“自定义”“编辑自定义文件”“当前菜单”。可以创建或修改菜单文件以执行以下操作:添加或更改菜单(包括快捷菜单、图像控件菜单和数字化仪菜单)和工具栏为定点设备上的按钮指定命令创建和修改快捷键添加工具栏提示在状态行上提供帮助文字例如,要添加新菜单,可以修改acad.mnu的相应部分并以新名称保存,或者创建新的菜单文件。在下例中,图形项目需要经常使用半径为1个单位、2个单位或3个单位的圆。要提高工作效率,可以创建一个菜单文件,在该文件中定义带有三个选项的下拉菜单,每个选项的功能是绘制不同半径的圆。要创建菜单文件,请在记事本(或以ASCII格式保存的任何其他文本编辑器)中键入文件内容,然后将此文件以扩展名.mnu保存在AutoCADsupport文件夹中。此例中的菜单文件可以命名为circles.mnu。***MENUGROUP=CIRCLES***POP13//Createscircleswithradii1,2,3Circle-1[Radius-1]^C^C_circle\1Circle-2[Radius-2]^C^C_circle\2Circle-3[Radius-3]^C^C_circle\3菜单文件的第一行始终为Menugroup部分,用于为菜单提供唯一的名称。在此例中,Menugroup的名称为Circles。Menugroup的名称不必与文件名相同。此例中的第二行是部分标签。此菜单是下拉菜单,因此使用带有数值1至16的弹出部分(POP13)。关于下拉菜单和快捷菜单的详细信息,请参见创建下拉菜单和快捷菜单。菜单文件格式:***MENUGROUP=菜单名称(字母数字串)***POPx//注释名称标记(用字母数字,一个菜单中唯一标记)[菜单上显示的标签]菜单宏以两个斜杠(//)开始的第三行是可选注释行,编译菜单时将忽略此行。菜单文件中的注释可用于版权声明、说明或注解。接下来的三行用于定义菜单上的项目。在第一个菜单项中,Circle-1是为菜单项指定的名称标记。括号中的文字[Radius-1]是菜单项标签,用于定义此项目在菜单上的显示。此行剩余部分是菜单宏,菜单宏使用AutoCAD命令和特殊字符绘制半径为1个单位的圆。关于创建菜单宏的信息,请参见创建菜单宏。要在AutoCAD中使用新菜单,请使用MENULOAD命令加载菜单文件circles.mnu。关于加载菜单文件的详细信息,请参见加载和卸载菜单文件。菜单文件结构菜单文件包括若干部分。第一部分始终是Menugroup部分,它为菜单文件指定唯一的菜单组名。菜单组名是一个最多可包含32个字母数字字符的字符串,不能包含空格和标点符号。后续部分定义了AutoCAD界面的特定区域,并包含通常由名称标记、标签和菜单宏组成的菜单项。关于各部分的特定信息,请参见相应部分的主题。菜单文件的各部分由使用格式***section_name的部分标签进行标识。多个按钮部分、辅助部分、弹出部分和数字化仪部分均被编号,例如***POP5。部分标签用户界面区域***MENUGROUP菜单组名***BUTTONSn定点设备按钮菜单***AUXn系统定点设备菜单***POPn下拉菜单和快捷菜单***TOOLBARS工具栏定义***IMAGE图像控件菜单***SCREEN屏幕菜单***TABLETn数字化仪菜单***HELPSTRINGS当亮显下拉菜单或快捷菜单项时,或者当光标位于工具栏按钮上时,显示状态栏中的文字***ACCELERATORS快捷键(或加速键)定义菜单文件中无需包含每个可能的菜单部分。建议创建小菜单文件,以便在需要时加载和卸载(使用MENULOAD和MENUUNLOAD命令)。使用较小的文件能够更好地控制系统资源,并且更容易进行自定义。菜单项对于所有使用菜单项的菜单部分,用于创建菜单项的语法均相同。每个菜单项可以包括名称标记、标签和菜单宏。(有些部分不使用名称标记,也有些部分不使用标签。)名称标记用于标识菜单项。菜单项名称标记是包含字母数字和下划线(_)字符的字符串,可以唯一地标识菜单组中的项目。标签用于定义显示给用户的内容。标签包含在方括号([和])中。菜单宏用于定义菜单项执行的操作。菜单宏也可以定义工具栏按钮的外观和位置等项目。菜单宏可以是用于完成某项任务的按键的简单记录,也可以是命令和编程代码的复杂组合。菜单项通常占据菜单文件的一行,并具有以下格式。name_taglabelmenu_macro在下例的弹出部分中,ID_Quit是名称标记。标签[Exit]用于在菜单中显示“退出”。选定此菜单项时,菜单宏^C^C_quit将取消所有正在运行的命令,并启动QUIT命令。ID_Quit[Exit]^C^C_quit菜单项标签对于各菜单部分,菜单项标签的格式和用法各不不同。没有用于显示信息的界面的菜单部分(例如按钮部分、辅助部分和数字化仪部分)不需要标签;但标签可以用于这些部分中的内部注解。下表说明了菜单文件的不同部分中菜单项标签的使用方法。菜单部分标签的用途POPn定义下拉菜单和快捷菜单的内容和格式TOOLBARS定义工具栏名称、状态(浮动或固定以及隐藏或可见)和位置;还定义各个按钮及其特性IMAGE定义图像控件菜单中显示的文字和图像SCREEN定义屏幕菜单中显示的文本HELPSTRINGS定义与弹出部分和工具栏部分中菜单项相关的状态行帮助ACCELERATORS将键盘操作与菜单宏关联菜单宏菜单宏用于定义选中某个菜单项时要执行的操作。可以使用命令、特殊字符和DIESEL或AutoLISP编程代码创建菜单宏。要在菜单项中包含命令,则必须知道每个命令的提示序列和默认选项。注意因为AutoCAD作了修正和改进,所以许多命令的提示序列(有时甚至是命令名)都有所改变。因此,将自定义菜单升级到AutoCAD的新版本时,可能需要对其稍作更改创建下拉菜单和快捷菜单。下拉菜单和快捷菜单都显示为级联菜单(也称为步进菜单或层次菜单)。快捷菜单有两种类型;它们都在光标所在位置显示。一种是上下文菜单,该菜单在单击右键时显示,用于提供与当前操作或屏幕上光标位置相对应的命令。另一种是对象捕捉菜单,该菜单在按下SHIFT键并单击右键时显示,用于提供对象捕捉和追踪选项。下拉菜单在***POP1到***POP499菜单部分中定义,快捷菜单在***POP0以及***POP500到***POP999菜单部分中定义。下拉菜单最多可以包含999个菜单项。快捷菜单最多可以包含499个菜单项。这两个限制适用于层次结构中的所有菜单。如果菜单文件中的菜单项超过这些限制,AutoCAD将忽略多余项目。如果下拉菜单或快捷菜单比可用显示空间要长,则它会被截断以适应显示空间。下拉菜单总是从菜单栏中下拉,而快捷菜单总是显示在图形区域、文本窗口、命令窗口或工具栏区域中十字光标或光标所在的位置或附近。这两种POPn菜单部分的语法是相同的,只是快捷菜单的标题不出现在菜单栏中。尽管快捷菜单的标题完全不显示,但用户仍然必须输入虚拟的标题。快捷菜单通过$P0=*菜单命令来访问,该命令可以由其他菜单项(例如BUTTONSn菜单项)或者AutoLISP或ObjectARX®程序发出。当快捷菜单被激活时,菜单栏不可用。创建菜单上的分隔线要在菜单上所显示的项目之间创建水平线,请使用包含两个连字号的菜单项标签:[--]每个下拉菜单和快捷菜单的宽度由其最长标签确定,分隔线将扩展以充满菜单的整个宽度。(带有分隔线标签的直线上的菜单宏将被忽略。)创建级联子菜单下拉菜单项标签和快捷菜单项标签用特殊字符(例如-、-和)来控制级联菜单的层次结构。这些特殊字符用于指出子菜单和子菜单的最后一项,还可以结束所有上级菜单。菜单项标签必须以一个特殊字符串开头。特殊字符-指出该菜单项包含子菜单,如下例所示:[-&Zoom]如果下拉“视图”菜单并单击“缩放”,或者将光标移到该项目的右端,都将显示“缩放”子菜单。特殊字符-指出此项目是子菜单的最后一项,如下例所示:[-&Extents]特殊字符--指出该项目是子菜单的最后一项,也是上级菜单的最后一项。例如“修改”菜单中的一些标签:[&Modify][-&Object][-&Text][--&Justify]第一个样例是“修改”菜单的标签。“对象”的标签使用特殊字符指出它包含子菜单。“文字”是“对象”子菜单的一部分,它本身也包含子菜单。“对正”是“文字”子菜单的最后一项,也是“修改”菜单的最后一项。注意最后一行一定要回车!下表中仅介绍了可用于弹出部分标签的非字母数字字符。未列出的非字母数字字符留待以后用作特殊菜单字符。用于弹出菜单部分标签的特殊字符字符说明--扩展为下拉菜单和快捷菜单中的分隔线(使用时不能包括其他字符)。-指出下拉菜单项或快捷菜单项包含子菜单。-指出菜单或子菜单的最后一个下拉菜单项或快捷菜单项。--指出子菜单的最后一个下拉菜单项或快捷菜单项,并结束上级菜单。(一个-用于结束一个上级菜单。)$(如果$(是第一个字符,则下拉菜单或快捷菜单项标签将计算DIESEL字符串宏的值。~禁用菜单项。!.使菜单项带有复选标记。&直接放在某个字符之前,将该字符指定为下拉菜单或快捷菜单标签的菜单访问键。例如,S&le将显示Sample(其中字母a带有下划线)。/c指定下拉菜单或快捷菜单标签的菜单访问键。例如,/aSample将显示Sample(其中字母a带有下划线)。\t将这些字符右边的所有标签文字推到菜单右侧。菜单宏菜单项中的宏可以简单到只是一个命令:Line[Line]line名称标记为Line,标签为[Line],菜单宏为line(用于启动LINE命令)。在下一个菜单项样例中,菜单宏^C^C_circle\1用于绘制半径为1个单位的圆。Circle-1[Radius-1]^C^C_circle\1特殊字符^C^C用于取消所有正在运行的命令。特殊字符下划线(_)自动将其后的命令翻译为其他语言。条目circle用于启动CIRCLE命令。特殊字符反斜杠(\)用于创建停顿,以便用户指定中心点。条目1用于响应半径提示。关于能够在菜单宏中使用的特殊字符的列表,请参见在菜单宏中使用特殊控制字符。除了命令和特殊字符外,还可以使用DIESEL(直接解释求值字符串表达式语言)和AutoLISP。请参见“DIESEL”。取消正在运行的命令要确保在执行菜单宏之前没有运行任何AutoCAD命令,请在菜单宏的起始处使用^C^C。这相当于按ESC键两次。虽然单个^C能取消大多数命令,但要从标注命令返回命令提示必须使用^C^C;因此最好使用^C^C。终止菜单宏菜单宏中的每个字符(即使是空格)都是有意义的。当选中一个菜单项时,AutoCAD在处理命令序列前先在宏的末尾放置一个空格。AutoCAD处理下列菜单项中的宏的方式与用户输入line、然后按空格键完成命令的方式相同:Line[Line]line在某些情况下,宏需要特殊结束符。某些命令(例如TEXT)必须通过按ENTER键而不是空格键来终止。某些命令需要多个空格(或ENTER键)才能完成,但是有些文本编辑器无法创建带有后续空格的行。两条特别惯例解决了这些问题。菜单宏中的分号(;)相当于ENTER键。如果行是以控制字符、反斜杠(\)、正号(+)或分号(;)结尾,则AutoCAD不在行末添加空格。如果下例中的菜单项只是以反斜杠(暂停宏以便用户输入)结束,将无法完成ERASE命令,因为AutoCAD不会在反斜杠后添加空格。因此,菜单宏使用分号(;),相当于在用户输入后按ENTER键。Erase1[Erase1]erase\;比较以下菜单项:UCS[UCS]ucsUCSWo