计算机图形学8讲课稿.ppt
计算机图形学8 1 概述概述 图形软件的研究和开发的模式:图形软件的研究和开发的模式:1)完全自主开发)完全自主开发 国内开发的自主版权图形软件:国内开发的自主版权图形软件:开目开目CADCAD、CAXACAXA等等 2)在通用几何平台上开发)在通用几何平台上开发 当前最流行的两种几何造型平台:当前最流行的两种几何造型平台:Parasolid Parasolid ACIS ACIS 3)在通用图形支撑软件上定制图形应用软件)在通用图形支撑软件上定制图形应用软件2AutoCAD 软件的定制(用户化开发)软件的定制(用户化开发)3 AutoCAD是开放式结构的通用绘图系统,用户可以根据需要是开放式结构的通用绘图系统,用户可以根据需要扩展和调整扩展和调整 AutoCAD 的功能。的功能。AutoCAD 用支持文件保存用户自定义、加载用支持文件保存用户自定义、加载 AutoLISP 和和 ObjectARX 应用程序以及描述文字字体等。许多支持文件是文本文件,可以用文本编应用程序以及描述文字字体等。许多支持文件是文本文件,可以用文本编辑器进行修改。辑器进行修改。(1)AutoCAD中自定义的支持文件中自定义的支持文件文件文件 说明说明*.ahp AutoCAD 帮助文件。相关的帮助索引文件的扩展名为帮助文件。相关的帮助索引文件的扩展名为.hdx。asi.ini 数据库连接的转换映射文件。数据库连接的转换映射文件。*.dcl AutoCAD 对话框控制语言对话框控制语言(DCL)程序文件。程序文件。*.lin AutoCAD 线型定义文件。线型定义文件。acad.lin 标准标准 AutoCAD 线型库文件。线型库文件。acadiso.lin 标准标准 AutoCAD ISO 线型库文件。线型库文件。1)用户自定义用户自定义*.lsp AutoLISP 程序文件。程序文件。acad.lsp 每次启动 AutoCAD 时加载的用户自定义 AutoLISP 例行程序。acaddoc.lsp 每次开始一个图形时加载的用户自定义 AutoLISP 例行程序。*.mln 多线库文件。多线库文件。*.mnl AutoCAD 菜单使用的菜单使用的 AutoLISP 例行程序。例行程序。acad.mnl 标准 AutoCAD 菜单使用的 AutoLISP 例行程序。*.mns AutoCAD 生成的菜单源文件。生成的菜单源文件。acad.mns 标准 AutoCAD 菜单的源文件。*.mnu AutoCAD 菜单源文件。菜单源文件。acad.mnu 标准 AutoCAD 菜单的源文件。*.pat AutoCAD 填充图案定义文件。填充图案定义文件。acad.pat 标准 AutoCAD 填充图案库文件。acadiso.pat 标准 AutoCAD ISO 填充图案库文件。acad.pgp AutoCAD 程序参数文件。包含外部命令和命令别名的定义。fontmap.ps AutoCAD 字体映射文件。由 PSIN 使用,是 AutoCADPostScript_ 解释器能识别的全部字体的目录(或字体映射)。acad.psf AutoCAD PostScript 支持文件,PSOUT 和 PSFILL 命令的主要支持文件。acad.rx 列出启动 AutoCAD 时加载的 ObjectARX 应用程序。*.scr AutoCAD 脚本文件。脚本文件包含一组脚本文件。脚本文件包含一组 AutoCAD 命令,命令,其运行方式与批处理文件相似。其运行方式与批处理文件相似。*.shp AutoCAD 形形/字体定义文件。编译后形字体定义文件。编译后形/字体文件的扩展字体文件的扩展名为名为.shx。acad.unt AutoCAD 单位定义文件。包含进行单位换算所需的数据。AutoCAD 程序参数文件程序参数文件 acad.pgp 是是 ASCII 文本文件,用于保存命令文本文件,用于保存命令定义。可将此文件当作自定义定义。可将此文件当作自定义 AutoCAD命令的列表。当用户输入不常用的命令的列表。当用户输入不常用的命令时,命令时,AutoCAD 在在 acad.pgp 中查找该命令。此文件分成两个部分:第中查找该命令。此文件分成两个部分:第一部分定义外部命令,第二部分定义命令别名。此文件可以用分号一部分定义外部命令,第二部分定义命令别名。此文件可以用分号(;)引引入说明文字。入说明文字。(2)AutoCAD 2000 中的基本自定义类型中的基本自定义类型一一.在在 AutoCAD AutoCAD 中运行外部程序。中运行外部程序。只要在程序参数文件只要在程序参数文件 acad.pgp 中加入适当的外部命令,就可以在中加入适当的外部命令,就可以在 AutoCAD 内部复制磁盘或删除文件。对于经常使用的内部复制磁盘或删除文件。对于经常使用的 AutoCAD 命令,可命令,可以创建它们的简单缩写,即别名。别名也是在程序参数文件以创建它们的简单缩写,即别名。别名也是在程序参数文件 acad.pgp 中定中定义的。义的。在在 AutoCAD 运行时,用户可调用其他程序或实用工具,例如:运行时,用户可调用其他程序或实用工具,例如:Windows 系统命令和实用工具,例如系统命令和实用工具,例如 start、type、dir 或或 copy 应用程序,例如文本编辑器或字处理器应用程序,例如文本编辑器或字处理器数据库管理程序、电子表格和通讯程序数据库管理程序、电子表格和通讯程序用户提供的程序,例如批处理文件或用户提供的程序,例如批处理文件或 Visual Basic 应用程序应用程序 定义外部命令时,需要指定在定义外部命令时,需要指定在 AutoCAD 命令提示中使用的命令名称,命令提示中使用的命令名称,以及传递给操作系统的可执行命令字符串。外部命令部分中的每行都包括以以及传递给操作系统的可执行命令字符串。外部命令部分中的每行都包括以逗号分隔的五个字段,如下所示:逗号分隔的五个字段,如下所示:command,executable,flags,*prompt,return_code 在命令提示中输入的命令。如果此名称是 AutoCAD 内部命令名称,则该命令将被忽略。这个名称不区分大小写。输入命令名时传递给操作系统的固定字符串,可以是能在操作系统提示中执行的任何命令,可包含开关或参数。该字符串是否区分大小写由运行的应用程序决定。必要的位编码参数,按任意组合将这些整数值相加以得到所需的结果。此字段可选。它指定显示在 AutoCAD 命令行中的提示,提示的响应被添加到 executable 字段提供的字符串后。可选的位编码参数。可将这些整数值按任意组合相加以得到所需的结果。在在 acad.pgp 的命令别名部分中为常用的的命令别名部分中为常用的 AutoCAD 命令、设备驱动程命令、设备驱动程序命令或外部命令定义别名,这样可以缩短这些命令。在序命令或外部命令定义别名,这样可以缩短这些命令。在 acad.pgp 文件中,文件中,由逗号分隔的两个字段定义命令别名:由逗号分隔的两个字段定义命令别名:abbreviation,*command 创建别名的 AutoCAD 命令。必须在命令名前输入星号(*)来表示该行为命令别名。当用户输入命令别名时,AutoCAD 在命令提示中显示完整的命令名并执行该命令。在命令提示中输入的命令的别名。例如标准 acad.pgp 文件中的命令别名:A,*ARC C,*CIRCLE CP,*COPY命令别名部分可包含带特殊的负号(-)前缀的命令,如下所示。这使用户可以创建别名来访问某些命令的命令行形式。BH,*-BHATCHBD,*-BOUNDARY注意 不能在命令脚本中使用命令别名,同时建议不要在菜单文件中使用命令别名。;Examples of external commands for command windowsCATALOG,DIR/W,8,指定文件:,DEL,DEL,8,要删除的文件:,DIR,DIR,8,指定文件:,EDIT,START EDIT,9,要编辑的文件:,SH,1,*操作系统命令:,SHELL,1,*操作系统命令:,START,START,1,*要启动的应用程序:,TYPE,TYPE,8,要列出的文件:,;-Sample aliases for AutoCAD commands-;These examples include most frequently used commands.3A,*3DARRAY3F,*3DFACE3P,*3DPOLYA,*ARCAA,*AREAAL,*ALIGNAR,*ARRAYATT,*ATTDEF-ATT,*-ATTDEFATE,*ATTEDIT-ATE,*-ATTEDITATTE,*-ATTEDITB,*BLOCK 二二.通过创建帮助文件,可以自定义通过创建帮助文件,可以自定义 AutoCAD AutoCAD 命令的帮助,命令的帮助,也可以为自己的应用程序定义帮助。也可以为自己的应用程序定义帮助。WinHelp 编译器从特殊编码的编译器从特殊编码的 RTF(超文本格式)文件中生成帮助文件。因为(超文本格式)文件中生成帮助文件。因为 RTF 是是 Microsoft Word 的一种标准输出格式,所以的一种标准输出格式,所以 Word 是常用的是常用的 WinHelp 文件文件编写环境。编写环境。三三.创建自定义线型、填充图案、形和文字样式。创建自定义线型、填充图案、形和文字样式。AutoCAD 线型由线型定义文件定义。线型定义文件的扩展名为线型由线型定义文件定义。线型定义文件的扩展名为.lin。AutoCAD 线型由一系列用逗号分隔的点和划组成,并可包含嵌入的形和文字对象。线型由一系列用逗号分隔的点和划组成,并可包含嵌入的形和文字对象。缺省的线型文件是缺省的线型文件是 acadiso.lin。用户可打印此文件,以便更好地理解如何构造线型。用户可打印此文件,以便更好地理解如何构造线型。仅由点、划和空格组成的线型称为简单线型;不仅包含点、划和空格,还包含仅由点、划和空格组成的线型称为简单线型;不仅包含点、划和空格,还包含嵌入的形和文字对象的线型称为复杂线型。尽管嵌入的形和文字对象的线型称为复杂线型。尽管 AutoCAD 对这两种线型的处理很对这两种线型的处理很相似,但它们的定义有很大区别。相似,但它们的定义有很大区别。有两种方法可创建和修改线型定义:一种是用文本编辑器或字处理器编辑有两种方法可创建和修改线型定义:一种是用文本编辑器或字处理器编辑 LIN 文件,另一种是用文件,另一种是用-LINETYPE 命令的命令的“创建创建”选项。不能在命令行中创建或修改选项。不能在命令行中创建或修改复杂线型。复杂线型。一个线型文件可包含许多线型定义。用户可将自定义线型加入一个线型文件可包含许多线型定义。用户可将自定义线型加入 acad.lin 文件或文件或构造自己的线型库文件。构造自己的线型库文件。LIN文件可通过分号引入注释,以分号开始的行中的任何文件可通过分号引入注释,以分号开始的行中的任何文字都将被忽略。文字都将被忽略。在在 LIN 文件中,每个线型用两行来定义。第一行定义线型的名称并提供可选的文件中,每个线型用两行来定义。第一行定义线型的名称并提供可选的说明。说明。*linetype-name,description 这一行必须以星号开始,其后紧跟线型名称。如果有说明,则必须用逗号将它这一行必须以星号开始,其后紧跟线型名称。如果有说明,则必须用逗号将它与名称分开,而且不能超过与名称分开,而且不能超过 47 个字符。说明帮助用户了解线型的外观,个字符。说明帮助用户了解线型的外观,AutoCAD 并不使用它。并不使用它。第二行是描述实际图案的代码。第二行是描述实际图案的代码。alignment,patdesc-1,patdesc-2,.这一行以对齐方式代码(当前只允许使用这一行以对齐方式代码(当前只允许使用 A)开始,其后是用逗号分隔的图案)开始,其后是用逗号分隔的图案描述(不允许出现空格)。描述(不允许出现空格)。线型不能在创建时自动加载到图形中,而需要用线型不能在创建时自动加载到图形中,而需要用 LINETYPE 命令的命令的“加载加载”选选项来加载。项来加载。3-1 线型的定义线型的定义实例:中心线线型定义*DD1,_._._._.A,.5,-25,0,-25 DD1 是线型的名称,description 字段是 LAYER Ltype?命令序列所显示的线型说明。在此例中,说明是点划线图案的简单表示。说明是可选的,可以是一系列点、空格和划,也可以是如同“此线型用于隐藏线”的注释。如果要省略说明,则不能在线型名称后面加逗号;如果要包括说明,则其长度不能超过 47 个字符。alignment 字段指定在直线、圆和圆弧末端的图案对齐操作。当前,AutoCAD 只支持一种对齐操作,通过在此字段中输入 A 加以指定。使用 LINETYPE 的“创建”选项时,A 是自动输入的;但如果用文本编辑器创建线型定义,则必须手动加入 A。AutoCAD 拒绝在 alignment 字段中接受任何其他字符。每个 pat-n 字段指定组成线型的一个线段的长度。长度为正时,画一条实线段;长度为负时,画一条空线段;长度为 0 时,画一个点。每个线型至多可以有 12 个线段长度定义,但这些定义必须在一行中,并且总长度不能超过 80 个字符。AutoCAD 通过 A 类对齐保证直线和圆弧的两端都是划。为为 AutoCAD 开发填充图案定义需要一个文本编辑器。可将图案加入库文件开发填充图案定义需要一个文本编辑器。可将图案加入库文件 acad.pat 或将它单独保存在一个文件中。将图案单独保存时,文件名必须与图案名或将它单独保存在一个文件中。将图案单独保存时,文件名必须与图案名相同。相同。例如,名为 PIT的图案必须保存在文件 pit.pat 中。不管定义保存在什么文件中,其格式都是一样的。它包括如下格式的标题行:*pattern-name,description 还包括一行或多行如下形式的说明:angle,x-origin,y-origin,delta-x,delta-y,dash-1,dash-2,.例如,图案 L45 用间隔为 0.5 图形单位的 45 度直线进行填充,其定义如下:*L45,45 degree lines45,0,0,0,0.5这个简单图案指定:直线按 45 度角绘制,填充直线族中的第一条直线穿过图形原点(0,0),且填充直线之间的距离为 0.5 图形单位。L45 是图案的名称,这里的说明字段是图案由 HATCH 命令的“?”选项显示时的可选说明。(如果省略说明,则图案名后不能有逗号。)图案定义文件的每一行最多可包含 80 个字符。AutoCAD 忽略空行和分号右边的文字。3-2 填充图案定义填充图案定义 用用 AutoCAD 可以定义文字字体和用作图形符号的形。可以定义文字字体和用作图形符号的形。“形形”是一种对象,使用是一种对象,使用时,首先要用时,首先要用 LOAD 命令加载包含所需形定义的编译后的形文件,然后用命令加载包含所需形定义的编译后的形文件,然后用 SHAPE 命令将形从该文件插入图形中。将形加入图形时,可进行缩放和旋转。命令将形从该文件插入图形中。将形加入图形时,可进行缩放和旋转。AutoCAD SHP 字体是特殊类型的形文件,其定义方式与形的定义方式相同。字体是特殊类型的形文件,其定义方式与形的定义方式相同。与形相比,块更容易使用,且用途更加广泛。但对与形相比,块更容易使用,且用途更加广泛。但对 AutoCAD 而言,形占用空间而言,形占用空间较小,绘制速度较快。当用户必须重复插入一个简单图形且速度非常重要时,用户定较小,绘制速度较快。当用户必须重复插入一个简单图形且速度非常重要时,用户定义的形将非常有用。义的形将非常有用。AutoCAD 字体和形文件字体和形文件(SHX)从形定义文件从形定义文件(SHP)生成(编译成)。形定义生成(编译成)。形定义文件可用文本编辑器或能将文件存为文件可用文本编辑器或能将文件存为 ASCII 格式的字处理器创建或编辑。每个形格式的字处理器创建或编辑。每个形(或字符)的形说明语法都不考虑形说明的最后用法(用作形或字体)。如果形定(或字符)的形说明语法都不考虑形说明的最后用法(用作形或字体)。如果形定义文件被用作字体文件,则文件中的第一个条目必须描述字体本身,而不是该文件义文件被用作字体文件,则文件中的第一个条目必须描述字体本身,而不是该文件中的形;如果第一个条目描述一个形,则该文件被用作形文件。中的形;如果第一个条目描述一个形,则该文件被用作形文件。AutoCAD 附带两个样板形文件:附带两个样板形文件:pc.shx 和和 es.shx。其中,一个用于印刷电路布。其中,一个用于印刷电路布局,另一个用于电子图表。查看这两个文件的内容并修改它们的形说明,有助于局,另一个用于电子图表。查看这两个文件的内容并修改它们的形说明,有助于掌握掌握 AutoCAD 形定义。形定义。3-3 形定义形定义 形定义文件的每一行最多可包含形定义文件的每一行最多可包含 128 个字符,超过此长度的行不能编译。个字符,超过此长度的行不能编译。AutoCAD 忽略空行和分号右边的文字。利用分号可以在形定义文件中包含注释。忽略空行和分号右边的文字。利用分号可以在形定义文件中包含注释。每个形说明都有一个标题行(格式如下),以及一行或多行定义字节。这些每个形说明都有一个标题行(格式如下),以及一行或多行定义字节。这些定义字节之间用逗号分隔,最后以定义字节之间用逗号分隔,最后以 0 结束。结束。*shapenumber,defbytes,shapename specbyte1,specbyte2,specbyte3,.,0型编号:数字,在文件中唯一,在型编号:数字,在文件中唯一,在 1 到到 258(对(对 Unicode 字体最多可达字体最多可达 65535)之间,带前缀星号)之间,带前缀星号(*)。字体(包含每个字符的形定义的文件)的编。字体(包含每个字符的形定义的文件)的编号要与每个字符的号要与每个字符的 ASCII 码对应;其他形可指定任意数字。码对应;其他形可指定任意数字。用于描述形的数据字节用于描述形的数据字节(specbytes)的数目,包括末尾的零。的数目,包括末尾的零。每个形最多可有每个形最多可有 2,000 个数据字节。个数据字节。形的名称。形名称必须大写,以便于区分。形的名称。形名称必须大写,以便于区分。包含小写字符的名称被忽略,并且通常用作包含小写字符的名称被忽略,并且通常用作字体形定义的标签。字体形定义的标签。形定义字节。每个定义字节都是一个代码,或者定义矢量长度和方向,或者是特殊代形定义字节。每个定义字节都是一个代码,或者定义矢量长度和方向,或者是特殊代码的对应值之一。在形定义文件中,定义字节可以用十进制或十六进制表示。如果形码的对应值之一。在形定义文件中,定义字节可以用十进制或十六进制表示。如果形定义字节的第一个字符为定义字节的第一个字符为 0(零),则后面的两个字符解释为十六进制值。(零),则后面的两个字符解释为十六进制值。简单的形定义字节在一个定义字节(一个简单的形定义字节在一个定义字节(一个 specbyte 字段)中,包含矢量长度和字段)中,包含矢量长度和方向的编码。每个矢量的长度和方向代码是一个三字符的字符串。第一个字符必须方向的编码。每个矢量的长度和方向代码是一个三字符的字符串。第一个字符必须为为 0,用于指示,用于指示 AutoCAD 将后面的两个字符解释为十六进制值。第二个字符指定矢将后面的两个字符解释为十六进制值。第二个字符指定矢量的长度。有效的十六进制值包括从量的长度。有效的十六进制值包括从 1(一单位长度)到(一单位长度)到 F(十五单位长度)。第三(十五单位长度)。第三个字符指定矢量的方向。下图展示了方向代码。个字符指定矢量的方向。下图展示了方向代码。矢量方向代码上图中的所有矢量都按同样的长度定义绘制。对角矢量长度延长,以匹配最接近的正交矢量的 X 或 Y位移。0123456789ABCDEF00:指示后面两个字符是16进制矢量的长度,4个二进制位表示1F矢量的方向4个二进制位表示0F13下例构造名为下例构造名为 DBOX 的形,指定形的编号为的形,指定形的编号为 230。*230,6,DBOX 014,010,01C,018,012,0 上述定义字节序列定义了一个单位长度、单位宽度的方框,以及从左下角到上述定义字节序列定义了一个单位长度、单位宽度的方框,以及从左下角到右上角的对角线。将文件保存为右上角的对角线。将文件保存为 dbox.shx 后,用后,用 COMPILE 命令生成命令生成 dbox.shx 文件。用文件。用 LOAD 命令加载包含此定义的形文件,然后如下使用命令加载包含此定义的形文件,然后如下使用 SHAPE 命令:命令:命令:命令:shape 输入形名称(或输入形名称(或?):):dbox 指定插入点:指定插入点:1,1 指定高度指定高度:2 指定旋转角度指定旋转角度:0 结果形如下图所示:结果形如下图所示:(1,1)201401001C018012 除定义矢量之外,定义字节可用下列特殊代码创建其他格式、指定特除定义矢量之外,定义字节可用下列特殊代码创建其他格式、指定特定操作。使用特殊代码时,或者三字符中的第二个字符必须为定操作。使用特殊代码时,或者三字符中的第二个字符必须为 0,或者直接,或者直接指定代码数字(例如,指定代码数字(例如,008 和和 8 都是有效的特殊代码定义)。都是有效的特殊代码定义)。规范字节代码规范字节代码代码代码说明说明 000形定义结束形定义结束001激活绘图模式(落笔)激活绘图模式(落笔)002停止绘图模式(提笔)停止绘图模式(提笔)003将矢量长度除以下一字节将矢量长度除以下一字节 (代码(代码 3 3 和和 4 4 控制每个矢量的相对尺寸)控制每个矢量的相对尺寸)004将矢量长度乘以下一字节将矢量长度乘以下一字节005将当前位置压入堆栈将当前位置压入堆栈 压入(保存)和弹出(恢复)当前坐标位置,可压入(保存)和弹出(恢复)当前坐标位置,可006从堆栈弹出当前位置从堆栈弹出当前位置 从形中的其他点返回该点。从形中的其他点返回该点。007绘制编号由下一字节指定的子形绘制编号由下一字节指定的子形008由下两个字节指定的由下两个字节指定的 X-Y 位移位移 可用可用 X-Y X-Y 位移绘制非标准矢量,后跟两位移绘制非标准矢量,后跟两 个定义字节,个定义字节,X-Y X-Y 位移范围为位移范围为-128 -128 到到+127+127。前面的。前面的+可选,可用括号增强可读性。可选,可用括号增强可读性。特殊代码特殊代码009多个多个 X-Y 位移,以位移,以(0,0)终止终止 可绘制一系列非标准矢量。此代码后面可可绘制一系列非标准矢量。此代码后面可跟任意数量的跟任意数量的 X-Y X-Y 位移对,由位移对,由(0,0)(0,0)对终止。对终止。00A(或 10)由下两个字节定义的八分圆弧由下两个字节定义的八分圆弧00B(或11)由下五个字节定义的分数圆弧由下五个字节定义的分数圆弧00C(或12)由由 X-Y 位移和凸度定义的圆弧位移和凸度定义的圆弧00D(或13)多个指定凸度的圆弧多个指定凸度的圆弧00E(或14)仅对垂直文字执行下一命令仅对垂直文字执行下一命令 01234567八分圆弧定义:半径:1 到 255 之间的任意值圆弧的方向(正:逆时针;负:顺时针)s开始八分圆,值为 0 到 7c跨越的八分圆数,值为 0 到 7。其中0 表示整个圆10,radius,(-)0SC0:16进制标记实例实例;(C)Copyright 1997 by Autodesk,Inc.;ltypeshp.SHP-shapes for complex linetypes;*130,6,TRACK1014,002,01C,001,01C,0*131,3,ZIG012,01E,0*132,6,BOX014,020,02C,028,014,0*133,4,CIRC110,1,-040,0*134,6,BAT025,10,2,-044,02B,0四四.创建自定义菜单和工具栏,以修改创建自定义菜单和工具栏,以修改 AutoCAD AutoCAD 用户界面。用户界面。菜单在很大程度上决定了菜单在很大程度上决定了 AutoCAD 界面的外观。如果界面的外观。如果 AutoCAD 中的中的标准菜单不包含用户经常使用的命令,那么用户可以根据实际需要自定义标准菜单不包含用户经常使用的命令,那么用户可以根据实际需要自定义菜单,或者向菜单中添加所需的命令和宏,或者将命令分组、合并到单个菜单,或者向菜单中添加所需的命令和宏,或者将命令分组、合并到单个菜单项中,并将最常用的命令放在菜单上最容易选取的位置,工作效率会菜单项中,并将最常用的命令放在菜单上最容易选取的位置,工作效率会显著提高。菜单文件定义了选择定点设备按钮后执行的操作。同样,下拉显著提高。菜单文件定义了选择定点设备按钮后执行的操作。同样,下拉菜单、屏幕、数字化仪和图像控件菜单的功能和外观,以及工具栏和加速菜单、屏幕、数字化仪和图像控件菜单的功能和外观,以及工具栏和加速键,均在菜单文件定义。键,均在菜单文件定义。菜单文件实际指一组文件,这些文件共同定义和控制菜单区域的外观和功能。下表描述了 AutoCAD 的菜单文件类型:AutoCAD 菜单文件文件类型说明MNU样板菜单文件。MNC编译后的菜单文件。此二进制文件包含定义菜单功能和外观的命令字符串和菜单语法。MNR菜单资源文件。此二进制文件包含由菜单使用的位图。MNS源菜单文件(由 AutoCAD 生成)。MNT菜单资源文件。在 MNR 文件无效(例如,只读)时生成该文件。MNL与菜单配套的 AutoLISP 程序。这些文件包含由菜单文件使用的 AutoLISP 表达式。当加载同名的菜单文件时,这些文件也载入内存。菜单文件划分为与菜单文件划分为与 AutoCAD 界面的特定区域相关的几个部分。按照其界面的特定区域相关的几个部分。按照其功能,每个菜单区域可由一个或多个部分定义。每个部分中都包含菜单项,功能,每个菜单区域可由一个或多个部分定义。每个部分中都包含菜单项,菜单项由菜单项由名称标记名称标记、标签标签和和菜单宏菜单宏等元素组成。菜单文件的各部分用等元素组成。菜单文件的各部分用*section_name 格式的部分标签标识。下表列出了部分标签及其相关的菜格式的部分标签标识。下表列出了部分标签及其相关的菜单区域:单区域:部分标签 菜单区域*MENUGROUP 菜单文件组名*BUTTONSn 定点设备按钮菜单*AUXn 系统定点设备菜单*POPn 下拉/快捷菜单区域*TOOLBARS 工具栏定义*IMAGE 图像控件菜单区域*SCREEN 屏幕菜单区域*TABLETn 数字化仪菜单区域*HELPSTRINGS 当突出显示下拉菜单和快捷菜单项时,或当光标位于工具栏按钮上时,显示在状态栏中的文字*ACCELERATORS 加速键定义4-1菜单结构菜单结构菜单项的基本语法在所有支持菜单项的菜单部分中都是一致的。每个菜单菜单项的基本语法在所有支持菜单项的菜单部分中都是一致的。每个菜单项由名称标记、标签和菜单宏组成(除了项由名称标记、标签和菜单宏组成(除了 Image 部分不允许名称标记)。部分不允许名称标记)。一个菜单项通常占文件的一行,格式如下:一个菜单项通常占文件的一行,格式如下:name_tag label menu_macro 菜单项实例:菜单项实例:CC_quit是菜单宏,当用户选择此菜单项时,执行菜单宏。ID_Quit ExitCC_quitID_Quit 是名称标记Exit是标签 在菜单中显示 Exit名称标记是字母和下划线(_)字符组成的字符串,直接放置在菜单项标签之前。在菜单文件中,此字符串唯一标识一个菜单项。菜单项标签的格式和用法在每个菜单部分中都有所不同。标签内容包含在方括号()中,定义用户所看到的菜单显示或外观。菜单宏中的每个字符(包括空格)都有重要含义。4-2 菜单项的基本语法菜单项的基本语法菜单宏中使用的特殊字符:菜单宏中使用的特殊字符:;产生 ENTERM 产生 ENTERI 产生 TABSPACEBAR输入空格;菜单项中命令序列之间的空格等价于按 SPACEBAR 暂停以等候用户输入(不能用在加速键部分)_ 转换 AutoCAD 命令及其后的关键字+延续菜单宏到下一行(如果是最后一个字符)=*显示当前顶层的图像、下拉或快捷菜单*CC 重复项的前缀$加载菜单部分或输入条件 DIESEL 宏表达式($M=)的特殊字符B 切换捕捉开或关(CTRL+B)C 取消命令(ESC)D 切换坐标显示开或关(CTRL+D)E 设置下一个等轴测平面(CTRL+E)G 切换栅格开或关(CTRL+G)H 产生退格O 切换正交模式开或关(CTRL+O)P 切换 MENUECHO 开或关Q 回显所有提示、状态列表和打印输入(CTRL+Q)T 打开或关闭数字化仪(CTRL+T)V 切换当前视口(CTRL+V)Z 禁止在菜单项末尾自动增加 SPACEBAR 的空字符4-3 创建下拉菜单创建下拉菜单 下拉菜单显示为级联菜单(也称为步进菜单或层次菜单)。下拉菜单项与其他下拉菜单显示为级联菜单(也称为步进菜单或层次菜单)。下拉菜单项与其他菜单部分中的项相似,定义菜单宏的方式也与定义标准屏幕或数字化仪菜单的方式相菜单部分中的项相似,定义菜单宏的方式也与定义标准屏幕或数字化仪菜单的方式相似。似。下拉菜单在下拉菜单在*POP1 到到*POP499 菜单部分中定义。加载每个菜单文件时,菜单部分中定义。加载每个菜单文件时,AutoCAD 都要查找都要查找 POPn 菜单部分。对于菜单部分。对于 POP1 到到 POP16 菜单部分,菜单部分,AutoCAD 构构造包含这些部分的标题的菜单栏。如果未定义造包含这些部分的标题的菜单栏。如果未定义 POPn 部分,部分,AutoCAD 插入缺省的插入缺省的“文件文件”和和“编辑编辑”菜单。对于任何大于菜单。对于任何大于 POP16 并小于并小于 POp500 的菜单部分,的菜单部分,AutoCAD 用用 MENULOAD 命令或通过菜单交换把它们插入到菜单栏。命令或通过菜单交换把它们插入到菜单栏。MyToolsSave Ctrl+SShow MyToolbarHide MyToolbarEdit MyMenuReload MyMenuEdit PGPReload PGP 下例展示了用于创建下拉或快捷菜下例展示了用于创建下拉或快捷菜单的语法。单的语法。*POP13*MYTOOLSM_Tools&MyToolsM_Save&SavetCtrl+SCC_qsave -M_ShwTB Show MyToolbarCC_-toolbar mytools sM_HidTB Hide MyToolbarCC_-toolbar mytools h -M_EMenu Edit MyMenuCCP(commandnotepad(findfilemy.mnu)PM_LMenu Reload MyMenuCCP(command_menumy.mnu)P -M_EPgp Edit PGPCCP(commandnotepad(findfileacad.pgp)PM_LPgp Reload PGPCC_re-init 16 每个菜单部分都可拥有一个或多个别名,这些别名由菜单部分标签后的每个菜单部分都可拥有一个或多个别名,这些别名由菜单部分标签后的*alias 标签定义。在上例中,标签定义。在上例中,*MYTOOLS 是是 POP13 菜单的别名。注意菜单的别名。注意 POPn 菜单菜单部分不再支持部分不再支持*submenu 语法。出现在标签部分后面以及菜单项前面的语法。出现在标签部分后面以及菜单项前面的*alias 语语法是有效的。法是有效的。下拉菜单标签的语法下拉菜单标签的语法下表描述一些特殊字符,这些字符在下拉或快捷菜单标签中都拥有特殊的功能。下表描述一些特殊字符,这些字符在下拉或快捷菜单标签中都拥有特殊的功能。字符说明-下拉菜单和快捷菜单中的菜单项分隔符(使用时,不能包括任何其他字符)。+延续宏到下一行(如果是最后一个字符)。-指出下拉菜单或快捷菜单具有子菜单。-指出子菜单中的最后一个下拉菜单项或快捷菜单项。-.指出子菜单中的最后一个下拉菜单项,并且结束父菜单。(每个、-和和-Point Filters特殊字符特殊字符-指出该菜单项有子菜单指出该菜单项有子菜单-.YZ.YZ特殊字符特殊字符 Text-Attributes-Extract.CCddattext特殊字符特殊字符-Pline4.4 工具栏工具栏*TOOLBARS 部分指定工具栏的缺省布局和内容。它包含每个菜单所定义工具栏的部分指定工具栏的缺省布局和内容。它包含每个菜单所定义工具栏的子菜单。子菜单。创建工具栏创建工具栏 工具栏中可包括五种不同类型的项。下例提供了每种项的语法。除分隔条以工具栏中可包括五种不同类型的项。下例提供了每种项的语法。除分隔条以外,所有行都以标准的名称标记开始,名称标记用于关联帮助信息和该项。在下外,所有行都以标准的名称标记开始,名称标记用于关联帮助信息和该项。在下例中,例中,*TOOLS1 声明是子菜单,它用别名声明是子菜单,它用别名 TOOLS1 作标签来引用随后的工具栏作标签来引用随后的工具栏定义。定义。*TOOLBARS*TOOLS1TAG1 Toolbar(tbarname,orient,visible,xval,yval,rows)TAG2 Button(btnname,id_small,id_large)macro TAG3 Flyout(flyname,id_small,id_large,icon,alias)macro TAG4 Control(element)-工具栏子菜单的第一行工具栏子菜单的第一行(TAG1)是是工具栏定义工具栏定义,它定义工具栏的特性。子菜单,它定义工具栏的特性。子菜单中其余的行是其余工具栏项的混合。上例的第二行中其余的行是其余工具栏项的混合。上例的第二行(TAG2)定义一个定义一个按钮按钮。第三行。第三行(TAG3)定义一个定义一个弹出控件弹出控件。第四行定义一个。第四行定义一个特殊的控件元素特殊的控件元素。第五行定义一个。第五行定义一个分分隔条隔条(-)。工具栏定义工具栏定义工具栏定义使用关键字工具栏定义使用关键字 Toolbar,并在其后用括号包含一系列选项。,并在其后用括号包含一系列选项。TAG1 Toolbar(tbarname,orient,visible,xval,yval,rows)字符串,是工具栏的名称。该字符串必须由字母数字型的字符组成,并且除了连字符串,是工具栏的名称。该字符串必须由字母数字型的字符组成,并且除了连字符字符(-)和下划线和下划线(_)以外不能包含其他标点符号。此名称与别名配合使用,使以外不能包含其他标点符号。此名称与别名配合使用,使得可以在程序中引用工具栏。得可以在程序中引用工具栏。指定方向的关键字。有效值包括指定方向的关键字。有效值包括 Floating、Top、Bottom、Left 和和 Right,不区分大小写。,不区分大小写。指定可见性的关键字。有效值为指定可见性的关键字。有效值为 Show 和和 Hide,不区分大小写。,不区分大小写。数字值,按像素指定数字值,按像素指定 X 坐标,测量坐标,测量从屏幕左边到工具栏左端的距离。从屏幕左边到工具栏左端的距离。数字值,按像素指定数字值,按像素指定 Y 坐标,坐标,测量从屏幕上边到工具栏上端测量从屏幕上边到工具栏上端的距离。的距离。数