万卷书   首页 > 电脑书籍 > 媒体动画其它 > AutoCAD菜单的开发技术
 
菜单模板文件是一个供用户编辑的ASCII文件,在这种文件里包含有较多的注释和适当的分隔符,便于使用者阅读和编辑。AutoCAD载入MNU文件后,它会自动生成一个MNS文件,这个文件也是ASCII码格式,内容与同名MNU文件基本相同,只是去除了多余的注释和分隔部分。AutoCAD将MNS文件作为进一步编译的源文件,MNS文件经过编译之后会生成一个程序可以直接调用的二进制MNC文件以及与之对应的资源文件MNR。这两种文件都是二进制格式,不可以直接编辑,这5种文件之间的关系如图4所示。

  如果用户编辑的菜单命令中包含了AutoLISP表达式,则AutoCAD会将这些表达式存为MNL文件。AutoCAD在调用菜单文件(MNU、MNS、MNC)时,将搜索同名的MNL文件,若找到,则此MNL文件将被同时调入内存。在对其它菜单文件进行更名操作时,一定要同时将相应的MNL文件更名。不然,会因为菜单命令内AutoLISP表达式无法求值而引起错误。菜单文件储存在AutoCAD安装路径的Support子目录下,AutoCAD的标准菜单的文件名是ACAD.MNU。为了学习菜单的定制和开发技术,深入研究一下ACAD.MNU文件是很要必要的。在Support子目录中找到ACAD.MNU文件,用文本编辑器打开它。

  文件的开始处是以“//”开头的几行注释,主要是一些版本和版权信息的描述。注释行之后的第一行描述了该文件定义的菜单组名,该行的语法是:“***MENUGROUP=菜单组名”(如图5所示),

这里的ACAD.MNU文件定义的菜单组名是ACAD。继续分析这个文件,就会发现它是由许多区域组成的,这些区域的共同点就是第一行都是以“***”开头,而且在区域的开始处都有以“//”开头的几行注释来说明此节的功能。区域名声明的语法为:“***SECTION NACE”,表示以下各行为一个区域,区域名为SECTION NAME。三个星号开头的行表示这一区域的区域名,区域名不可以随意定义,AutoCAD只支持下表列出的区域名。
===================================================================================  部分区域名 菜单区域的功能 备注
===================================================================================
***BUTTONSn 第n个定点设备按钮菜单区域 n=1~4
***AUXn 第n个系统定点设备菜单区域 n=1~4
***POPn 第n个菜单区域 n=1~499
****TOOLBARS 工具栏定义区域
***IMAGE 图像控件菜单区域
***SCREEN 屏幕菜单区域
***TABLETn 第n个数字化仪菜单区域 n=1~4
***HELPSTRINGS 帮助文本区域
***ACCELERATORS 快捷键定义区域
===================================================================================  “***BUTTONSn”和“***AUXn”定义了定点设备(如鼠标或数字化仪)的按钮在按下时AutoCAD发生的行为。如果修改了这些区域,AutoCAD的行为将产生很大混乱,甚至可能会导致应用程序的瘫痪。因此,在没有必要的情况下,不要对这两类菜单进行任何修改。

  区域名为“POPn”的菜单项有两类,分别为下拉菜单和快捷菜单。下拉菜单和快捷菜单才是我们通常意义上的Windows标准菜单,即触发时弹出的菜单,这种形式的菜单在Windows中称为级联菜单(也称为步进菜单或层次菜单),下拉菜单总是从菜单栏中下拉,快捷菜单则是显示在图形屏幕上十字光标所在或靠近十字光标的位置,以及图形屏幕、文本窗口、命令行或工具栏区域上光标的位置。快捷菜单通过“$P0=*”菜单命令来访问,该命令由其它菜单项产生,或由AutoLISP或ObjectARX程序发出。例如,在绘图区单击鼠标右键弹出的菜单就是快捷菜单。当快捷菜单被激活时,菜单栏不可用。这两种菜单区域的语法是相同的,对这两类菜单区域进行定制是本文所要讲述的主要内容。
 

上一页 下一页