电脑技术学习

形和形文件

dn001
33.1.1简介
“形(Shape)”是AutoCAD中一种特殊的图形对象,其用法类似于块,但与块相比,形的图形构成较简单,但其所占用空间较小,且绘制速度较快。因此形适合于创建需要多次重复使用的简单图形,例如特殊符号或文字字体等。
形也是在形定义文件中定义的,形定义文件是以“.shp”为扩展名的ASCII文件。形定义文件需要编译为形文件后才能为AutoCAD使用,编译后的形文件与形定义文件同名,其扩展名为“.shx”。
33.1.2形的定义
1.形的定义格式
形的定义由标题行和定义字节行组成:
(1)标题行:标题行以“*”为开始标记,用于说明形的编号、大小和名称,其格式为:
*shapenumber,defbytes,shapename
其中各项意义如下:
shapenumber:形的编号,取值范围是1~258;在同一文件中每个形编号应保持唯一。
defbytes:表示形定义描述行的数据字节数,包括末尾的零;最大值为2000。
shapename:形的名称,要求必须大写。
(2)定义字节行:由描述代码组成,代码之间由逗号分开,最后以0结束。定义字节行可以有一行或多行。其格式为:
specbyte1,specbyte2,specbyte3,...,0
形定义文件的每一行最多可包含128个字符,超过此长度的行不能编译。AutoCAD忽略空行和分号右边的文字。
2.描述代码
形文件中描述代码包括矢量长度和方向代码和特殊代码两种。
(1)矢量长度和方向代码:矢量长度和方向代码是一个由三个字符组成的字符串。第一个字符必须为0,表示后面的两个字符为十六进制值;第二个字符给出了矢量的长度,取值为1~F;第三个字符表示矢量的方向,取值为1~F,具体含义如图33-1所示。
注意所谓矢量长度是指沿X轴方向或Y轴方向的长度,斜线的矢量长度应以其在X轴或Y轴上的投影长度为准。例如图33-1中16条线段的矢量长度的相同的。

(2)特殊代码:矢量长度和方向代码所定义的长度和方向仅为十几种,为了创建更丰富的形,AutoCAD提供了14种特殊代码(可使用十六进制或十进制),用于创建其他格式或指定特定操作。特殊代码的具体种类和意义如表1-1所示。
表33-1特殊代码及意义

代码(十六进制)

代码(十进制)

意义

000

0

表示形定义结束

001

1

表示激活绘图模式(落笔)

002

2

表示停止绘图模式(提笔)

003

3

表示用代码的下一字节去除矢量长度,即比例缩小

004

4

表示用代码的下一字节去乘矢量长度,即比例放大

005

5

将当前位置压入堆栈,即保存当前位置

006

6

从堆栈弹出当前位置,即恢复由代码005保存的最后一个位置

007

7

引用其它形,代码的下一字节指定了被引形的编号

008

8

由当前位置绘制线段,代码的下两个字节指定了线段在X、Y方向上的相对位移

009

9

由当前位置开始绘制一系列的线段,代码后面的字节分别指定了各个线段在X、Y方向上的相对位移,最后以(0,0)为结束符

00A

10

绘制八分圆弧

00B

11

绘制分数圆弧

00C

12

根据由X、Y位移和凸度绘制圆弧

00D

13

多个指定凸度的圆弧

00E

14

仅适用于垂直文字,用来将下一个字符绘制在前一个字符的下面

提示在形定义的代码中可使用括号来增强可读性。
33.1.3形的创建与使用
形的定义文件是ASCII格式的,因此,可以使用任一文本编辑器直接打开或创建填充图案文件,并对其内容进行补充和修改。
实例1创建名为“TRIANGLE”的形
(1)使用Windows附件中的“记事本”程序创建一个新的文本文件。
(2)在该文件中添加如下内容,如图33-2所示。
user.shp-userdefinedshapes
*1,4,TRAINGLE
020,016,01A,0

警告文件中最后一行要回车,否自编译出错。

(3)保存该文件,并命名为“user.shp”。
(4)进入AutoCAD2002,在命令行输入:compile,弹出“SelectShapeofFontFile”对话框,选中“user.shp”文件后单击键返回。如图33-3所示。
系统给出如下提示信息:
Compilingshape/fontdescriptionfile
Compilationsuccessful.OutputfileD:Program
FilesAutoCAD2002Fontsuser.shxcontains50bytes.
表明“user.shp”文件编译成功,生成了名为“user.shx”的形文件;
(5)在命令行输入:load,弹出“SelectShapeFontFile”对话框,选中“user.shx”文件后单击Open键返回。如图33-4所示。

(6)在命令行输入:shape,并根据提示输入:

Entershapenameor[?]:triangleEnter(指定形名)

Specifyinsertionpoint:0,0Enter(指定插入点)

Specifyheight<1.0000>:Enter(指定形的比例系数)

Specifyrotationangle<0>:Enter(指定形与水平方向的夹角)

此时我们所定义的形“TRIANGLE”即被绘制在屏幕上。下面我们来做一个复杂一点的例子,该实例中引用了形“TRAINGLE”。
实例2创建名为“MARK”的形
(1)使用Windows附件中的“记事本”打开实例一中创建的“user.shp”文件,在文件中添加如下内容:
*2,11,MARK
082,10,4,050,002,008,1,2,007,1,0
保存该文件。
(2)在AutoCAD2002中对该文件重新进行编译和载入,具体步骤同实例一。
(3)在AutoCAD2002中插入形“MARK”,结果如图33-5所示。