AutoCAD菜单的开发技术(1)

来源:岁月联盟 编辑:zhuzhu 时间:2006-11-06
AutoCAD菜单的开发技术(1)内容简介:AutoCAD作为一款强大的工程绘图软件,已经成为工程人员工作中不可缺少的重要工具。AutoCAD的主要命令方式是命令行,几乎所有的操作都可以通过相应的键盘命令来完成。除此之外,Autodesk公司还提供了丰富的快捷菜单和工具栏

AutoCAD作为一款强大的工程绘图软件,已经成为工程人员工作中不可缺少的重要工具。AutoCAD的主要命令方式是命令行,几乎所有的操作都可以通过相应的键盘命令来完成。除此之外,Autodesk公司还提供了丰富的快捷菜单和工具栏以提高用户的工作效率。但由于用户的专业不同,因此缺省的菜单往往不能完全满足不同专业的需要。如果能够根据自己的需要和习惯来合理的安排菜单的内容和布局,将能够使工作效率大幅度提高。

一、删除和插入菜单

要想对菜单进行定制,首先应该了解删除和插入菜单的方法。AutoCAD本身就提供了一些定制菜单的方法,下面我们将以AutoCAD 2000中文版为蓝本,具体介绍删除和插入菜单的操作方法。

也许您并不经常使用AutoCAD的“帮助”功能,下面的操作将删除AutoCAD标准菜单中的“帮助”菜单。删除菜单最简单的方法就是选择“工具”菜单下的“自定义菜单”命令,之后将出现“菜单自定义”对话框,该对话框分为“菜单组”和“菜单栏”两个选项卡。选择“菜单栏”选项卡,然后在“菜单栏”列表中选中“帮助”项,单击“删除”按钮来删除选中的“帮助”菜单,如图1所示。单击“关闭”按钮关闭对话框。此时帮助菜单已经被删除了。

图1

与删除菜单相比,插入菜单的操作显得更为常用,毕竟多数时候我们是想对软件的功能进行扩充。AutoCAD 2000可以通过外部数据库来管理您的工作,但是AutoCAD的标准菜单栏并未提供有关数据库的功能。下面我们就将管理数据库的Data View(查看数据)菜单插入菜单栏中。

按照前面的方法打开“菜单自定义”对话框,单击选择“菜单组”选项卡,此时“菜单组”列表中有一个ACAD菜单组,这个菜单组就是AutoCAD的标准菜单组,包含了标准AutoCAD菜单栏中的全部11个菜单,而“查看数据”菜单并不包含在标准的ACAD菜单组中,所以必须装载包含此菜单的dbConnect菜单组。单击“浏览”按钮,打开“选择菜单文件”对话框,选择包含dbConnect菜单组文件dbcon.mun,单击“打开”按钮打开该文件,在弹出的提示对话框中单击“是”按钮(如图2所示),

图2

生成MNS文件。这样“菜单组”列表中就增加了dbConnect菜单组。选择“菜单栏”选项卡,在“菜单组”列表框中选择dbConnect菜单组,在“菜单”列表框中选择“查看数据”菜单,选择插入位置后单击“插入”按钮(如图3所示),单击“关闭”按钮关闭对话框。这样,“查看数据”菜单就被插入到菜单栏中。

二、了解菜单文件内幕

通过第一节的介绍我们会发现,AutoCAD提供的菜单定制功能十分简单,不能满足各种专业的需要,那么AutoCAD的强大定制功能是如何实现的呢?原来AutoCAD的菜单文件是使用ASCII码格式存储的文件,使用任何文本编辑器都可以编辑。只要懂得菜单文件的格式和语法,就可以定制执行各种命令的菜单。这种定制方法尽管比较繁琐难学,但却为AutoCAD的菜单开发提供了更广阔的空间,下面我们就能深入研究菜单文件内幕。

菜单文件用于定义和显示AutoCAD中的各种菜单。菜单文件实际上是功能与格式各不相同的一组文件:MNU文件是模板菜单文件,是ASCII码格式;MNS文件是菜单源文件,也是ASCII码格式;MNR文件是菜单资源文件,二进制格式,包含菜单所用的资源;MNC文件是经过编译的菜单文件,AutoCAD可以识别的二进制格式;MNL文件是菜单LISP文件,包含菜单文件所用AutoLISP表达式;MND文件则是包含宏定义的特定菜单源文件,不经常使用。在这些文件当中,我们真正关心的是可以编辑的ASCII码文件,特别是MNU文件。如果了解这些菜单文件的生成和调用过程,就可以理解我们只关心MNU文件的原因了,因为其它菜单文件都是MNU文件生成的。

菜单模板文件是一个供用户编辑的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所示)。

图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程序发出。例如,在绘图区单击鼠标右键弹出的菜单就是快捷菜单。当快捷菜单被激活时,菜单栏不可用。这两种菜单区域的语法是相同的,对这两类菜单区域进行定制是本文所要讲述的主要内容。

图片内容