第六章 CASS5.0的用户化
6.1图框和图角章的用户化
图框和图角章用户化的目的是将图框中的有关文字内容改到与用户实际工作情况相符,避免加入原有图框后对每幅图进行改动。实质就是用AutoCAD的文字编辑命令修改图框与图角章的文字内容。
CASS5.0 的图框和角图章均是以DWG图形的方式存储在C盘CASS50目录下的blocks子目录中(路径为C:\CASS50\BLOCKS)。表6-1列出了图框和角图章的图形文件名及对应的图框名。
图形文件名
说 明
AC45TK.DWG
50×40cm 标准图框
AC50TK.DWG
50×50cm 标准图框
ACTKF1.DWG
任意图幅的接图表
ACTKF2.DWG
任意图幅的测量信息
GDDJTK6.DWG
宗地图框(A3横)
GDDJTK3.DWG
宗地图框(A3竖)
GDDJTK5.DWG
宗地图框(A4横)
GDDJTK2.DWG
宗地图框(A4竖)
GDDJTK1.DWG
宗地图框(32开)
GDDJTK4.DWG
宗地图框(16开)
ACDJTKB.DWG
首页界址点成果表图框
ACDJTKB1.DWG
次页界址点成果表图框
ACJIE.DWG
以街道为单位宗地面积汇总表
ACCHENG.DWG
城镇土地分类面积统计表
ACTK0.DWG
带图角章的0号工程图框
ACTK0-1.DWG
不带图角章的0号工程图框
接上表
ACTK1.DWG
带图角章的1号工程图框
ACTK1-1.DWG
不带图角章的1号工程图框
ACTK2.DWG
带图角章的2号工程图框
ACTK2-1.DWG
不带图角章的2号工程图框
ACTK3.DWG
带图角章的3号工程图框
ACTK3-1.DWG
不带图角章的3号工程图框
表6-1:CASS5.0图框与图角章的图形文件名例如:编辑“50×40cm 标准图框”。
操作如下:
第一步:打开文件
1.根据表6-1查找到50×40cm 标准图框对应图框文件为AC45TK.DWG(路径为C:\CASS50\BLOCKS\AC45TK.DWG);
2.移动鼠标至屏幕顶部菜单“文件F”处按左键,系统便弹出一个下拉菜单;
3,再移动鼠标在下拉菜单中选择“打开已有图形…”项按左键,弹出对话框;
4,找到该文件,或在“文件名”一栏输入完整路径:
C:\CASS50\BLOCKS\AC45TK.DWG(如图6-1所示:)

图6-1 输入图框文件名的对话框
5.点击“打开(0)”键。最终打开图形如图6-2所示:

图6-2 打开50×40图框文件后的界面第二步:编辑修改利用“工具T”菜单的“文字”项的“写文字”、“编辑文字”等功能可编辑修改图形的文字。(操作见参考手册第一章 CASS5.0的命令、菜单与工具框)
修改完毕后存盘,不要改名。修改结果如图6-3所示:

图6-3 50×40图框的修改图面其他标准图框修改方法基本同上。
6.2菜单的用户化
CASS的菜单布局与各菜单项对应的功能是由菜单文件来定义的。用户可通过修改已有菜单文件来建立自己的菜单。借助于编辑菜单文件中的文本或菜单组,用户可重新定义菜单布局和并指定各菜单项对应的具体操作。
6.2.1 菜单文件的类型菜单文件实际上是指一组协同定义和控制菜单区域的显示及操作的文件。表6-2描述了CASS的菜单文件的类型。
菜单文件类型
类型说明
.MNU
样板菜单文件。ASCII码文本文件
.MNC
经编译的菜单文件,这种二进制文件包含有命令串及定义菜单显示与动作的菜单语法。
.MNR
菜单资源文件,这种二进制文件包含有菜单所用的位映像。
.MNS
菜单源文件﹙CASS系统所生成﹚。ASCII码文本文件。
.MNL
菜单的LISP文件,这些文件包含有菜单文件所用的LISP表达式,当调用与其同名的菜单文件时,该文件同时被调入内存。
.MND
菜单定义文件。
为包含宏定义的特定菜单源文件,该类菜单文件必须经过菜单编译器实用程序﹙MC.EXE﹚编译
表6-2 CASS菜单文件的类型启动时CASS系统按照系统设定的库文件搜索路径寻找给定文件名的菜单源文件﹙.MNS﹚,再到同一目录中查找与菜单源文件同名的编译菜单文件﹙.MNC﹚,一旦菜单文件被找到并装载,CASS就在库搜索路径中查找与菜单文件同名的菜单Auto LISP文件﹙.MNL﹚。对其内的Auto LISP表达式求值。如果CASS未找到任何指定文件名的菜单文件,就会显示出错信息并提示输入另一菜单文件名。
.MNS是一个基本与.MNU文件相同的ASCII码文件,所不同的是.MNS文件没有注释部分和便于编排格式。本节主要介绍.MNS菜单文件的结构及编辑。
6.2.2 菜单文件的总体结构菜单文件定义菜单区的功能及显示形式。下面为菜单文件所定义的菜单区:
定点设备菜单﹙Pointing-device button menus﹚
下拉菜单和光标菜单﹙Pull-down and cursor menus﹚
工具栏﹙Toolbars﹚
图像块菜单﹙Image tile menus﹚
数字化仪菜单﹙Digitizing-tablet menus﹚
状态栏帮助﹙Help string and tool tips﹚
快捷键﹙Keyboard accelerators﹚
菜单组﹙Menu groups﹚
CASS的标准菜单﹙ACAD.MNS﹚结构为树形结构。它由20个菜单节组成,每一个菜单为一个菜单节,以连续的三个星号﹙***﹚引出。具体包括:两个按钮菜单节﹙BUTTONS1和BUTTONS2﹚、四个辅助菜单节﹙AUX1~AUX4﹚、一个光标菜单节﹙POP0﹚、11个下拉菜单节﹙POP1~POP10和POP17﹚、一个工具栏﹙TOOLBARS﹚、一个图块菜单节﹙IMAGE﹚、一个屏幕菜单节﹙SCREEN﹚、一个快捷键节﹙ACCELETATORS﹚、一个状态栏帮助节﹙HELPSTRING﹚、和四个数字化仪﹙TABLET1~TABLET4﹚。按钮菜单节和辅助菜单节只用于定义定位设备各按钮的功能,用户一般不要轻易修改这两类菜单内容。ACAD.MNS的具体结构如下:
***BUTTONS1 菜单项B11、B12等
***BUTTONS2 菜单项B21、B22等
***AUX1 菜单项A11、A12等
……
***AUX4 菜单项A41、A42等
***POP0 子菜单及菜单项P01、P02等
***POP1 子菜单P11、P12及菜单项P111、P112等
……
***POP10
***POP17
***TOOLBARS…
***IMAGE﹙图像块菜单节﹚ 子菜单及菜单项11、12等
***SCREEN﹙屏幕菜单节﹚ 子菜单S1、S2及菜单项S11、S12等
***TABLETn﹙第n个数字化仪菜单节 n=1~4﹚
***ACCELERATORS﹙快捷键节﹚
***HELPSTARINGS﹙状态行帮助节﹚
***TALBLET1﹙第n个数字化仪菜单节 n=1~4﹚ 菜单项T11、T12等
……
***TABLET4
屏幕子菜单节的起始标记是“***子菜单节名N”,其中N是指该子菜单从屏幕上第N行起显示,当N=1时可省略不写。子菜单名可任意指定,但各个菜单节名不能相同。
图象块子菜单节的起始标记是“***子菜单节名”。子菜单名可任意指定,但各个菜单节名不能相同。
6.2.3 菜单项的表示菜单项有以下几种表示:
﹙1﹚[菜单项名]命令串这种方法所表示的菜单项在执行时括号内的菜单项名显示在屏幕上相应的区域﹙方括号本身不显示﹚,而方括号后的命令串如果是CASS的命令或关键字,则送入命令提示行;如果是子菜单调用命令,则调用相应的子菜单如果是Auto LISP或ARX语句,则执行该语句。
﹙2﹚[字符串]
在这种情况下,方括号中往往为子菜单的标题项使用。
﹙3﹚字符串在这种情况下,字符串一般是CASS的命令或关键字,该字符串不仅显示在屏幕上,而且还同时送入命令提示行。
﹙4﹚[~ – –]或[– –]
这是菜单项之间的分隔符。前者在屏幕上显示为一连串变灰的“–”,后者则不变灰。
﹙5﹚[– >]子菜单节名]和[< –菜单项名]命令串前者是调用下拉或光标子菜单的菜单项,后者则是子菜单的最后一节菜单项,方括号内容将显示在屏幕上,命令串的作用同(1)所述。
﹙6﹚[幻灯片库名﹙幻灯片名,文字]命令串这是图像块菜单节中菜单项的完整表示形式。实际应用时方括号内各部分不一定全有,但有幻灯片库名时必须有幻灯片且圆括号内只一项时不要逗号。其他情况下不要圆括号。方括号后命令串的作用同1所述。
﹙7﹚[字母~数字]命令串这是数字化仪菜单节中菜单项的定义格式。每一项对应于数字化仪上的一个小区,字母是小区行号,数字为列号。CASS的标准菜单文件中小区排序按先列﹙1~25﹚后行﹙A~I﹚的原则。在TABLET1菜单节中留有大量无命令串的命令项供用户定义。用户一般不要在[1~25]以后的行上重新定义菜单。
6.2.4菜单文件的特殊字符菜单文件中还经常出现一些特殊字符,其所有符号及作用见表6.3。
字符
功能说明
***
指出菜单区标题
**
指出子菜单区标题
[]
标记菜单项名称用于屏幕菜单、下拉菜单和光标菜单用于图像块菜单的菜单标记、幻灯文件名或文字
--
下拉或光标菜单中各段之间的分隔标记
+
续行符号
:
发出一个回车
^M
发出一个回车
^I
发出一个<Tab>
\
暂停,等待用户输入
空格
通常等价于回车,在行末无意义
-
转换随后的CASS命令和关键字
=*
在屏幕上显示当前图块菜单、下拉菜单或光标菜单
*^C^C
重复菜单项所用的前缀
$
用于通知CASS装入菜单或指明一个DIESEL宏条件表达式﹙$M=﹚
->
用于说明下拉或图块菜单项由有子菜单
<-
用于说明下拉或图块菜单项是最后一个菜单项,并终止父菜单
<-<-
下拉或图块菜单项是子菜单的最后一个菜单项,并终止一个上一级菜单
^C
取消命令,Ctrl+C键的功能
^D
切换坐标显示的开/关状态,Ctrl+D键的功能
^E
设置下一个等轴测平面,Ctrl+E键的功能
^G
切换栅格开/关状态,Ctrl+G键的功能
^H
发出退格键<Backspace>
^O
切换正方模式的开/关状态,Ctrl+O键的功能
^P
切换MENUECHO系统变量的开/关状态
^Q
相应所有提示、状态列表显示和输入送打印机,相当于Ctrl+Q键的功能
^T
切换数字化仪的开/关状态,Ctrl+T键的功能
^name^
在下拉或光标菜单中为该菜单标记显示name图像块
$﹙
要求下拉或光标菜单项标记计算一个DIESEL字符串宏表达式
!C
该标记前缀用于下拉或光标菜单上的非字母数字的特殊字符。C标记一个菜单项
<C
规定在下拉或光标菜单标记中显示下述字体
<B=bold
<O=outline
<S=shadow
<I=italic
<U=underline
~
用于变灰一个菜单项
^B
切换捕捉方式的开/关状态,Ctrl+B键的功能
表6.3菜单文件中可能出现的特殊字符一般情况下,系统会对CASS的菜单项末自动加一空格,但当菜单项末是反斜杠时、加号或分号时则不加。
屏幕菜单节和子菜单节的起始标记一般均各占一半。菜单项一行写不完时,可在行末加一续行符号之后,再在下一行续写。
6.2.5 CASS菜单实例
1,下拉菜单节:
……
***POP7
[等高线&S]
[由数据文件建立DTM]^C^C^PLINKSJX;^P
[由图面建立DTM]^C^C^PLINKSJX1;1;^P
[--]
[删除三角形]_erase
……
内容详解:
***POP7 指七个下拉菜单
[等高线&S] 指单名为“等高线&S”
[由数据文件建立DTM]^C^C^PLINKSJX;^P 指菜单项名为“由数据文件建立DTM”,^C^C、^P 为菜单特殊符号,LINKSJX为菜单项对应CASS命令名。
[--] 指菜单分隔标记
[删除三角形]_erase 指菜单项名为“删除三角形”,“_”为菜单特殊符号,erase为AutoCAD命令
2,图像块菜单
***IMAGE
……
**JMD
[居民地和垣栅]
[cass2(jmd1,多点一般房屋)]^C^C^Pdd;141101;^P
[cass2(jmd2,四点一般房屋)]^C^C^Pfourpt;1;^P
……
内容详解:
***IMAGE 指屏幕菜单
**JMD 指子菜单区标题
[居民地和垣栅] 菜单项名称
[cass2(jmd1,多点一般房屋)]^C^C^Pdd;141101;^P cass2.slb文件中名为jmd1的幻灯片地物为“多点一般房屋”,^C^C、^P 为菜单特殊符号,dd为菜单项对应CASS命令名,141101为命令参数。
[cass2(jmd2,四点一般房屋)]^C^C^Pfourpt;1;^P cass2.slb文件中名为jmd1的幻灯片地物为“四点一般房屋”,^C^C、^P 为菜单特殊符号,fourpt为菜单项对应CASS命令名,1为命令参数。
注意:这类需参数命令如dd、fourpt不能在acad.pgp文件中定义命令别名。
IMAGE菜单节定义了右侧菜单绘地物时各类符号的排列顺序。
小技巧:用户可编辑图象块菜单各行的排列顺序,将常用的符号放到前面,避免每次翻页查找。
例如:将居民地和垣栅段﹙JMD﹚编辑如下,
……
**JMD
[居民地和垣栅]
[cass2(jmd3,多点砼房屋)]^C^C^Pdd;141111;^P
[cass2(jmd4,四点砼房屋)]^C^C^Pfourpt;2;^P
[cass2(jmd1,多点一般房屋)]^C^C^Pdd;141101;^P
[cass2(jmd2,四点一般房屋)]^C^C^Pfourpt;1;^P
[cass2(jmd24,阳台)]^C^C^Pdd;140001;^P
[cass2(jmd36,门廊)]^C^C^Pdd;143120;^P
[cass2(jmd47,依比例门墩)]^C^C^Pdd;143701;^P
[cass2(jmd65,栅栏.栏杆)]^C^C^Pdd;144400;^P
[cass2(jmd66,篱笆)]^C^C^Pdd;144500;^P
[cass2(jmd67,活树篱笆)]^C^C^Pdd;144600;^P
[cass2(jmd63,依比例围墙)]^C^C^Pdd;144301;^P
[cass2(jmd16,多点简单房屋)]^C^C^Pdd;141200;^P
[cass2(jmd17,四点简单房屋)]^C^C^Pfourpt;8;^P
……
菜单其他部分结构及修改方法过于复杂,本公司不鼓励用户修改,如想修改可参考有关AutoCAD的技术文档。
6.2.6 CASS菜单定制定制CASS的菜单一般按如下步骤进行:
1.分析所要增加的菜单功能,找到相应的子菜单节。
2.定所要增加的菜单的位置,即决定菜单在屏幕显示的位置或在图形输入板的哪个区域。
3.启动文本编辑程序(例如Windows的记事本),调出ACAD.MNS﹙或ACAD.MNU﹚文件,根据上述分析,在合适的位置增加菜单项。增加的子菜单的位置除不能插在原有的子菜单节中间外,可插在同类菜单节的任何地方。修改CASS菜单的方法和增加方法相同。修改后必须存盘。
注意:用户自己编辑的Auto LISP或ARX程序需要被菜单调用时,必须放到CASS的SYSTEM和BIN目录下﹙如C:\CASS50\SYSTEM、C:\CASS50\BIN﹚。
4.编译ACAD.MNS﹙或ACAD.MNU﹚。启动CASS,用“MENU”命令调入修改后的ACAD.MNS文件,系统将自动编译该文件,生成ACAD.MNC等菜单文件。
6.2.7菜单调用
用户建立自己的菜单文件之后,即可调用。
调用用户菜单的操作流程如下:
1.命令提示符下键入“MENU”命令。
2.出现选择菜单文件对话框,如图6-4所示:

图6-4 选择菜单文件对话框
3.选择输入菜单文件的路径并指定文件,然后按“打开(O)”按钮。
6.3 工具栏的用户化
6.3.1 编辑工具栏
1,移动鼠标至屏幕工具栏上按右键,系统便弹出一个下拉菜单;如图6-5所示:

图6-5 CASS5.0工具箱菜单系统已打开的工具栏前打勾表示,现打开标准工具栏、CASS实用工具栏。
移动鼠标至下拉菜单项目前,系统以高亮表示,鼠标左键点击,如系统已打开的工具栏将关闭,未打开的工具栏将打开。
2.选择“Customize…”(自定义)项,或者在命令行输入:TBCONFIG﹙工具栏配置﹚命令都会击活一个工具栏对话框并选择“Toolbars”(工具栏)属性页。如图6-6所示:

图6-6 工具栏设置对话框
“Toolbars”栏为工具栏项目栏,系统已打开的工具栏前复选框被选﹙打叉﹚,现打开标准工具栏、CASS实用工具栏;
“Menu Group”栏为菜单组栏;
“Close” 关闭对话框;
“Help”在线帮助;
“New…”新建工具栏;
“Rename…”工具栏改名;
“Delete”删除工具栏;
“Large buttons”工具栏的图标以大图标的形式显示(在有大图标的情况下);
“Show ToolTips on toolbars”当鼠标放到工具栏的某个图标时的提示该命令的名称;
“Show shortcut keys in ToolTips” 当鼠标放到工具栏的某个图标时的提示该命令的热键。
操作:单击“New…”按钮,弹出“New Toolbar﹙新工具栏﹚”对话框,见图6-7。

图6-7 新工具栏对话框在“Toolbar name﹙工具栏名称﹚”输入框内输入用户自定义的工具栏名称“学习”﹙系统默认为Toolbar1﹚,然后单击“OK”按钮。现在在CASS图形窗口上方会出现一个名为“学习” 的空工具栏。此时,这个工具栏只有一个按钮宽,可以将他拖动到任意位置。
6.3.2 工具栏按钮的添加、删除
1.工具栏按钮的添加
﹙1﹚移动鼠标至屏幕工具栏上按右键,系统便弹出一个下拉菜单,如图6-5所示;
﹙2﹚点击“Customize…”(自定义)项,或者在命令行输入:TBCONFIG﹙工具栏配置﹚命令都会击活一个工具栏对话框。如图6-6所示:
﹙3﹚选择“Command”(命令)属性页。如图6-8所示:

图6-8 自定义工具栏对话框各栏功能说明如下:
“Categories”命令的分类显示;
“Command”命令及其相对应的图标;
“Description”命令简单的描述;
“Tip”使用提示;
“Close”关闭对话框;
“Help” 在线帮助。
﹙4﹚在“Categories”项中选择要添加的类,对应的“Command”项列出添加类中所包括的命令。从中选择可用的按钮图标,鼠标左键点击下方要添加工具栏按钮的图标,按住左键不放,移动鼠标到屏幕工具栏上要添加的地方,该处显示黑色竖栏。将选中的图标拖动到的工具栏内,即可将其添加到工具栏上。现在我们将Modify类中的Move命令添加到刚才定义的“学习”工具栏中(在“Categories”项中选择Modify类,在“Command”项中选择Move命令)。修改中的界面见﹙图6-9﹚,修改后的界面见(图6-10)。

图6-9 修改中界面松开左键,添加完毕。工具栏上将多出该按钮图标。如图6-10所示:

图6-10 完成修改的界面
2.工具栏按钮的删除
﹙1﹚移动鼠标至屏幕工具栏上按右键,系统便弹出一个下拉菜单,如图6-5所示;
﹙2﹚点击“Customize…”(自定义)项,或者在命令行输入:TBCONFIG﹙工具栏配置﹚命令都会击活一个工具栏对话框。如图6-6所示
﹙3﹚选择要删除的工具栏按钮,鼠标左键点击要删除的屏幕上工具栏按钮的图标,工具栏对话框激活“Button Properties”属性页,鼠标右键选择“Delete”项(如图6-11),得到图6-12删除确认对话框,单击“确定”按钮删除。

图6-11 删除选择界面

图6-11 删除确认对话框
3.工具栏按钮的创建
﹙1﹚移动鼠标至屏幕工具栏上按右键,系统便弹出一个下拉菜单,如图6-5所示;
﹙2﹚点击“Customize…”(自定义)项,或者在命令行输入:TBCONFIG﹙工具栏配置﹚命令都会击活一个工具栏对话框。如图6-6所示
﹙3﹚从“Categories”项中选择“User defind”类,在“Command”项中选择“User Defind Button”类(如图6-12),按住左键不放,移动鼠标到屏幕“学习”工具栏上要添加的地方,该处显示黑色竖栏。放开鼠标左键,这样一个空白的按钮就添加在“学习”工具栏中。

图6-12 自定义命令界面此时该按钮还不能做任何操作,必须编辑按钮的属性,为按钮指定一个命令才有用。
如果从“Categories”项中选择“User defind”类,在“Command”项中选择“User Defind Flyout”类并拖放到“学习”工具栏中,则可以创建一个相关命令的集合(图6-13)。

图6-13 自定义命令界面
6.3.3 工具栏按钮属性的编辑
﹙1﹚移动鼠标至要编辑的工具按钮上按左键,系统便激活工具栏对话框的“Button Properties”属性页,如图6-14所示;

图6-14 按钮定制对话框
“Button Properties”属性页如图6-15所示。

图6-15 按钮定制对话框各栏功能说明如下:
“Name”输入框:用于输入按钮的名称;
“Description”输入框:用于输入按钮的简单描述;
“Macro associated with this button”输入框:用于输入按钮执行命令;
“Button Image”组选框:用于编辑或选择按钮的图标;
“Edit…”按钮:用于打开按钮编辑对话框;
“Apply”按钮:改动生效;
“Reset” 按钮:按钮属性重设;
“Close” 按钮:关闭自定义工具栏对话框;
“Help” 按钮:在线帮助。
例如:现新建定义一按钮。
﹙1﹚首先新建一按钮。具体作法见6.3.2节中的“工具栏按钮的创建”。
﹙2﹚移动鼠标至新建按钮上按右键,系统便弹出按钮定制对话框。
﹙3﹚在“Name”输入框内输入“多功能复合线”作为按钮的名称。
﹙4﹚在“Description”输入框内输入该按钮的简单描述信息,这可由用户根据自己的需要决定。如:“自定义功能强大的画线工具”。
﹙5﹚“Macro associated with this button”输入框输入^C^C^Pdjf3,两个^C^C原本就位于宏输入框内。做完这一步后,就定义好了一个按钮的核心内容,
见图6-16。

图6-16 按钮特性对话框
﹙6﹚编辑按钮图标。
点击“Button Image”组选框中“Edit…”按钮打开按钮编辑对话框,如图6-17所示;

图6-17 按钮编辑对话框正中间为绘图区即图标放大图;
左上方为图标预览;
最上方为绘图工具,依次为点笔(一次只能涂一个栅格)、线笔(一次绘一条栏线)、圆笔(一次绘一个栏圆)、橡皮擦(一次擦除一个栅格);
右上方为颜色框;
“Grid”前的方框为栅格显示开关;
“Clear”为清除图标;
“Open…”为浏览调用其他图标﹙.bmp文件﹚;
“Undo”为取消上步对图标的编辑,只能回退一次;
“Save as…”图标改名另存;
“Save”图标存盘。如用户未给出图标名称,系统将默认文件名为ICON.BMP。
“Close” 关闭编辑器;
“Help” 打开在线帮助文件。
﹙7﹚定制、修改完成,关闭编辑器,如未存盘,系统便弹出一个对话框,如图6-18所示;

图6-18 保存修改对话框
﹙8﹚点击“Apply”按钮使改动生效(图6-19)。

图6-19 完成编辑后的界面现在可以单击“Close”按钮关闭工具栏对话框,测试一下新建的工具栏的运行结果。
6.3.4 建立工具栏按钮组以上是建立单个按钮的步骤,下面介绍工具栏按钮组的建立方法。
(1)从“Categories”项中选择“User defind”类,在“Command”项中选择“User Defind Flyout”类并拖放到“学习”工具栏中,则可以创建一个相关命令的集合(图6-13)。
(2)用鼠标单击刚刚建立的命令集合按钮,系统会弹出图6-20所示的对话框。

图6-20 成组命令编辑对话框
(3)在图6-20单击“确定”按钮进入工具栏按钮组的编辑(图6-21)。

图6-21 成组命令编辑界面各栏功能说明如下:
,Toolbar associated with this flyout”列表框:用于选择添加工具栏按钮组所包含的命令;
,Toolbar preview”组选框:用于显示所选工具栏按钮组命令的图标;
“Apply”按钮:改动生效;
“Reset” 按钮:按钮属性重设;
“Close” 按钮:关闭自定义工具栏对话框;
“Help” 按钮:在线帮助。
(4)“Toolbar associated with this flyout”列表框中选择“修改II”类,单击“Apply”按钮。见图6-22。

图6-22 成组命令应用界面
(5)关闭工具栏对话框,测试新建的工具栏的运行结果。
编辑修改现有按钮,用户只需直接编辑其按钮特性,具体做法见“6.3.3 工具栏按钮属性的编辑”的有关内容。
另用编辑菜单文件的方法也可编辑、创建工具栏,请参阅有关AutoCAD开发、定制的书籍。
6.4 命令的用户化
CASS5.0系统目录下的ACAD.PGP文件 (如:C:\CASS50\SYSTEM\ACAD.PGP)用于存放CASS5.0定义的命令。该文件分为两部分,第一部分定义外部命令;第二部分定义命令别名。每一部分均由若干个命令定义项组成,任一命令定义项 均占一行。此外,文件中还可包含用户对有关的命令定义所作的注释和说明。注释项均以分号“;”引导,且每一命令占一行。修改ACAD.PGP文件后,需重新初始化,使用REINIT命令。所显示的对话框如图6-23 所示。

图6-23 重新初始化对话框在ACAD.PGP中定义CASS命令别名和缩写用户可以通过ACAD.PGP的命令别名项中定义其别名,把经常使用的CASS5.0命令简化成缩写,从而使用户简单击键就能执行CASS的相应命令,而不需要输入较长的命令名。
命令别名的定义格式为:
<命令别名>,*<命令名>
每一行定义一个命令别名,且只包含由逗号分开的两个文本字段。
操作方法及说明:
1.命令别名指用户在“命令﹙command﹚:”提示符下键入的命令缩写。
2.用户必须在命令名前加一个星号“*”,这样CASS才能把该行当作命令别名的定义。
下面是几种可用的命令名:
﹙1﹚完整的CASS内部命令。内部命令可到CASS系统目录下的acad.mnu中查询,acad.mnu的结构参见本章第二节“CASS5.0工具栏、菜单的用户化”。
注意:菜单中地物绘制命令如:“[cass1(kzd3,三角点)]^C^C^Pdd;131100;^P”段的dd命令不能被定义,带参数的命令不能被定义。
﹙2﹚用户定义的ARX或Auto LISP命令名
﹙3﹚设备驱动程序名例如:地物编辑菜单的重新生成命令的命令别名查找ACAD.MNS,找到重新生成命令对应的命令行,如下所示:
……
[地物编辑&A]
[重新生成]^C^Crecass;
[--]
[线型换向]^C^C^Phuan;^P
……
重新生成命令名recass,注意要忽略^C^C、^P等菜单特殊符号。加入到ACAD.PGP文件中,取别名为“rr”。修改ACAD.PGP如下所示,保存修改即可重新初始化调用。
……
rr,*recass
kk, *askan
h *huan
……
6.5 编码的用户化
6.5.1 野外操作码的用户化
CASS5.0的野外操作码由描述实体属性的野外地物码和一些描述连接关系的野外连接码组成。CASS5.0专门有一个野外操作码定义文件JCODE.DEF,该文件是用来描述野外操作码与CASS5.0系统内部绘图编码的对应关系的,用户可编辑此文件使之符合自己的要求,
野外操作码定义文件JCODE.DEF用于定制有码作业时的野外操作码,文件每行定义一个野外操作码,最后一行用“END”结束,
文件格式为:
野外操作码,CASS5.0编码
……
END
野外操作码的定义有以下规则:
①野外操作码有1-3位,第一位必须是英文字母,大小写等价,后面是范围为0-99的数字,无意义的0可以省略,例如,A和A00等价、F1和F01等价。
②野外操作码后面可跟参数,如野外操作码不到3位,与参数间应有连接符“-”,如有3位,后面可紧跟参数,参数有下面几种:控制点的点名;房屋的层数;陡坎的坎高等。
③野外操作码第一个字母不能是“P”,该字母只代表平行信息。
④Y0、Y1、Y2三个野外操作码固定表示圆,以便和老版本兼容。
⑤可旋转独立地物要测两个点以便确定旋转角。
⑥野外操作码如以“U”,“Q”,“B”开头,将被认为是拟合的,所以如果某地物有的拟合,有的不拟合,就需要两个野外操作码。
⑦房屋类和填充类地物将自动被认为是闭合的。
⑧房屋类和符号定义文件第14类别地物如只测三个点,系统会自动计算给出第四个点。
⑨对于查不到CASS编码的地物以及没有测够点数的地物,如只测一个点,自动绘图时不做处理,如测两点以上按线性地物处理。
系统默认野外操作码详见《用户手册》附录A。
用户可以编辑JCODE.DEF文件以满足自己的需要。
6.5.2 输出编码的用户化为了与其它应用系统,特别是GIS具有良好的数据接口,CASS5.0提供了多种输出形式,其中应用最广泛的就是CASS交换文件和DXF文件。这两个文件都可以在输出地图实体的空间数据的同时,输出代表实体属性的编码。一般情况下,这种编码就是CASS本身的内部码(见《参考手册》附录A)。考虑到不同的应用系统具有不同的编码方案,CASS5.0提供了用户定义输出编码的功能。我们所这种由用户定义的输出码称为“用户码”。
用户可以通过修改图元索引文件INDEX.INI来定义用户码。INDEX.INI的数据结构见《参考手册》第五章。用户只需用文本编辑工具将每行的最后一个数据项“用户编码”的内容改为自已定义的编码就可以了。
在完成上述工作后,用户用“数据处理”下的“生成用户编码”功能将“用户编码”写入每个图元的“厚度”属性,就达到了输出码用户化的目的。
6.6 点符号、线符号、图层的自定义
6.6.1 CASS5.0符号编码规则及编码定义文件符号编码规则:
骨架线编码定义按如下形式:
1+中华人民共和国国家标准地形图图式序号+顺序号+0或1
说明:“1”起始必须加
,中华人民共和国国家标准地形图图式序号”指中华人民共和国国家标准地形图图式95年版中符号的序号﹙去除点﹚。如三角点序号为3.1.1编码用311。
,顺序号”此类符号顺序号,从零开始。
,0或1”必须加例如:三角点编码:1+311+0+0,即131100
一般房屋编码:1+411+0+1,即141101
砼房屋编码:1+411+1+1,即141111
用户也可随意编码,但骨架线必须是六位并和原CASS编码不能重复。
CASS系统不提供有辅助符号的定制功能,故用户可不必了解下面的辅助符号编码。
辅助符号位编码定义按如下形式:
骨架线编码+“-”+顺序号
说明:“-”连接符
,顺序号”辅助符号顺序号例如:围墙辅助符号位的短线编码:144301-1,辅助长线编码:144301-2
符号定义文件WORK.DEF
该文件将CASS5.0所有的符号划分为20个类别,按统一的格式记录定义各个符号,是CASS5.0绘图部分的核心文件,格式如下:
CASS50编码,符号所在图层,符号类别,第一参数,第二参数,符号说明
……
END
所有符号按绘制方式的不同分为0—19类别,各类别定义在“《参考手册》附录A:CASS50的内部编码”中有详细说明。
图元索引文件INDEX.INI
该文件记录每个图元的信息,不管这个图元是不是主符号(骨架线),所谓图元是最小的图形单位,一个复杂符号可以含有多个图元,INDEX.INI的数据结构见《参考手册》第五章。
图元只有点状和线状两种,如果是点状图元,主参数代表图块名,附属参数代表图块放大率;如果是线状图元,主参数代表线型名,附属参数代表线宽。
该文件每行代表一个符号,最后一行以“END”结束,用户可编辑这个文件,修改现有符号或加入新的符号,文件的具体内容见《参考手册》附录A。
6.6.2 自定义点符号工作流程:
1.绘制点符号,按照图式实际尺寸绘制。注意符号的定位点应设在图形的插入基点。
2.图形存盘,目录为CASS的BLOCKS目录﹙如C:\CASS50\BLOCKS﹚,文件名为“GC+三位数字”。﹙注意不要与CASS已有文件重名,CASS已有点符号图块都存放在BLOCKS目录﹙如C:\CASS50\BLOCKS﹚中﹚。
3.赋予符号编码,在WORK.DEF文件中登记。
WORK.DEF文件格式如下:
CASS50编码,符号所在图层,符号类别,第一参数,第二参数,符号说明
……
END
文件具体内容见《参考手册》附录A。
4.制作供图象块菜单使用的幻灯片文件﹙扩展名为.SLD的文件﹚及包含所需幻灯片的幻灯片库﹙扩展名为.SLB﹚。
5.编辑ACAD.MNS文件,在IMAGE﹙图象块﹚子菜单节,添加绘制该符号项。
ACAD.MNS文件结构详见本章第二节CASS菜单的用户化。
6.编辑INDEX.INI文件登记图元的信息、自定义用户码。
INDEX.INI文件格式如下:
CASS50编码,主参数,附属参数,图元说明,用户编码图元只有点状和线状两种,如果是点状图元,主参数代表图块名,附属参数代表图块放大率;如果是线状图元,主参数代表线型名,附属参数代表线宽。
该文件每行代表一个符号,最后一行以“END”结束,文件的具体内容及各图元的编码详见《参考手册》附录A。
例如:定义电话亭符号。
第一步:按照图式实际尺寸绘制,绘制完毕将符号图形整体拖动,使其底边中心坐标位0,0。

图6-24 电话亭图示
第二步:图形存盘,目录为CASS的BLOCKS目录﹙如C:\CASS50\BLOCKS﹚,文件名为“GC+三位数字”。﹙注意不要与CASS已有文件重名,CASS已有点符号图块都存放在CASS的BLOCKS目录﹙如C:\CASS50\BLOCKS﹚中﹚。定义电话亭符号文件名为“GC299”。
第三步:编辑WORK.DEF文件,该符号为不旋转的点状地物,类别为1,第一参数是图块名,第二参数不用;编辑如下所示:
……
158800,DLDW,8,continuous,厕,厕所
159100,DLDW,1,gc299,0,电话亭
161101,DLSS,11,tl1,-1.435,依比例一般铁路
……
第四步:﹙1﹚图标绘制完毕,并置于屏幕中央,如图示。命令行键入制作幻灯片的命令,制作幻灯片。
命令﹙Command﹚:mslide
如图6-25所示。

图6-25 图标绘制界面系统弹出创建幻灯片对话框,如图6-26所示:

图6-26 创建幻灯片对话框将幻灯片保存,例如C盘的temp目录,如上图。给定文件名,如dw1.SLD。
﹙3﹚进入MSDOS方式,进入幻灯片保存的目录,如C盘的temp目录
﹙4﹚命令提示符下﹙如:c:\temp>﹚键入命令:
dir *.sld>mmm/b
将该目录下所有.SLD文件打包,文件名为“mmm”﹙文件名任意给定﹚,“/b”是操作符。如图6-27所示。

图6-27
﹙5﹚命令提示符下﹙如:c:\temp>﹚键入命令:
C:\acad2002\support\slidelib c:\cass50\system\cass4<mmm
制作包含该目录所有幻灯片的幻灯片库﹙扩展名为.SLB﹚,文件名为cass4.lib,CASS5.0已有三个幻灯片库分别为CASS1,CASS2,CASS3。故新建的幻灯片库从CASS4开始。
假定AutoCAD2002安装在默认目录下。
第五步:编辑ACAD.MNS文件,如下:
……
[cass1(dw133,散坟)]^C^C^Pdd;158703;^P
[cass4(dw1,电话亭)]^C^C^Pdd;159100;^P
**DMTZ
[地貌和土质]
[cass3(dm4,一般高程点)]^C^C^Pdd;202101;^P
……
[幻灯库名(幻灯片名,提示名称)]^C^C^CPdd;代码;^P
重新编译菜单文件﹙方法见第六章第六节﹚。最终图块菜单如图6-28所示:

图6-28 独立地物图块菜单第六步:编辑INDEX.INI文件,如下:
……
158800,continuous,0.000,厕所,158800
159100,gc299,0.000,电话亭,159100
161101,continuous,0.200,依比例一般铁路,161101
……
6.6.3 自定义线符号工作流程基本同点状符号,具体如下:
1.定义线型。
CASS系统的线符号具有线型。CASS提供的标准线型库中包括通用线型和ISO线型,保存在CASS系统目录下的外部文件acad.lin中。线型库文件是一个文本文件,用户可以通过LINETYPE命令随时定义或在文本编辑器中直接编辑线型。
普通线型仅局限于点、线、空格,AutoCAD提供了复合线型的定义,用户可在定制的线型中嵌入单个文本字符串或SHX文本中的形。形是一种能用直线,圆弧和圆来定义的特殊实体,它可很方便地被绘入图形中,并按需要按比例系数及旋转角度,以获得不同的位置和大小。如果符号复杂,由许多圆弧﹙规则或不规则﹚、文字等组成,利用形,用户可方便灵活的定义各种复杂的符号。
线型及形的定义将在下面详细介绍。
2.赋予符号编码,在WORK.DEF文件中登记。
WORK.DEF文件格式如下:
CASS50编码,符号所在图层,符号类别,第一参数,第二参数,符号说明
……
END
文件具体内容见《参考手册》附录A。
3.作供图象块菜单使用的幻灯片文件﹙扩展名为.SLD的文件﹚及包含所需幻灯片的幻灯片库﹙扩展名为.SLB﹚。
4.编辑ACAD.MNS文件,在IMAGE﹙图象块﹚子菜单节,添加绘制该符号项。
ACAD.MNS文件结构详见本章第二节CASS菜单的用户化。
5.编辑INDEX.INI文件登记图元的信息、自定义用户码。
INDEX.INI文件格式如下:
CASS50编码,主参数,附属参数,图元说明,用户编码图元只有点状和线状两种,如果是点状图元,主参数代表图块名,附属参数代表图块放大率;如果是线状图元,主参数代表线型名,附属参数代表线宽。
该文件每行代表一个符号,最后一行以“END”结束,文件的具体内容及各图元的编码详见《参考手册》附录A。
线型文件
线型文件可以包含多个线型定义,空行和分号后面﹙注释﹚的内容在编译时均被忽略。每一定义具有如下形式的标题行:
*线型名[,形状描述]
后跟如下形式的格式行:
alignment,dash-1,dash-2,…
例如,定义一线型,结构为:
·短划线,0.5个绘图单位长;
·空格,0.25个绘图单位长;
·点
·空格,0.25个绘图单位长。
则该线型可以定义成如下形式:
*DD1,___,___,___,___
A,0.5,-0.25,0,-0.25
其中DDI是线型名,形状描述字段是由LAYER Ltype 命令序列所显示的线型描述。在这里描述只是短划线“___”和圆点“.”形的组合。
形状描述是可选择项,可以是点、空格和短划线的序列,也可以是说明,如“Use this linetype for hidden lines”﹙此线型用于表示隐藏线﹚,用户对线型的描述不能超过47个字符。形状描述也可以省略,此时线型名后不能有逗号。
Alignment字段为直线、圆和圆弧指定对齐方式。使用A型对齐,保证直线的端点和弧的起点及终点处为短划线。这种对齐方式,首短线划的值应大于等于0﹙即点或下笔段﹚,第二个短划线的值应小于0﹙提笔段﹚,并从第一个短划线说明开始,至少要有2个短划线结构说明。
Dash-n字段指定组成线型的段的长度。若长度为正,则表示是下笔段,即为要画出的线段;若长度为负,则表示为一提笔段;长度为零则画出一个点。在.LIN文件中,每个线型定义应限制在280个字符以内。
定义线型下面介绍通过编辑线型文件ACADISO.LIN或 ACAD.LIN的方法建立线型的过程。
例如:SOUTH1由一个单位长度的下划线和三个点组成,且点之间相隔四分之一各单位。通过文本编辑器编辑线型文件的过程如下:
打开线型文件,在文件的最后加入下面两行:
*SOUTH1,—,.,—,..
A,1.0,-0.25,0,-0.25,0,-0.25,0,-0.25
保存此文件退出文本编辑器,同样方法修改ACAD.LIN﹙必须保持两文件相同﹚。
加载线型上面的例子完成了给ACAD.LIN文件加入新的线型定义,但并没有将它加到图形的LTYPE线型符号表,即没有应用于对象。要加载一线型定义到当前绘图中,在Command:提示下键入LineTYPE命令,弹出对话框如图6-29:

图6-29 线型管理对话框
“Delete” 删除选中线型。
“Current” 将选中线型置为当前系统默认线型。
“Show details” 显示线型详细设置。
“Load..” 弹出加载或重载线型对话框,如图6-30。选择线型文件及其拥有的线型即可加载。如ACADISO.LIN文件的SOUTH1。

图6-30 加载或重载线型对话框复合点划线型及其使用复合点划线型功能是线型的定义不再局限于线划、点、空格。用户可在定制的线型中嵌入单个文本字符串或由SHX文本定义的形。
复合线型定义语法的开头与前述简单线型相同,在定义行的方括号内增加了特殊参数以告诉CASS如何插入文本或形。
例如:下面的线型定义,将显示出两种线型的形式。
*GPS_LINE,_—_GPS_—_GPS_—_GPS
A,0.5,-0.2,["GPS",STANDARD,S=0.1,R=0.0,X=-0.1,Y=0.05],-0.25
*FENCE_LINE,_—__0_—__—__
A,0.25,[CIRC1,LTYPESHP.SHX,S=0.1],-0.2,1
绘制出线型如下所示:
—GPS—GPS—GPS—
GPS_LINE
——0——0——0——
FENCE_LINE
复合线型嵌入文本字符串的语法为:
["string",style,R=n,A=n,S=n,X=n,Y=n]
嵌入形的语法是:
[shape,shape_file,R=n,A=n,S=n,X=n,Y=n]
“string”是双引号中的由一个或多个字符组成的文本串,shape_file文件中的形名。shape_file中必须有形,否则CASS不允许用户使用此线型。
Style是文本式样的名字,shape_file为CASS的形文件。如果当前图形中没有style,CASS则不允许使用此线型。如果shape_file没有位于库搜索路径中,CASS会提示并要求用户选择另外一个SHX文件。在shape_file中可以包括路径。
其余五个字段R=、A=、S=、X=、Y=可为选择的转换分类。每种转换分类后面的n表示任意数字。
R=n表示文本或形相对于当前线段方向的转角。默认时为0表示CASS文本或形的方向与线段方向一致。
A=n表示文本或形相对于世界坐标系的X轴的绝对转角。当希望文本或形总是以水平形式出现,与线段的方向无关时,可采用A=0。用户可以指定R=和A=,但两者不能同时指定值。如果两个都没有指定值,CASS采用R=0。R=和A=转角以“度”为单位,如果希望以弧度或梯度作为单位,数字后面必须加R或G。
S=n确定文本或形的比例系数。如果使用固定高度的文本式样,CASS将此高度乘以n。如果使用的是可变高度﹙即0度﹚的式样,CASS则会把n看作绝对高度。对于形而言,S=缩放系数会使形从其缺省缩放系数1.0按此值往大或往小变化。在任何情况下,CASS通过S=缩放系数与LTSCALE﹙例如:0.5﹚和CELTSCALE的乘积来确定高度或缩放系数。因此,应该将S=确定成正常LTSCALE﹙例如:0.5﹚下以1:1为输出比例时所对应的值。这样文本或输出的图纸上以相对应的尺寸出现。
X=n和Y=n为可选项,它们确定相对于线型分类中的当前点的偏移量。默认时CASS将文本串的左下角点或形的插入点放在此当前点。两个偏移量分别沿着当前线段方向﹙对于X=﹚,和沿着与当前线段垂直方向﹙对于Y=﹚度量,就象有一个局部坐标系,它的X轴从当前线段的第一个端点指向第二个端点。因此正的X=偏移量会使文本或形朝着当前线段的第二个端点的方向移动,正的Y=偏移量会使文本或形朝着X=方向的90度方向逆时针移动。这两个偏移量使文本或形的定位更精确。
例如定义栅栏符号,如图6-31所示:

图6-31 栅栏符号第一步:定义线型,线型文件内容如下:
*444,--|---@---|---@---|---@---|---@---|---@---|---@------
A,4.5,[2,Aaa.SHX,Y=1],4.5,-0.5,[3,Aaa.SHX],-0.5
AAA.SHP形文件﹙编译后为AAA.SHX﹚相关内容为:
……
*145,4,2
003,00A,0aC,0
*146,9,3
003,00A,002,050,001,00A,(005,000),0
……
其他各步操作同点状符号制作。
6.6.3 定义形文件形的概念形是一种能用直线、圆弧和圆来定义的特殊实体,它可很方便地被绘入图形中,并按需要按比例系数及旋转角度,以获得不同的位置和大小。
在CASS中,形从定义到绘入图中需经以下几个步骤:
①按规定格式进行形定义
②用文本编辑器或字处理器建立形文件。形文件类型为“.SHP”。
③对已生成的形文件进行编译,生成“.SHX”文件。
④装入编译后的形文件﹙“.SHX”文件﹚。
⑤使用形。
定义形定义形的文件称为形文件,它是一种“.SHP”类型的文件,并具有一定格式。CASS将忽略所有空行及分号右边的内容。建立或修改形文件可使用文本编辑器或字处理器,用文本保存文件。
形定义的格式形定义具有一定的格式和规定,用户必须严格遵守。每个形的定义包含有一个标题行和若干形描述行,总体格式如下:
标题行描述行各行详细情况如下:
﹙1﹚标题行标题行以“*”开始,说明形的编号、大小及名称。格式如下:
*形编号,字节数,形名称
·形编号,每个形都定义有一个编号,占用一个字节,编号范围在1~255之间。也就是说,一个形文件最多定义255个形。
·字节数,是用于描述一个形所需的数据字节数,包括形描述结束符“0”所占用的字节。每个形的定义字节数不得超过2000。
·形名称,每个形必须有一个名字,且这个形名必须大写,否则形名会被忽略。
﹙2﹚描述行标题行之后为描述行,它是用数字或字母来描述形所包含的线段、弧的大小及方向。数字和字母分成一个一个字节,字节之间用逗号分开。描述行以“0”结束。每一形描述的字节数不能超过2000个,包括结束符“0”。
描述行的格式如下:
长度及方向码,特殊码,
·长度及方向码描述一个直线矢量的长度和方向需用3个字符,第一个必须是0,它表示后边两个字符是十六进制数,第二个字符代表矢量的长度,有效值为1~F﹙1~15个单位长﹚,第三个字符代表矢量的方向,方向编码见图6-32。

图6-32 矢量方向编码下面举例来构造一个图6-33所示的形。

图6-33 形“DBOX”
该形的描述如下:
*255,6,DBOX
014,010,01C,018,012,0
第一行为标题行,它说明形编号是230,定义所占用字节数为6,形名为“DBOX”。
第二行为描述行,用5 个字节描述五条线段,每个字节的第一位“0”代表后边两位数是十六进制数,第二位“1”表示矢量长度的单位长度,第三位数字表示矢量方向,最后一个字节“0”表示形定义的结束。
特殊码为定义不同对象,如直线段、圆弧以及描述各种状态,如抬笔、落笔和形定义结束等,CASS设定了一些特殊描述码。这些码是专用的,前两个字符均为0。它们是:
000 形定义结束
001 激活绘图模式﹙落笔﹚
002 关闭绘图模式﹙抬笔﹚
003 用下一个字节除矢量长度
004 用下一个字节乘矢量长度
005 将当前位置压入栈
006 将栈中内容弹出当前位置
007 画出由下一个字节给出的子形
008 下两个字节给出﹙X,Y﹚位移量
009 由﹙0,0﹚结束的多个X-Y位移
00A 由下两个字节定义八分弧
00B 由下五个字节定义的小段弧
00C 由﹙X,Y﹚位移和凸度定义的弧
00D 多个指定凸度的弧
00E 只在垂直文本方式处理下一个命令
下面详细介绍这些专用码的意义:
1.代码0:形结束该码只是标志形定义的结束。
2.代码1和代码2:绘图模式控制这些码控制绘图模式:当形的开始和代码为1时,绘图模式为打开。当绘图模式为打开时,落笔画线;代码为2时,绘图模式为关闭,此时只移动新位置而不画线。
3.代码3和代码4:尺寸控制代码3和代码4控制每一个矢量的相对尺寸。在shape命令中指定的高度是水平或垂直矢量﹙0,4,8,c﹚的初始长度。
代码3和代码4后面附带一个包含整数的比例因子﹙从1~255﹚的字节。如果想用形的高度来确定整个形的大小,并用10个矢量长度来绘制它,可以用3,10来指定高度比例。比例因子在同一形内积累,亦即,先乘以2,再乘以6,最终产生的比例因子为12 。一般来说,在形结束前,还需修正比例因子,特别是对子形和文本字体来说,CASS不会因为形结束而恢复以前的比例因子。
4.代码5和代码6:位置的保存与恢复代码5和代码6用于画形时把当前坐标压入﹙保存﹚和弹出﹙重置﹚。这样就能从形中的后面的点返回到原先的位置。弹出时必须把压入栈中的所有内容全部弹出。位置栈只能放4个值。当栈满﹙由于过多的压栈或忘记弹栈﹚并画形时,就显示如下信息:
Position stack overflow in shape nnn﹙形编号nnn栈溢出﹚
相反,如果堆栈已空还要进行弹出操作或弹出的数量超过所压入的数量,将产生下溢,在画形时将显示如下信息:
Position stack underflow in shape nnn﹙形编号nnn栈下溢﹚
5.代码7:子形代码7是子形调用。附在代码7后面的是一个从1~255的形编号。这时就画出该形编号所代表的形﹙这些形必须在同一个形文件中﹚。注意,绘图模式对新的形并不复位。当完成子形之后,恢复当前形的绘制。
6.代码8和代码9:X-Y位移正常的矢量字节只画16个方向,最长的长度为15。这些限制有助于使形定义更简单,因为这样的线段都是前面所说的标准线段。但这样会产生一些局限。因此,代码8和9允许使用X-Y位移量来画非标准的矢量。代码8后面必须跟下列格式的两个字节:
8,X_displacement,Y_displacement
X和Y方向位移的变化范围是-128~+127,正数前面的+号是可选的,而括号用于提高可读性。例如,8,﹙-10,3﹚将导致一个向左移动10个单位并向上移动3个单位的矢量被画出。两个位移量字节之后形返回到正常矢量模式。
当需画出一系列非标准矢量时,使用代码9。该码后面可跟任意个﹙X,Y﹚位移对,并由一个﹙0,0﹚对结束。例如:
9,﹙3,1﹚,﹙3,2﹚,﹙2,-3﹚,﹙0,0﹚
画出三个非标准矢量后,返回到正常的矢量模式。为了让CASS识别正常的矢量或特殊码,所有的﹙X,Y﹚位移对序列以﹙0,0﹚结束。
7.代码00A:绘制八分弧特殊码00A﹙或10﹚使用下面的两个字节来定义一段弧。这种类型的弧之所以被叫做八分弧,是因为它的跨度是一个或多个45度弧,并以八分弧边界开始和终止。如图6-34所示,八分弧从时钟上的三点钟位置逆时针方向编号。

图6-34 八分弧方向的编号弧的说明是:
10,radius,﹙-﹚0SC
行中的10即为八分弧的专用码﹙00A的十进数﹚,半径radius的值可以是1~255的任何一个值。下一个字节指出弧的方向﹙正是逆时针,负是顺时针﹚,S为起始八分弧的符号,其值为0~7,C是该八分弧的跨度,该值是一个0~7的值,0意味着有八个八分弧或一整弧,括号可用来提高可读性。
例如,考察下列形定义段:
…012,10,﹙1,-032﹚,01E…
这段程序将向右上方绘制一单位矢量,然后从第三个八分弧开始绘制半径为一个单位的两段八分弧,最后沿右下方向绘制一个单位的矢量,如图6-35所示

图6-35
8.代码00B:非标准弧特殊码00B﹙11﹚用于画那些起始位置和终了位置是非八分圆角边界的弧。该定义使用五个字节:
11,Star_offset,end_offset,high_radius,low_radius,﹙-﹚0SC
起始和终了偏移Start _offset和end_offset表示弧的开始处和结束处离八分弧边界的距离。而high_radius则为半径值的高8位标记,若半径值小于255各单位值,该值将为零。除此之外,半径、控制字节与八分弧规范完全一样。八分弧﹙C﹚是包含这段弧的八分弧个数,而且0亦即为8。通过计算起始八分弧的边界﹙45度的倍数﹚与弧的起点的度数的差,可以决定起始偏移量。然后将该差值乘以256再除以45。若弧的起点在八分弧的边界上,则起始偏移为0。终止偏移角的计算与起始偏移角的计算相似,只是使用最后八分弧的边界值与弧的终止角的差值。若弧在八分弧上终止,则终止[偏移角为零。
例如,一个55度至95度半径为三个单位的非标准弧编码如下:
11,﹙56,28,0,3,012﹚
解释:
起始八分弧=1=45度
结束八分弧=2=90度
起始偏移角=56=[﹙55-45)*256/45]取整
终止偏移角=28=[﹙95-90]*256/45]取整
9.代码00C和代码00D﹙12和13﹚:凸弧特殊码00C及00D提供在形定义中包含部分弧的另一种方法。它们近似于代码8与代码9,允许指定﹙X,Y﹚位移。但是代码00C与00D允许在画弧时把凸起因子应用到偏移矢量中。代码00C画一个单段弧,而代码00D直到被﹙0,0﹚结束之前画多个单段圆弧。代码00C后面必须跟三个字节并用其描述该弧,如下所示:
0C,X_displacement,Y_displacement,Bulge
X和Y的位移值变化范围可以是-127 ~ +127,用于指出弧的曲度的凸起度﹙bulge﹚,其变化范围也是从-127 ~+127。如图 所示,如果由位移量所指定的线段的长度为D,线段中点的垂直高度为H,则凸起度为﹙﹙2*H/D﹚*127﹚。如果弧从当前位置到新的位置是顺时针方向,则符号为负。

图6-36 半圆弧半圆的凸度为127﹙或-127﹚,也是使用这些码所能表示的最大弧。凸度为零的弧也是有效的,它表示一条直线。
多段弧代码﹙00D或13﹚后跟零或多个圆弧且由一个﹙0,0﹚位移终止。例如,字母S的形描述可由下列序列来定义:
13,﹙0,5,127﹚,﹙0,5,-127﹚,﹙0,0﹚
在多段弧中,零凸起度由于其能表示直线段,所以非常有用,它比终止一个多段弧,插入一直线段再开始新的多弧段效率更高。
10.代码00E﹙14﹚:标志垂直文本命令代码00E﹙14﹚用于双方向的文本字体描述中,这时字体可以用于水平方向和垂直方向。当在字符定义中碰到该特殊码时,下一个码是处理还是被跳过,将取决于文本是水平方向还是垂直方向书写。若是垂直方向书写,则处理;否则,则跳过。对于水平方向文本,每一个字符的起点是基线的左端;而对于垂直方向文本,起点则是字符的顶部中心。在每个字符的结尾,必须提笔直到下一个字符的起点。对水平文本来说,结尾在右边;对垂直文本来说,结尾在下面。 特殊码00E﹙14﹚主要用于调整起始点与终止点的差。允许同一字符形定义既可以用在水平方向,也可以用在垂直方向。如下例所示,大写D既可以用于水平方向,也可以用于垂直方向。
*68,22,ucd
2,14,8,﹙-2,-6﹚,1,030,012,044,016,038,2,010,1,06c,2,050,
14,8,﹙-4,-3﹚,0
与该定义相对应的图形见图6-37。

图6-37
生成形文件
1.建立形文件形文件是一个ASCII码的文件,所以可利用文本编辑器或字处理器来建立一个.shp文件。
2.编译形文件用文本编辑器建立的.shp形文件,不能被CASS直接调用,必须经过编译才行。编译形文件就是把ASCII码的.shp文件转换成LOAD或STYLE命令所接受的格式,即生成.shx文件。
对形文件进行编译的命令及格式为:
命令﹙Command﹚:Compile
CASS将显示如图6-38所示“Select Shapes or Fort File﹙选择形或字体文件﹚”对话框,提示用户输入要编译的.shp形文件名。

图6-38 选择形或字体文件对话框编译完成后,屏幕上显示如下信息:
Compilation Successful.Output file XXX.Shx contains nnn bytes
被编译后形成的文件名与原定义的文件名相同,只是扩展名变成.shx,这是一个可被LOAD命令装入CASS系统的文件。
注意:如用户要直接使用形文件需执行第3、4步。只是调用形定义线状符号,到此即可编辑线型文件调用。
3.加载形文件编译后的形文件在被使用前必须被加载到CASS系统中。加载形文件的命令为LOAD,它的功能是将.shx文件后,系统将自动将其加载。
4.插入形当形文件被加载后,我们就可以用Shape命令把形插入当前绘制的图形中去。形被插入时,可以放大、缩小或改变其方向。Shape命令的格式如下:
Command﹙命令﹚:Shape
Shape name ﹙or?﹚<defult>:﹙输入形名﹚
Starting point:﹙用鼠标拖动形到某一插入点﹚
Height<1.0>:﹙输入数值或用鼠标拖动来控制形的高度﹚
Rotation angle<0>:﹙输入数值或用鼠标来控制形的旋转角度﹚
上次调用的最后一个形名将作为缺省形名提供。
也可用“?”来请求显示已加载的形文件列表,CASS将应答如下:
Shape﹙s﹚for list<*>:
此时回车给出空响应并列出所有的形名。
6.6.4 自定义图层图层是CASS中用户组织图形的最有效工具之一。用户可以利用图层来组织自己的图形或利用图层的特性如不同的颜色、线型和线宽来区分不同的对象。用户可以通过图层控制对话框设置图层。
图层特性管理器对话框定义图层左键点取“编辑菜单﹙E﹚”的“图层设定”菜单项,弹出图层特性管理器对话框,如图6-39所示。对话框中包含了图层的名称、颜色、线型、线宽等特性,可以对图层进行创建、删除、锁定/解锁、冻结/解冻,还可设置打印样式。利用此对话框,用户完全可以方便、快捷地设置图层的特性及控制图层的状态。

图6-39 图层特性管理器对话框
2.图层特性管理器对话框正上方各栏功能如下:
New按钮:创建新图层。单击按钮,CASS会根据在此之前已选择的图层的特性创建一个名称为Layer1的新图层。用户也可将此名字改成其他任何名字。如Layer1图层已存在,新图层就叫Layer2,依次类推。
快捷方式:①在列表框中单击鼠标右键,弹出快捷菜单,如图6-34所示。
②在弹出的快捷菜单中选择“新建图层”项。
Delete按钮:删除在列表框中选择的一个或多个图层。
注意:不能删除包含有图象的图层。
Current按钮:将在列表框中选择图层设置为当前层。
快捷方式:单击右键快捷菜单中选择“置为当前﹙C﹚”项。
命名图层过滤器﹙N﹚:下拉列表控制在名称列表框中显示的图层名称。默认情况下,CASS在列表框中显示所有的图层名称。除此以外,还可显示所有使用中的图层的名称;显示所有未使用中的图层的名称;所有属于外部参考图形文件的图层;所有除了属于外部引用文件的图层以及满足在“命名图层过滤器”对话框中所设置的条件的图层。
“命名图层过滤器”对话框如图6-41所示,用户可在此对话框中根据图层的名称、颜色以及线型来过滤图层,指定它们是打开还是关闭,是冻结还是解冻,是锁定还是解锁。单击对话框中[…]按钮,可打开“命名图层过滤器”对话框。
快捷方式:①在列表框中单击鼠标右键,弹出快捷菜单,如图6-40所示。

图6-40 快捷菜单
②在弹出的快捷菜单中选择“图层过滤器”各项。

图6-41 命名图层过滤器对话框
Invert filter复选框:使命名图层过滤器过滤结果相反。
2.图层特性管理器对话框中间栏下方从左至右包括如下几个设置及控制开关:
①图层名:单击图层名,该图层所在行以高亮显示,再单击图层名﹙或直接双击图层名﹚即可编辑。
注意:用户最好不要编辑CASS现有图层层名,以免CASS绘图时找不到符号对应图层。
②打开/关闭:用于控制图层的可见性。当关掉某一层后,该层上所有对象就不会在屏幕上显示,也不会被输出。但它仍存在于图形中,只是不可见。在刷新图形时,还是会计算它们。
③解冻/冻结:用户可以冻结一个图层而不用关闭它。被冻结的图层也不可见。冻结与关闭的区别在于在系统刷新时,简单关闭掉的图层在系统刷新时仍会刷新,而冻结后的图层在屏幕刷新期间将不被考虑。但以后解冻时,屏幕会自动刷新。
④锁定/解锁:已锁定的图层上的对象仍然可见,但不能用修改命令来编辑。当已锁定的图层被设置为当前层后,仍可在该图层上绘制对象、改变线型和颜色、冻结它们以及使用对象捕捉模式。
⑤颜色控制:点击颜色块,弹出“Select Color”选择颜色对话框。
⑥线型控制:点击线型,弹出“选择线型”对话框,选择图层默认线型。
⑦线宽控制:点击线宽,弹出“线宽”对话框,选择图层线宽。
⑧打印样式:选择打印样式。
⑨打印:打印开关,关闭为打印机图标上加一红色关闭标识。
设置符号绘制图层在WORK.DEF文件中找到定义该符号的行。修改“符号所在图层”,保存文件,重新启动CASS即可。
WORK.DEF文件格式如下:
CASS50编码,符号所在图层,符号类别,第一参数,第二参数,符号说明
……
END
图层控制子菜单也为用户提供了更简单方便的菜单命令。
图层设定:弹出图层特性管理器对话框,前面已介绍。
冻结ASSIST层:冻结CASS5.0的ASSIST层﹙骨架线存放图层﹚。
打开ASSIST层:解冻ASSIST层。上一操作的逆操作。
实体层(目标实体层: 转换实体图层。左键点取本菜单后,见提示。
提示:Select objects,用光标﹙此时变成一个小框﹚选择待转换的实体。
提示:Select objects,继续选取,直接回车则结束选取。
提示:Select object on destination layer or [Type-it] 选择目标实体层。
实体层(当前层:转换实体图层。与上一菜单操作过程相似。不同的是上一菜单中,所选实体层向所选目标层转换,而在本菜单中,所选实体层转换到当前图层来。
仅留实体所在层:左键点取本菜单后,用光标选取实体后回车,则系统将关闭所有除所选实体所在层外的图层。
冻结实体所在层:左键点取本菜单后,用光标选取实体,系统将马上将该实体所在层冻结。但如果该实体层是当前层,则命令区会提示,要求确认是否冻结当前层。
关闭实体所在层:与冻结实体所在层操作过程完全一样。
锁定实体所在层:左键点取本菜单后,用光标选取实体,其所在层即被锁定。
解锁实体所在层:将被锁定的图层解锁,是上一操作的逆操作。
合并实体所在层:左键点取本菜单后,用光标选取实体,可重复选取,回车结束选取,然后再选取目标实体层,则前面所选实体所在层都被合并到目标实体层中。
删除实体所在层:将所选实体所在层删除掉。
打开所有图层:将所有图层打开。
解冻所有图层:将所有图层解冻。
“屏幕菜单”的“设置图层”项设置图层选择了定点方式后,点击“屏幕菜单”的“设置图层”项,弹出如图6-42对话框:

图6-42 查询设置图层对话框中文解释各类地物对应的图层,双击右侧图标或左侧项目行,即可将该图层设置为当前层。