1、1第九章 地形图的绘制9.1 地形图绘制的基本知识一、绘图坐标系的约定在第五章中我们已经知道了 AutoCAD 有两个坐标系统:一个称为世界坐标系(World Coordinate Sysytm,简称 WCS)的固定坐标系和一个称为用户坐标系(User Coordinate Sysytm,简称 UCS)的可移动坐标系。 在 WCS 中,X 轴是水平的,指向由左向右,Y 轴是垂直的,正向朝上,Z 轴垂直于 XY 平面,原点是图形左下角 X 轴和 Y 轴的交点。UCS坐标系是依据 WCS 通过移动原点和旋转坐标轴来定义的,以方便用户根据自已的需要绘制图形。启动 AutoCAD 后,缺省情况下 UC
2、S 与 WCS 重合,其坐标系图标见图 91。虽然上述 WCS 坐标系与我们在测量学中定义的测量坐标系从本质上说是一致的,但容易想象得到,在 AutoCAD 中,按照相同坐标绘制的图形,其方位与我们想象中的并不一致,这是由于两个坐标系视点的不同所造成的。例如,将测量坐标系中正北方向上两点 P1 和P2 的坐标输入到 AutoCAD 中,就会发现该两点在正东方向上。1、定义用户坐标系为了解决 AutoCAD 中图形显示(视点不同)问题,可以采用用户坐标系。借助前面学过的“UCS”命令,将 WCS 分别进行一次绕 Y 坐标轴和 Z 坐标轴旋转即可得到如图 92 所示的测量坐标系。具体操作命令如下:
3、命令: ucs当前 UCS 名称: *世界*输入选项 新建(N)/移动(M)/正交(G)/上一个(P)/恢复(R)/保存(S)/删除(D)/ 应用(A)/?/ 世界 (W) : n指定新 UCS 的原点或 Z 轴(ZA)/三点(3)/对象(OB)/面(F)/视图(V)/X/Y/Z : y指定绕 Y 轴的旋转角度 : 180命令: ucs当前 UCS 名称: *没有名称*输入选项 新建(N)/移动(M)/正交(G)/上一个(P)/恢复(R)/保存(S)/删除(D)/应用(A)/?/世界(W) : n指定新 UCS 的原点或 Z 轴(ZA)/三点(3)/对象(OB)/面(F)/视图(V)/X/Y/
4、Z : z指定绕 Z 轴的旋转角度 : 90命令: ucs当前 UCS 名称: *没有名称*输入选项 新建(N)/移动(M)/正交(G)/上一个(P)/恢复(R)/保存(S)/删除(D)/应用(A)/?/世界(W) : s输入保存当前 UCS 的名称或 ?: survey图 9-1 WCS 图标图 9-2 UCS 测量坐标系图标2操作中前两个 UCS 命令是分别绕 Y 轴和 Z 轴旋转,最后一个 UCS 命令是将旋转后的UCS 坐标系用“ survey”名称保存,可用 ucsman 命令查看或在 WCS 和 UCS 中切换(图93) 。定义了 UCS 坐标系后所有的坐标输入都使用当前UCS,因
5、此用户可按照测量坐标进行输入和输出以及图形绘制。但是要特别强调的是,在进行文字注记和图案(地物)符号填充时还应将 UCS切换到 WCS 中来,否则文字和图案符号的方向与实际不一致,增加编辑和修改的工作量。2、约定坐标系虽然通过自定义 UCS 坐标系解决了图形显示问题,但是 UCS 坐标系并不是通用的坐标系,不利于多个用户共享,而且在绘图过程中还要频繁地在两个坐标系中切换,并不方便。为此,我们可以采用约定坐标系,即直接将 WCS 作为测量坐标系来使用,只不过这里有个约定:需要把 WCS 中的 Y 轴(垂直向上)当作测量坐标系中的 X 轴,相应地把 WCS 中的X 轴(水平向右)当作测量坐标系中的
6、 Y 轴。或者说,在 AutoCAD 中输入测量坐标时,将Y 坐标放在 X 坐标之前,当然在 AutoCAD 中输出坐标时,也要按照测量坐标系中的 Y、X和 H 的顺序来理解。这样约定之后,对后续的所有绘图工作都是非常方便的。事实上,国内所有的基于 AutoCAD 二次开发的地形地籍成图系统都是采用这种约定的坐标系。这就是为什么几乎所有初学者初次接触到成图软件时都要问同样一个问题:为什么测量点的 Y 坐标要放在 X 坐标之前!进一步理解,其实测量坐标系中的 X 轴和 Y 轴只是人为定义的两个坐标轴的符号,只是为了方便表示,自然也可以用其它字符表示。相信所有的测量人员一定注意到所有的全站仪并没有
7、出现 X 和 Y,取而代之的是用 N(North)和 E(East)来代表测量中的 X 和 Y 坐标;另外在国外的测量教科书中也都是用字符 N 和 E 来表示坐标的,其意义不言自明。二、绘图比例尺比例尺的定义是图上距离与相应实地水平距离之比,是地形图、地籍图等图件的一个非常重要的尺度参数。有了比例尺,就可以把地面上的地物和地貌的实际尺寸,按照比例尺缩小绘在图纸上,供人们阅读和使用;同时比例尺还代表了图件所达到的精度,例如要把一条 0.5 米宽的小路用双线绘在比例尺为 1:1000 的纸质图上就十分困难,或者说,我们不可能在比例尺为 1:1000 的纸质图上量出 0.5 米的双线小路来。可见,比
8、例尺既是人们用图的需要(图纸不必太大) ,也是人们绘图的必然选择(绘图精度限制) 。因此,比例尺对于传统的纸质图来说是非常重要的。那么在 AutoCAD 中,比例尺是如何确定的?举一个简单的例子,在手工绘图时,如果取比例 1:500,那么在图纸上 100 毫米长的线段实际代表了 50 米长的线。如果在 AutoCAD 中也象手工绘图那样画出 100 毫米长的线,这显然是不方便的。从前面学过的内容知道,在 AutoCAD 中线段的长度单位是图形单位,并没有规定实际单位是米,分米还是厘米,这就给用户带来非常大的方便。于是,要确定图 9-3 UCS 管理对话框3图形比例尺首先要确定 AutoCAD
9、中图形单位是多少。1、确定图形单位为了在 AutoCAD 中表示地面两点间的距离,需要确定 AutoCAD 中一个图形单位对应的实际长度。直观上看,测量中点的坐标或线段长度都是以米为单位的,自然应该这样选取最合理:AutoCAD 中 1 个图形单位实地 1 米。这种一对一的简单关系给实际绘图带来相当大的好处。在上述例子中,只要在 AutoCAD 中绘 50 个图形单位长度的线,而不去理会它换算到图纸上是多少毫米的线段。或者说,AutoCAD 中某线段有多少个图形单位的长度就等于实地上多少米的距离,不要去管它比例尺是多少,如何折算。事实上,作为用户而言,用图目的就是要知道地面的真实情况,当你用鼠
10、标在图上进行量距定点时,就象你在野外用全站仪量距定点一样,为什么非要通过比例尺在图上和实地之间来回地换算呢?【例 91】设 P1、P2 两点坐标分别为(50.0,100.0)和(100.0,200.0 ) ,试分别用POINT 命令展绘出两点,并用 DIST 命令量取两点之间的长度。命令操作如下:命令: point当前点模式: PDMODE=2 PDSIZE=0.000指定点: 100,50命令: point当前点模式: PDMODE=2 PDSIZE=0.000指定点: 200,100命令: dist指定第一点: 指定第二点 :距离 = 111.803, XY 平面中的倾角 = 27, 与
11、XY 平面的夹角 = 0X 增量 = 100.000, Y 增量 = 50.000, Z 增量 = 0.0002、确定图形比例前面说过,在展绘测量坐标点或绘制线段长度时,直接按实际坐标或实地长度展绘,不要去管它比例尺是多少。从这个意义上来理解,可以认为图形的比例尺为 1:1。然而绘图的目的是供其他用户阅读和使用的,不同地物符号的大小,线状地物的粗细以及各类注记的大小等,在图式规范中均有相应的规定,这样绘制出的图才能布局匀称,疏密合理,图面清晰。由于图式中标注的尺寸是以毫米为单位的,因此需要弄清 AutoCAD中 1 个图形单位输出到纸质图上相应的长度是多少。先做个实验,在 AutoCAD 中画
12、一个边长等于 1 个图形单位的正方形,在绘图仪上按1:1 比例输出后,用三角尺量取正方形边的宽度,结果都等于 1 毫米;如果按 1:2 比例输出后,用三角尺量取正方形边的宽度,其结果等于 2 毫米。这个例子说明:在 AutoCAD 图形中,对于所有的独立地物、植被符号、线状地物的线宽、线型比例,以及各类注记等都要考虑比例尺,而对于野外测量的点的坐标和线段的长度却不需考虑比例尺。因此,在 AutoCAD 中,所谓绘图比例就是指用 SCALE(缩放) 、PLINEWID(线宽)和LTSCALE(线型比例) 、HPSCALE(填充比例)等命令执行地物的比例缩放操作时所确定的比例,同传统的图上量距定点
13、无关。进一步说明的是,与手工绘图方式不同,在 AutoCAD 中绘图并不是采用绝对比例尺,而是采用一种所谓相对比例尺。因为前面已约定了 1 个图形单位等于实地距离 1 米,而AutoCAD 中采用公制时 1 个图形单位可选择 1 毫米(按出图比例 1:1) ,这样相当于隐藏了一个事实上的比例尺 1:1000。于是对于比例尺 1:1000 约定 SCALE、LTSCALE 和 HPSCALE 的图 9-4 展绘测量坐标点4值为 1.0,PLINEWID 的值为图式规范中规定的线宽。其它比例尺时所采用的值则相对1:1000 进行变换。这里先说明一下,由于约定比例尺 1:1000 的有关变量的值,自
14、然形成了其它比例尺的基准,因此后面的自定义线型、自定义图案以及独立地物符号都是在 SCALE、 LTSCALE 和HPSCALE 的值为 1.0 的情况下定制的。下表 91 为当比例尺为 1:5001:2000 所对应的 SCALE、LTSCALE 、HPSCALE 和PLINEWID 所采用的值,以及作用的对象。国内各测绘公司开发的地形地籍成图系统,如广州南方 CASS,武汉拓普康 EDMS,以及北京威远图 WELLTOP 等均采用这种约定。1:5001:2000 对应的 SCALE、LTSCALE 、HPSCALE 和 PLINEWID 所采用的值 表 91SCALE LTSCALE HP
15、SCALE PLINEWID比例尺值 作用对象 值 作用对象 值 作用对象 值 作用对象1:500 0.5 倍尺寸独立地物符号、注记0.5线状地物的比例,如小路、坎状线型等0.5地类填充符号,如旱地、菜地等0.5 倍的标准线宽线状地物的宽度,如道路、等高(深)线等1:1000规范标注尺寸独立地物符号、注记1.0线状地物的比例,如小路、坎状线型等1.0地类填充符号,如旱地、菜地等规范规定的线宽线状地物的宽度,如道路、等高(深)线等1:2000 2.0 倍尺寸独立地物符号、注记2.0线状地物的比例,如小路、坎状线型等2.0地类填充符号,如旱地、菜地等2.0 倍的标准线宽线状地物的宽度,如道路、等高
16、(深)线等【例 92】下图根据相同的数据文件分别按 1:500、1:1000 和 1:2000 绘制的地形图。图 9-5 1:500 局部地形图53、绘图比例与屏幕缩放比例由于 AutoCAD 绘图视窗有限,在当前视窗范围内不可能全部清楚地显示整幅地形图。反过来,如果整幅地形图全部显示在当前视窗内,对于那些地形复杂的图形,根本无法看清其中某一细小部分的内容。为了解决这个问题,AutoCAD 提供了屏幕缩入命令 ZOOM,方便用户对当前视窗进行缩放。既然用 ZOOM 命令可以进行屏幕缩放,肯定存在着一个屏幕缩放比例。屏幕缩放比例实际上就是用 ZOOM 命令进行屏幕缩放前后的当前视窗放大或缩小的倍
17、数。当该比例大于1 时,屏幕就放大,当前视窗内的实体也呈放大显示。当该比例小于 1 时,屏幕就被缩小,当前视窗内的实体也呈缩小显示。从视觉的角度来看,当放大屏幕时,就相当于当前视窗内的实体从远处移至近处,以便让用户看清楚。同理,当缩小屏幕时,就相当于当前视窗内的实体从近处移至远处,这样在用户的视野内,所看到的实体就呈缩小状态。屏幕缩放比例与绘图比例有着本质的区别。绘图比例改变了独立地物符号、植被填充符号以及各类注记的相对大小,也改变了线状地物的线宽和比例;但是屏幕缩放比例只改变了当前视窗的大小,各类地物的实际几何尺寸并没有变化。打个比方,屏幕缩放比例相当于我们用放大镜看物体时的放大倍数,虽然物
18、体并没有真正放大,但却在视觉方面看得更清楚。因此,我们无需在意屏幕缩放比例的大小。图 9-6 1:2000 局部地形图图 9-7 1:1000 局部地形图6三、地类与自定义图层使用图层来管理和控制复杂的图形,是 AutoCAD 最突出的特点。在 AutoCAD 绘图中,可以将不同种类和用途的图形分别置于不同的图层中,从而实现对相同类图形的统一管理。这种以图层为管理单元的思想与测量上我们对地类的分类管理是一致的,自然我们就想到将不同的地类置于不同的图层中,并利用图层的特性,如不同的颜色、线型和线宽来区分不同的对象,这为地形图和地籍图的绘制提供了极大的方便。1:500 1:1000 1:2000
19、地形图图式将地类共分十大类,分别是:测量控制点、居民地和垣栅、工矿建(筑)物及其它设施、交通及附属设施、管线及附属设施、水系及附属设施、境界、地貌和土质、植被、注记。如果考虑到实际绘图的需要,也可增加其它图层,如等高线层、高程点层、展点号层、图框层等。图层的创建可用 LAYER 命令,在图层管理对话框中进行,十分方便。下面演示如何创建测量控制点层。在命令行输入 layer 回车后,打开图层特性管理器对话框(如图 98)后,在中间的空白区中按鼠标右键,点击屏幕菜单“新建图层” ,在名称输入框中键入字符“KZD”作为图层名称,然后用鼠标左键点击“白色” ,在颜色对话框中点击“红色”方框,按确定返回
20、图层管理对话框。这里要说明的是,图层的命名可用汉字,也可用英文或汉语拼音标示,但通常都是简写,方便应用。下表 92 是 CASS4.0 定义的图层及名称,英文是作者添加的,供参考。CASS4.0 中定义的图层、名称及颜色 表 92序号 汉语图层名称 拼音图层名称 英文图层名称 索引颜色号1 测量控制点 KZD CONTROLPOINT 12 居民地和垣栅 JMD RESIDENCE 63 工矿建(筑)物及 其它设施 DLDW BUILDING 114 交通及附属设施 DLSS ROAD 45 管线及附属设施 GXYZ PIPELINE 26 水系及附属设施 SXSS WATER 57 境界 J
21、J BORDER 2图 9-8 创建测量控制点(KZD)图层78 地貌和土质 DMTZ RELIEF 39 植被 ZBTZ VEGETATION 310 注记 ZJ ANNOTATION 711 高程点 GCD HEIGHTPOINT 112 展点号 ZDH POINTNUMBER 113 三角网 SJW TIN 114 等高线 DGX CONTOUR 215 等深线 DSX ISOBATH 216 面积注记 MJZJ AREA 417 界址点 JZD BOUNDARYMARK 118 图框 TK MAPFRAME 49.2 定制地形图线型与填充图案AutoCAD 提供了标准线型库(文件)和填
22、充图案库(文件) ,以供大多数用户选用。在 AutoCAD2004 版本之前,这两个库文件都是以文本文件形式保存在 AutoCAD 的安装目录下面,到 AutoCAD2004 版本时,这两个文本文件就隐藏在 C:Documents and Settings AdministratorApplication DataAutodeskAutoCAD 2008R17.1chsSupport 目录之中。对于需要定制的用户,可以直接打开它,并对它们进行修改和定制自已的线型库和填充图案库。一、定制地形图线型AutoCAD 提供的标准线型是由名为 ACAD.LIN 的标准线型库文件定义的。用记事本打开该文件
23、,可以发现标准线型库包含有通用线型、ISO 线型和复合线型三大类。其中含通用线型 24 种,ISO 线型 14 种,另有包含形定义的复合线型 7 种。由于库中提供的大多数线型在地形图图式中不可用,为此需要根据图式要求重新进行各类线型设计。1、线型文件的结构在设计线型之前先弄清楚线型文件的结构。AutoCAD 中规定,线型文件可以包含多个线型定义,空行和分号后面(注释)的内容在编译时均被忽略。每一定义具有如下形式的标题行:*线型名,线型形状描述 后跟如下形式的格式行:Alignment, dash-1, dash-2, 例如,定义一线型,结构为:短划线,0.5 个绘图单位长;空格,0.25 个绘
24、图单位长;点;空格,0.25 个绘图单位长。则该线型可以定义成如下形式:*DD1,_ _ _ _A, 0.5, -0.25, 0, -0.25其中 DD1 是线型名,线型形状描述字段是由 LAYER Ltype 命令序列所显示的线型描述。在这里描述只是短划线“_”和圆点“ ”的组合。形状描述是可选择项,可以是点、空格和短划线的序列,也可以是说明,如“小路”等,用户对线型的描述不能超过 47 个字符。形状描述也可以省略,此时线型名后不能有逗号。Alignment 字段为直线、圆和圆弧指定对齐方式。到目前为止,AutoCAD 只支持一种对8齐方式,通过在字段开头输入“A”来指定。使用 A 型对齐,
25、保证直线的端点和弧的起点及终点处为短划线。这种对齐方式,首短线划的值应大于等于 0(即点或下笔段) ,第二个短划线的值应小于 0(提笔段) ,并从第一个短划线说明开始,至少要有 2 个短划线结构说明。Dash-n 字段指定组成线型的段的长度。若长度为正,则表示是下笔段,即为要画出的线段;若长度为负,则表示为一提笔段;长度为零则画出一个点。在.LIN 文件中,每个线型定义应限制在 280 个字符以内。2、简单线型定义了解了线型定义的结构后,下面以地形图图式中的小路为例,介绍通过编辑线型文件 ACAD.LIN的方法来了解建立小路的过程。【例 93】根据线型定义构造出图 99 所示的小路。由图可知,
26、地形图图式中的小路是一虚线,由短划线和空格组成。其中短划线长为4mm,空格宽为 1mm,线宽为 0.3mm。首先说明的是,此处小路的线宽 0.3mm 是无需考虑的,因为线宽可以在 AutoCAD 绘图时来控制。由于牵涉到图形比例尺,这里短划线长 4mm,空格宽 1mm 是如何控制的呢?前面已讲过,对于这类线型必须考虑到线型比例,那么线型比例 LTSCALE 的值为多少才合适?显然从表 91 中可以看出,取 LTSCALE 的值为 1 时最合适,于是图式中的小路可按 1:1 的比例来设计。换句话说,就是在设计小路时直接采用图式中规定的值。第一步:打开 ACAD.LIN 文件,并在文件的最后输入下
27、面两行;*FOOTPATH, A,4,-1第二步:保存此文件退出文本编辑器,同样方法修改 ACADISO.LIN(必须保持两文件相同) 。第三步:加载 FOOTPATH 线型上面的例子完成了给 ACAD.LIN 文件加入新的线型定义,但并没有将它加到图形的线型符号表中,即没有应用于对象。要加载 FOOTPATH 线型到当前绘图中,在命令行键入Linetype 命令,弹出线型管理器对话框如图 910,点击 “加载(L)”按钮,在acadiso.lin 或 acad.lin 文件的可用线型中找到 FOOTPATH,按确定返回线型管理器,此时FOOTPATH 已在线型列表框中。下面作为练习,请读者按
28、照下面的命令操作,绘制出线型后用 DIST 命令分别量出FOOTPATH 线型的短划线和空格的长度,以及该线型的宽度。命令: -linetype当前线型: “ByLayer“输入选项 ?/创建(C)/加载(L)/设置(S): s指定线型名或 ? : footpath输入选项 ?/创建(C)/加载(L)/设置(S):命令: pline指定起点: 0,0当前线宽为 0. 0指定下一个点或 圆弧(A)/半宽(H)/长度(L)/放弃(U)/宽度(W): w指定起点宽度 :0.3图 9-9 地形图图式中的小路图 9-10 加载自定义线型 FOOTPATH9指定端点宽度 :指定下一个点或 圆弧(A)/半宽
29、(H)/长度(L)/放弃(U)/宽度(W): 10,10指定下一点或 圆弧 (A)/闭合(C)/半宽 (H)/长度(L)/放弃(U)/宽度(W):3、复合线型定义对于虚线和点虚线类的线型,如建设中的等级公路、大车路、乡村路、内部道路、村界等可按前面定义小路的方法进行自定义。但是对于复杂的线型,如陡坎、斜坡、栅栏、铁丝网、篱笆、不依比例围墙、国界等,在 AutoCAD 中要采用复合点划线型的定义方法。复合点划线型功能是线型的定义不再局限于线划、点、空格。用户可在定制的线型中嵌入单个文本字符串或由 SHX 文本定义的形。复合线型定义语法的开头与前述简单线型相同,在定义行的方括号内增加了特殊参数以告
30、诉 AutoCAD 如何插入文本或形。例如:下面的线型定义,将显示出两种线型的形式。*GAS_LINE,_GAS_GAPS_GASA,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绘制出线型如下图 911、9 12 所示:复合线型嵌入文本字符串的语法为:“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”是双
31、引号中的由一个或多个字符组成的文本串, shape 是 shape_file 文件中的形名。shape_file 中必须有形,否则 AutoCAD 不允许用户使用此线型。Style 是文本式样的名字,shape_file 为 AutoCAD SHX 形文件。如果当前图形中没有style, AutoCAD 则不允许使用此线型。如果 shape_file 没有位于库搜索路径中,AutoCAD会提示并要求用户选择另外一个 SHX 文件。在 shape_file 中可以包括路径。其余五个字段 R=、A=、S=、 X=、Y= 可为选择的转换分类。每种转换分类后面的 n 表示任意数字。R=n 表示文本或形
32、相对于当前线段方向的转角。默认时为 0 表示 AutoCAD 文本或形的方向与线段方向一致。A=n 表示文本或形相对于世界坐标系的 X 轴的绝对转角。当希望文本或形总是以水平形式出现,与线段的方向无关时,可采用 A=0。用户可以指定 R=和 A=,但两者不能同时指定值。如果两个都没有指定值,AutoCAD 采用 R=0。R=和 A=转角以“度”为单位,如果希望以弧度或梯度作为单位,数字后面必须加 R 或 G。S=n 确定文本或形的比例系数。如果使用固定高度的文本式样, AutoCAD 将此高度乘以 n。如果使用的是可变高度(即 0 度)的式样,CASS 则会把 n 看作绝对高度。对于形而言,S
33、= 缩放系数会使形从其缺省缩放系数 1.0 按此值往大或往小变化。在任何情况下,AutoCAD 通过 S=缩放系数与 LTSCALE(例如:0.5)和 CELTSCALE 的乘积来确定高度或缩放系数。因此,应该将 S=确定成正常 LTSCALE(例如:0.5)下以 1:1 为输出比例时所对应的值。这样当在比例不同的图中使用复合线型且将 LTSCALE 设成与各图比例相对应的值时,图 9-11 GAS_LINE 图 9-12 FENCELINE_LINE10这些文本或输出的图纸上以相对应的尺寸出现。X=n 和 Y=n 为可选项,它们确定相对于线型分类中的当前点的偏移量。默认时AutoCAD 将文
34、本串的左下角点或形的插入点放在此当前点。两个偏移量分别沿着当前线段方向(对于 X=) ,和沿着与当前线段垂直方向(对于 Y=)度量,就象有一个局部坐标系,它的 X 轴从当前线段的第一个端点指向第二个端点。因此正的 X=偏移量会使文本或形朝着当前线段的第二个端点的方向移动,正的 Y=偏移量会使文本或形朝着 X=方向的 90 度方向(逆时针)移动。这两个偏移量使文本或形的定位更精确。由于复合线型涉及到形文件,下面先对形文件作一简要介绍。然后以地形图图式中的陡坎为例详细介绍陡坎线型是如何创建的。4、形文件的结构(1 )形的概念形是一种能用直线、圆弧和圆来定义的特殊实体,它可很方便地被绘入图形中,并可
35、按需要依比例系数及旋转角度,以获得不同的位置和大小。在 AutoCAD 中,形从定义到绘入图中需经以下几个步骤:按规定格式进行形定义用文本编辑器或字处理器建立形文件。形文件类型为“.SHP ”。对已生成的形文件进行编译,生成“.SHX”文件。装入编译后的形文件(“.SHX”文件) 。使用形。(2 )定义形定义形的文件称为形文件,它是一种“.SHP”类型的文件,并具有一定格式。 AutoCAD将忽略所有空行及分号右边的内容。建立或修改形文件可使用文本编辑器或字处理器,用文本保存文件。(3 )形定义的格式形定义具有一定的格式和规定,用户必须严格遵守。每个形的定义包含有一个标题行和若干形描述行。标题
36、行以“*” 开始,说明形的编号、大小及名称。格式如下:*形编号,字节数,形名称形编号:每个形都定义有一个编号,占用一个字节,编号范围在 1255 之间。也就是说,一个形文件最多定义 255 个形。字节数:是用于描述一个形所需的数据字节数,包括形描述结束符“0”所占用的字节。每个形的定义字节数不得超过 2000。形名称:每个形必须有一个名字,且这个形名必须大写,否则形名会被忽略。描述行在标题行之后,它是用数字或字母来描述形所包含的线段、弧的大小及方向。数字和字母分成一个一个字节,字节之间用逗号分开。描述行以“0”结束。每一形描述的字节数不能超过 2000 个,包括结束符“0” 。描述行的格式如下
37、:长度及方向码,特殊码,长度及方向码描述一个直线矢量的长度和方向需用 3 个字符,第一个必须是 0,它表示后边两个字符是十六进制数,第二个字符代表矢量的长度,有效值为 1F (115个单位长) ,第三个字符代表矢量的方向,方向编码 图 9-13 矢量方向编码11见图 913。【例 94】根据矢量方向编码构造图 914 所示的形。先按 1:1 的比例绘出矩形图,根据矢量方向编码可知,该形的完整描述如下:*230,6,DBOX014,010,01C,018,012,0第一行为标题行,它说明形编号是 230,定义所占用字节数为6,形名为 “DBOX”。第二行为描述行,用 5 个字节描述五条线段,每个
38、字节的第一位“0”代表后边两位数是十六进制数,第二位“1 ”表示矢量长度的单位长度,第三位数字表示矢量方向,最后一个字节“0”表示形定义的结束。特殊码为定义不同对象,如直线段、圆弧以及描述各种状态,如抬笔、落笔和形定义结束等,AutoCAD 设定了一些特殊描述码。这些码是专用的,前两个字符均为 0。它们是:000 形定义结束001 激活绘图模式(落笔)002 关闭绘图模式(抬笔)003 用下一个字节除矢量长度004 用下一个字节乘矢量长度005 将当前位置压入栈006 将栈中内容弹出当前位置007 画出由下一个字节给出的子形008 下两个字节给出(X , Y)位移量009 由(0,0)结束的多
39、个 X-Y 位移00A 由下两个字节定义八分弧00B 由下五个字节定义的小段弧00C 由(X,Y)位移和凸度定义的弧00D 多个指定凸度的弧00E 只在垂直文本方式处理下一个命令下面详细介绍这些专用码的意义: 代码 0:形结束该码只是标志形定义的结束。 代码 1 和代码 2:绘图模式控制这些码控制绘图模式:当形的开始和代码为 1 时,绘图模式为打开。当绘图模式为打开时,落笔画线;代码为 2 时,绘图模式为关闭,此时只移动新位置而不画线。 代码 3 和代码 4:尺寸控制代码 3 和代码 4 控制每一个矢量的相对尺寸。在 shape 命令中指定的高度是水平或垂直矢量(0 ,4 , 8,c )的初始
40、长度。代码 3 和代码 4 后面附带一个包含整数的比例因子(从 1255)的字节。如果想用形的高度来确定整个形的大小,并用 10 个矢量长度来绘制它,可以用 3,10 来指定高度比例。 代码 5 和代码 6:位置的保存与恢复代码 5 和代码 6 用于画形时把当前坐标压入(保存)和弹出(重置) 。这样就能从形中的后面的点返回到原先的位置。弹出时必须把压入栈中的所有内容全部弹出。位置栈只能图 9-14 形 DBOX12放 4 个值。当栈满(由于过多的压栈或忘记弹栈)并画形时,就显示如下信息:Position stack overflow in shape nnn(形编号 nnn 栈溢出)相反,如果
41、堆栈已空还要进行弹出操作或弹出的数量超过所压入的数量,将产生下溢,在画形时将显示如下信息:Position stack underflow in shape nnn(形编号 nnn 栈下溢) 代码 7:子形代码 7 是子形调用。附在代码 7 后面的是一个从 1255 的形编号。这时就画出该形编号所代表的形(这些形必须在同一个形文件中) 。注意,绘图模式对新的形并不复位。当完成子形之后,恢复当前形的绘制。 代码 8 和代码 9:X-Y 位移正常的矢量字节只画 16 个方向,最长的长度为 15。这些限制有助于使形定义更简单,因为这样的线段都是前面所说的标准线段。但这样会产生一些局限。因此,代码 8
42、 和 9 允许使用 X-Y 位移量来画非标准的矢量。代码 8 后面必须跟下列格式的两个字节:8, X_displacement, Y_displacementX 和 Y 方向位移的变化范围是-128+127,正数前面的“+”号是可选的,而括号用于提高可读性。例如,8, (-10 ,3 )将导致一个向左移动 10 个单位并向上移动 3 个单位的矢量被画出。两个位移量字节之后形返回到正常矢量模式。当需画出一系列非标准矢量时,使用代码 9。该码后面可跟任意个( X,Y)位移对,并由一个(0,0)对结束。例如:9,(3, 1),(3, 2),(2, -3),(0, 0)画出三个非标准矢量后,返回到正常
43、的矢量模式。为了让 AutoCAD 识别正常的矢量或特殊码,所有的(X,Y )位移对序列以(0,0 )结束。 代码 00A:绘制八分弧特殊码 00A(或 10)使用下面的两个字节来定义一段弧。这种类型的弧之所以被叫做八分弧,是因为它的跨度是一个或多个 45 度弧,并以八分弧边界开始和终止。如图 915所示,八分弧从时钟上的三点钟位置逆时针方向编号。弧的说明是:10,radius,(-)0SC行中的 10 即为八分弧的专用码(00A 的十进数) ,半径radius 的值可以是 1255 的任何一个值。下一个字节指出弧的方向(正是逆时针,负是顺时针) ,S 为起始八分弧的符号,其值为 07,C 是
44、该八分弧的跨度,该值是一个 07 的值,0 意味着有八个八分弧或一整弧,括号可用来提高可读性。例如,考察下列形定义段:012,10,(1,-032),01E这段程序将向右上方绘制一单位矢量,然后从第三个八分弧开始绘制半径为一个单位的两段八分弧,最后沿右下方向绘制一个单位的矢量,如图 916 所示。 代码 00B:非标准弧特殊码 00B(11)用于画那些起始位置和终了位置是非八分圆角边界的弧。该定义使用五个字节:11,Star_offset,end_offset,high_radius,low_radius,(- )0SC起始和终了偏移 Start _offset 和 end_offset 表示
45、弧的开始处和结束处离八分弧边界的距图 9-15 八分弧方向的编号图 9-16 八分弧示例13离。而 high_radius 则为半径值的高 8 位标记,若半径值小于 255 各单位值,该值将为零。除此之外,半径、控制字节与八分弧规范完全一样。八分弧(C)是包含这段弧的八分弧个数,而且 0 亦即为 8。通过计算起始八分弧的边界(45 度的倍数)与弧的起点的度数的差,可以决定起始偏移量。然后将该差值乘以 256 再除以 45。若弧的起点在八分弧的边界上,则起始偏移为 0。终止偏移角的计算与起始偏移角的计算相似,只是使用最后八分弧的边界值与弧的终止角的差值。若弧在八分弧上终止,则终止偏移角为零。例如
46、,一个 55 度至 95 度半径为三个单位的非标准弧编码如下:11, (56 , 28,0,3,012)解释:起始八分弧=1=45 度结束八分弧=2=90 度起始偏移角=56=(55-45)*256/45取整终止偏移角=28=(95-90*256/45取整 代码 00C 和代码 00D(12 和 13):凸弧特殊码 00C 及 00D 提供在形定义中包含部分弧的另一种方法。它们近似于代码 8 与代码 9,允许指定(X ,Y)位移。但是代码 00C 与 00D 允许在画弧时把凸起因子应用到偏移矢量中。代码 00C 画一个单段弧,而代码 00D 直到被(0,0 )结束之前画多个单段圆弧。代码 00
47、C 后面必须跟三个字节并用其描述该弧,如下所示:0C,X_displacement,Y_displacement,BulgeX 和 Y 的位移值变化范围可以是-127 +127,用于指出弧的曲度的凸起度(bulge) ,其变化范围也是从-127 +127。如图 917 所示,如果由位移量所指定的线段的长度为 D,线段中点的垂直高度为 H,则凸起度为( 2*H/D)*127 ) 。如果弧从当前位置到新的位置是顺时针方向,则符号为负。半圆的凸度为 127(或-127) ,也是使用这些码所能表示的最大弧。凸度为零的弧也是有效的,它表示一条直线。多段弧代码(00D 或 13)后跟零或多个圆弧且由一个(
48、0 , 0)位移终止。例如,字母 S 的形描述可由下列序列来定义:13,(0,5,127),(0,5,-127),(0,0)在多段弧中,零凸起度由于其能表示直线段,所以非常有用,它比终止一个多段弧,插入一直线段再开始新的多弧段效率更高。 代码 00E( 14):标志垂直文本命令代码 00E(14)用于双方向的文本字体描述中,这时字体可以用于水平方向和垂直方向。当在字符定义中碰到该特殊码时,下一个码是处理还是被跳过,将取决于文本是水平方向还是垂直方向书写。若是垂直方向书写,则处理;否则,则跳过。对于水平方向文本,每一个字符的起点是基线的左端;而对于垂直方向文本,起点则是字符的顶部中心。在每个字符
49、的结尾,必须提笔直到下一个字符的起点。对水平文本来说,结尾在右边;对垂直文本来说,结尾在下面。特殊码 00E(14)主要用于调整起始点与终止点的差。允许同一字符形定义既可以用在水平方向,也可以用在垂直方向。如下例所示,大写 D 既可以用于水平方向,也可以用于垂直方向。5、形文件的编译与调用第一步:建立形文件图 9-17 半圆弧14形文件是一个 ASCII 码的文件,按照上面所讲形的定义格式利用文本编辑器或字处理器来建立一个.shp 文件。第二步:编译形文件用文本编辑器建立的.shp 形文件,不能被 AutoCAD 直接调用,必须经过编译才行。编译形文件就是把 ASCII 码的.shp 文件转换成 LOAD 或 STYLE 命令所接受的格式,即生成.shx文件。对形文件进行编译的命令及格式为:命令: compileAutoCAD 将显示 “选择形或字体文件”对话框,提示用户输入要编译的.shp 形文件名。编译完成后,屏幕上显示如下信息:编译形/字