CAD技术已进入我们生活的各个领域,Autodesk公司开发的AutoCAD软件包因其卓越的优良性能在我国得到了广泛的使用。但AutoCAD本身的文字功能存在一定的局限性,不能满足设计工程需要。本文详姆治隽AutoCAD字形的数据结构和其存储方式,找出扩充字形文件的方法,并构造了一个满足自己工作需要的字形文件,取得了较好的效果。
[关键字]设计 CAD 字库 字形
一、概述
人类从<停止设计,设计的对象从人类居住的房屋,人类生活的必需品,到人类的整个生存、生活、学习、工作所涉及的环境,以及人类劳动的工具。CAD(Computer Aided Design)的出现,让人类的设计告别绘图板和铅笔,使设计进入了现代的计算机时代。特别是进入90年代后,微机的性能大步提高,基于微机的计算机辅助设计软件的性能也大大提高,而微机和CAD软件的价格也不断下降,使CAD正广泛应用到各个行业和领域。
CAD技术是一项综合性的,集计算机图形学、数据库、网络通讯等计算机及其他领域知识于一体的高新技术;是先进制造技术的重要组成部分;也是提高设计水平、缩短产品开发周期、增强行业竞争能力的一项关键技术。
采用CAD技术进行产品设计不但可以使设计人员"甩掉图板",更新传统的设计思想,实现设计自动化,降低产品的成本,提高企业及其产品在市场上的竞争能力;还可以使企业由原来的串行式作业转变为并行作业,建立一种全新的设计和生产技术管理体制,缩短产品的开发周期,提高劳动生产率。
1 、CAD技术应用概况
CAD/CAM(计算机辅助设计及制造)技术产生于本世纪50年代后期发达国家的航空和军事工业中,随着计算机软硬件技术和计算机图形学技术的发展而迅速成长起来。1989年美国国家工程科学院将CAD/CAM技术评为当代(1964-1989)十项最杰出的工程技术成就之一。三十几年来CAD技术和系统有了飞速的发展,CAD/CAM的应用迅速普及。在工业发达国家 ,CAD/CAM技术的应用已迅速从军事工业向民用工业扩展,由大型企业向中小企业推广,由高技术领域的应用向日用家电、轻工产品的设计和制造中普及
CAD是一个包括范围很广的概念,概括来说,CAD的设计对象有两大类,一类是机械、电气、电子、轻工和纺织产品;另一类是工程设计产品,即工程建筑,国外简称AEC(Architecture、Engineering和Construction)。而如今,CAD技术的应用范围已经延伸到艺术、电影、动画、广告和娱乐等领域,产生了巨大的经济及社会效益,有着广泛的应用前景。
在国内CAD市场,由美国Autodesk公司开发的通用辅助设计、辅助绘图软件包AutoCAD得到了广泛的应用。Autodesk公司是世界上最大的工程设计软件公司,也是全球第四大软件公司。该公司占有全球近百亿美元的CAD(计算机辅助设计)软件市场,具有从绘制地图、建筑设计、机械设计到影视和游戏制作的完整软件产品线。其旗舰产品AutoCAD,已成了事实上的工业标准。
2、AutoCAD的文字输入及存在的问题
AutoCAD是由美国Autodesk公司为微机开发的一个交互式绘图软件,是一套<能极强的计算机辅助设计工具,具有较强的绘图、编辑、剖面线和图案绘制、尺寸标注以及方便用户的二次开发功能。它是目前世界上应用最广的CAD软件,占整个世界个人微机CAD/CAE/CAM软件市场的37%左右,是诸多微机CAD软件的佼佼者。
用AutoCAD绘图实际上无任何限制,凡手工能绘制的,AutoCAD都能做到。由于其具有的强大的二次开发能力,目前AutoCAD已被广泛应用于各个领域。
一个完整的设计文件,除图形外,还含有必须的文字说明。在手工制图中,文字注释是用打字机、钢笔或铅笔手工完成的,这是一件费时且凰龅墓ぷ鳌<扑慊辅助绘图使这件事变得非常简单。
在AutoCAD中,所有的操作均由相应幻令来完成,文字输入也不例外,其基本命令为T E X T。AutoCAD通过STYLE命令来设置字体,通过文本标注命令(如TEXT,DTEXT等)可以从相应的形文件中提取图形所需的字符信息。文字标注的格式为
Command: TEXT 或DTEXT [回车]
AutoCAD把文本当作一类实体,作为图形的一部分而存在,图形中的文本的显示放大、旋转、绘制等操作都可以由AutoCAD自己实现。除了在装入汉字字体时略有不同(必需同西文字体一起装入),汉字的标注过程同西文文本完全一样。不同的字形通过装入不同的字体来实现。
AutoCAD图形中的文字是由其自带的后缀名为.SHX格式的文件支持的,该文件被称作形文件,而专用于显示文字符号的形文件则称为字形文件或字库文件。根据常规要求,系统已带有普通文字(含英文、德文、意大利文、南斯拉夫语)和特殊符号(天文、地图、气象、音乐)等字库。为满足显示速度和字体美观方面的要求,普通文字字库含有快速、简体、双线体、三线体和哥特体等字体。系统自带的字形文件可满足大部分我求。
AutoCAD正文字体中的每一个文字对应于形状号,形状号的编制遵循ASCII码,可参见附表一。代码1到31为控制码,仅他们中的一个代码用于AutoCAD正文字体中。即代码10(LF)—换行符,其含义是向下走一行但不绘图。另外,还定义了一些特殊符号(见表1-1)。
随着版本的升级,AutoCAD文字功能逐渐增强,在原来单行文本输入的基础上,渭恿硕态文字(DTEXT)、段落文字(MTEXT)。同时操作系统由DOS全面稳Windows系统后,原来存在的汉字输入问题现在也得到迎刃而解。虽然AutoCAD经过了近几十次的升版(其版本由1.0到14.0,直至最新的AutoCAD2003,国内最早引入的版本为2.16,由2.6版得到推广), 但是,AutoCAD在文字输入处理方面存在的二个问题一直未能得到解决:
3.1、特殊符号的输入
几乎在所有的制图应用中,都需要在一般文本与尺寸文本中绘制特殊字符(符号)。例如,有时需要绘制角度符号与直径符号,或者需要给一些字符画下划线或上划线。标准字库文件中提供了几个控制符,借助有关控制符(控制码)序列就可以实现这些功能。对于每一个符号,控制符序列都是以连续的两个百分号“%%”打头的。跟在两个百分号后的控制符描述所需符号。见表1 -1:
表 1- 1 AutoCAD系统自带特殊符号
控制序列
|
特殊字符
|
控制序列
|
特殊字符
|
%%c
|
直径符号(Ф)
|
%%O
|
上划线模式开/关切换
|
%%d
|
角度符号(°)
|
%%u
|
下划线模式开/关切换
|
% % p
|
正/负公差符号(±)
|
%%%
|
% % % 单个%号
|
注意: 特殊控制符%%O和%%U是作切换键用的。例如,如果输入“This %%Utoggles%%U the underscore”,则字toggles将加上下划线(toggles)。
AutoCAD R14.0以后的版本增加了对Windows系统字库(True Type)的支持,通过使用Windows系统字库或字符映射表也可输入各种字符。但在工程设计中,仍有一些常用的符号无法解决,如各种型钢符号(角钢、扁钢、槽钢、工字钢等),有些符号虽然可通过AutoCAD和Windows系统来解决,但在使用前需定义成不同的字体(用STYLE命令),一行文字需分几次输入以调用不同的字体来完成,使用上很不方便。
3.2、文本文件的排版和美观
使用过字处理软件如Microsoft Word、WPS的人们都知道,这些软件均可实现文本文件的排版,以满足用户的各种需要,而AutoCAD本身现有的功能尚不能实现这种功能,其文本输入只能实现简单的功能(上划线、下划线)。而在设计文件中,经常要输入单位,如m2、m3等,有时在说明中还要输入一些数学公式。
一个漂亮美观的文章,总能增加人们对该文章的喜悦,同样美观的设计文件也能增加阅读者的亲和力。由于汉字一般比英文单词的笔画来得复杂,为了能清晰地表示一段文章,在中英文混合输入时,视觉习惯上应该汉字略高于英文,而在AutoCAD中,以同一高度输入中英文,往往是英文高于中文,在视觉上觉得比例失调,影响美观。
为解决上述两个问题,必须对Text命令进行扩充。要扩充TEXT命令,必须先弄清楚此命令写文字的处理过程:(1)确定文字(西文字符、汉字 )的各种属性;(2)置"文字解释器"(Translater for text)初值;(3)读入一行文字;(4)对此行文字中的每个文字(西方字 为单个字符、汉字为两个字符)按其先后顺序逐个进行以下操作 ;(5)落笔(置写方式);(6)从形文件(西文字符从普通形文件、汉字从多字形文件)中取出对应数据;(7)文字解释器将取出的数据按其数据定义边解释边写入图中。
要扩充TEXT命令,且又不修改AutoCAD程序,那么只能从此命令所使用的数据上作文章,由以上给出的处理过程可知:TEXT命令所使用的主要数据<形文件(西方字库、汉字字库),即应从形文件上作文章。为此,必须要了解形文件,不仅要了解文件格式,更重要的是要了解其中数据的定义。
二、 形和字体的格式及编码
1、 形的基本概念
形(SHAPES)是一种特殊实体,可使用线、弧及圆来定义它们。对AutoCAD来说,Shapes在存储和绘图方面比另一种实体块更有效。在必须频繁的插入一个简单的零件和速度很重要的情况下,用户定义的形很有用。它的一个变种是用于确定文本字体。
在上面已提到形都是由简单的对象组成。这些对象是单一的直线、圆弧和圆。简化使用这些对象的原因是在指定方向和距离值时,不能使用小数和建筑单位,而只能使用整数和整型的分数。例如,一条线的距离等于1除以2的平方根(值为.7071068),而分数70/99 (等于.7070707),近似于线的距离值,因此可用此分数值代替。
形和字体都以同一种方式编写,并都保存在扩展名为. SHP文件中。SHP文件必须编译为SHX文件才能被调用。也就是说,SHX是通过AutoCAD将文本格式的SHP文件编译成二进制的SHX寮。其目的是将SHP内的形(包括字形)定义予以适当的排列及组织为二进制文件格式,以方便及加速AutoCAD的存取。
实际上,形文件分为三种:形、ASCII字型及大字型文件。三者在设计时唯一的差别是文件头的声明行(下节解释),而在使用时的主要区别在于调用它们的:令不同。形使用SHAPE命令通过字形名称调用,而字体在插入文本时才被调用,如执行TEXT和DIM命令。ASCII字型文件以1Byte的字形码调用,也就是常说的英文字型文件,大字型文件以2Byte的字形码调用,也就是常说的中文字型文件。不管是用SHAPE命令调用的形,还是作为一个字符插入时,输入的形名既可以大写也可以是小写。
2、SHP文件的格式
对SHP文件而言,形、ASCII字型及大字型文件三者在文件格式上是相近的,主要区别在于文件头的声明行不同。三种SHP形文件的格式如下:
2.1、形文件的形定义格式
单个的字符以ASCII码的形式编写并保存。.SHP文件或.SHX文件可以包含255个字符,每个字符定义有一个标题行,如下所示:
*形编号,字节数,形名称
标题n的下一行将用一行或多行代码定义字符。简单的形只用一行或两行就可表达清楚。
标题行中每一项的含义为:
形编号可从1到255,但不能重复。形编码的数值不可a0,此为特殊码。
字节数定义一形符号使用的字节数,包括末尾的0表示形定义结束。在定义形字符时使用的字节数最多不能超过2000。字节之间以逗号分隔。还可将一对数值用括号括起来,增强可读性,但括号无其他含义,也不占用一个字节。
形状文件是以名称调用,即用SHAPE命令调用形,形名必须大写。在使用SHAPE命令时要输入形名,正如在BLOCK命令中使用块名一样。
2.2、ASCII字形文件的形定义格式
ASCII字型在上述基础上增加了文件头声明,增加的声明为:
*0,4,字符集名称
上高,下高,种类,0
含义为:
0:特殊的字型码,声明此为字型文件的文件头
4:长度值,其值固定,Bytes
字符集名称:任意的字符串,不要太长。
上高:文字基准线上方可允许的高度。
下高g文字基准线下方可允许的高度。
种类: 0—仅供横向方向书写的g字集
1--仅供竖向方向书写的文字集
2—同时可供横向和竖向两个方向书写>文字集
对于ASCII字型文件,形名称可以使用小写字母,这样在编译并保存到>存中时,AutoCAD将忽略这些名称,可节约SHX文件的空间。在字形文件中,形名称只用于便利SHP文件的阅读。
ASCII形文件与上述的形文件一样,一个文件中只能包含255个字符,每个字符定义有一个标题行,同2.1。
2.3、大字型文件的形定义格式
有些语言如日语、朝鲜语,具有数千个非ASCII码文字。为了写这种文字,AutoCAD提供了一个形定义的专用格式文件,即大字型文件(big-font)。大字型文件除了与ASCII字型文件一样拥有特殊码0,在文件的第一行还一定要有如下的声明:
*BIGFONT 字数,字码区间数,区间一,区间二,。。。
其余同ASCII字型文件。
其中:字数:字型文件内的大约字数,与实际数误差〈10%.
字符区间数:以字符的High Byte为主,内分为几个区间。
区间一、区间二:High Byte的上下范围。
本文主要讨论ASCII码的扩充,对大字型文件在此不多加讨论。
3、形文件的编码
SHP文件是采用一系列的形状S述字和专用码来编码的,程序员使用正文编辑程序或字处理程序来输入。
3.1、形状描述字
形状描述字包括一个字节的笔运动矢量长度和方向代码。用二进制代码指定笔运动的矢量长度和方向代码可以组成一个形-字符。每一个二进制代码是一个字节。代码0到16不是矢量-方向代码,而是专用的编写形定义的代码。
每个矢量的长度和方向代码是一个三字符的字符串。在代码字符串中,第一个字符必须为0,第二个字符指定矢量的长度,它相对于形状的”高度”而言。矢量长度受到比例因子的影响,矢量长度和比例因子的积是实际的距离值。第三个字符指定矢量的方向。在使用时,有16个可用的标准方向。图2-1所示为16个标准方向。
图中所有矢量都是以同一长度规格来绘制的。对角线矢量被“延长”来匹配最接近正交矢量X或Y的位移量。例如;让我们建立一个命名为DBOX形状号为230的形状。见图2-2
*230,6,DBOX
014,010,01C,018,012,0
注意除了可以使用矢量-方向代码外,还可使用特殊代码8和9定义一对由X和Y增量组成的位移值。
3.2、专用代码
专用代码可以是十进制也可以是十六进制,指定的代码可以从0到16或从000到00E。以0打头的三位二进制数是十六进制的特殊代码。代码10是十进制的特殊代码,而010等于十进制数的16,但最重要的是010被AutoCAD解释为矢量-方拼码,表示矢量的长度为1,方向为0度。等于10的十六进制数是00A。各专用代码的含义如下。
代码0:形定义的结束,形定义的结束标记是0。
代码1和2:抬笔和落笔落笔(即绘图)模式在i制每个形的开始时激活。当绘图模式打开时,一个矢量说明将绘制一条直线;当绘图模式关闭时,矢量说明只移到新位置,而不绘制直线。
代码3和4:比例因子按照下面指定的整数因子放大或缩小形中的一个(或一组)矢量的尺寸。代码3告诉AutoCAD用下一矢量除以紧随代码3后的比例因子,代码4告诉AutoCAD用下一矢量乘以紧随代码4后的比例因子。比例因子在同一形中是累计的。
代码5和6:保存和恢复位置形定义中的每一位置都与上一个位置关联。一旦笔被移到了一个特殊的位置上,在移动前可在形定义中记录当前的位置供以后使用。这用于当一个对象在同一个位置上开始或结束多次的情况。例如,组合使用代码5和6将非常方便地绘制一个带有辐条的车轮,用代码5定义车轮的中心,绘制辐条,然后用代码6返回车轮的中心继续绘制。
保存和恢复位置也就是将当前位置压入堆栈或从堆栈中弹出的过程。堆栈中一次最多可保存四个位置。从堆栈中弹出的顺序与压入堆栈的顺序相反,且每个压入堆栈的位置必须弹出。
如果由于过多的压入操作、弹出而造成堆栈溢出,则在绘制形时将显示错误信息
代码7:子形 在SHP/SHX文件中定义的一个形,该形可包含在同一个形文件中的另一个形定义中,代码7后面紧跟插入的形的编号。
代码8和9:X - Y位移普通矢量只能 制在16个预定义的方向上,并且最大长度为15。通过代码8和9可用X - Y位移绘制非标准矢量。代码8后必须跟两 定义字节,分别为X位移与Y位移。倒如,8,(7,-8)表示将笔沿X轴正向移动7个单位,沿Y轴负向移动8个单位。这里的括号是可选的,只是为了增强可读性。用代码9可绘制一系列非标准矢量。此代码后面可跟任意数量的X-Y 位移对,由(0,0) 对终止。例如,9, (7,-8), (14,9), (-17,3), (0,0) 表示按当前的模式使用三对位移值,用(0,0) 对返回普通矢量模式。
代码00A:八分圆弧代码00A(或10)告诉AutoCAD用下两个字节定义一个圆弧,此圆弧称为八分圆弧,因为它跨越一个或多个45°的八分圆。八分圆弧的起点和端点都在八分圆边界上。图2-3所示为各八分圆的代码编号。绘制八分圆弧的格式如下所示:
10,半径,(-)0SC
半径可以是1到255之间的任意值。第3个字节以0打头,指定圆弧的方向(顺时针方向为负,逆时针方向为正)、起始八分圆( S )和跨越的八分圆数( C )的值为0到7。其中,0等于八个八分圆或敫鲈病M18-48所示的弧用以下代码绘制:
10,(2,-043)
绘制的圆弧半径为2,从八分圆4处开始,顺时针旋转135°(跨越了三个八分圆)。
代码00B:不规则圆弧 代码00B(11)绘制不规则的圆弧,其起点和端点不一定在八分圆边界上。其定义格式为p
11,start_offset,end_offset,high_radius,low_radius,(-)0SC
start_offset和end_offset表示从圆弧起点和端点到所在的八分圆边界的距离。high_radius如果为非0值,表示半径大于255。low_radius 和最后定义的字节与八分圆弧的定义(代码00A,如前所述)一样,负数依然表示顺时针方向。
代码00C和00D:>定凸度的圆弧 代码00C和00D(12和13 )提供了另一种不同于八分圆的绘制圆弧的方式。在代码00C 和00D 中通过将凸度因子应用到位移矢量来>制圆弧。代码00C和00D是由X位移和Y位移确定圆弧的端点,由凸度确定圆弧的曲率。凸度由连接圆弧两个端点的直线确定。凸度的取值范围为-127到+127。最大和最小值(127或-127)定义了180°的圆弧(半个圆)。小值对应小度数的圆弧。意思是,假设p定的凸度值为x,用x乘以180再除以127,即得到对应的角度值。凸度值为0表示定义一条直线。
代码00C绘制一段圆弧,而代码00D绘制多段圆弧(polyarcs)。它们与m码8和9相似。代码00D与009一样,必须用(0,0)对终止。代码00D后面可跟0或多个圆弧段定义,其中0凸度值用于绘制直线。
代码00E 正文垂直标记命令。专用码00E(14)仅用于双向文字字体描述中,即文字可以在水平和垂直两个方向上表示。当该码用到字符定义中,如果文字垂直写,则对下一个码进行处理。如果文字是水平写的,则下一个码就跳过不予处理。
在水平文字中,每个字符的起始点在其基线左端,而在垂直文字中,起始点在字符顶部中心。在每个字符结束时,“抬笔”段一般要回到下一个字符m起始点。对于水平文字要向右,对垂直文字要向下。专用码00E主要用来调整起点和终点的差别,使同一字形可用在水平和垂直两个方向上。
3、SHX文件的存储格式
了解SHX文件的格式,n助于事半功倍地解决实际问题。
ASCII字体文件和大字体n件的SHX格式分别见表2-1和表2-2
表2-1 ASCII字体文件存储格式
序号
|
起始及终止字节
|
数 据 内 容
|
1
|
1∽20
|
Shape文件版本标识字符串,“AutoCAD-86 shapes 1.0”
|
2
|
21∽23
|
CR+LF+EOF (16进制的 0D 0A 1A)
|
3
|
24∽25
|
最小的字型码(0)
|
4
|
26∽27
|
最大的字型码
|
5
|
28∽29
|
字型码总数N,包括字符集的声明(Code 0)
|
6
|
30∽(33+4m)
|
M为0到(N-1),每四个Bytes一字,前2Butes为字型码,后2Byteso字型定义的长度,均为整数。
|
7
|
(33+4n-1) ∽
|
依长度摆放各字型定义
|
|
|
|
表2-2 大字体文件存储格式
序号
|
起始及终止字节
|
数 据 内 容
|
1
|
0∽21
|
Shape文件版本标识字符串,“AutoCAD-86 bigfont 1.0”
|
2
|
22∽24
|
CR+LF+EOF (16进制的 0D 0A 1A)
|
3
|
25∽26
|
(08 00)
|
4
|
27∽28
|
字型码总数N,包括字符集的声明(Code 0)
|
5
|
2∽30
|
字型码区间数K
|
6
|
31∽(31+4m)
|
M为0到(k-1),每四个Bytes一组存放区间的起始与结尾字码,各2Bytes。
|
7
|
31+4k∽(31+4k+8L-1)
|
L为0到(N-1),每8位一笔存放字型的字码2Bytes、长度2Bytes与字型定义的地址(4Bytes)等数据。
|
8
|
最后
|
依长度摆放各字型定义
|
三、字体文件的扩充方法
字形文件的编制是一项工作量大、枯燥乏味的工作,如果所需字形全部独立编制,"是费力不讨好。AutoCAD系统已提供了很多标准字库,根据工程设计的实际情况,一般在标准字库的基础上增加需要的字形(或功能)即可。本文拟在txt.shx基础上进行扩充。
为满足实际需要,对不同的情况采用不同的处理方法。
1、 标准字库的处理
大家知道,SHX文件为二进制格式,采用一般的字处理软件无法对其进行编辑和扩充。对标准字库首先要得到SHP源文件,才能进行处理。
1.1、文本格式SHP的获取
在正常安装的情况下,AutoCAD R14.0及以上的版本不提供SHP文件,而仅提供SHX文件。要得到SHP文件可通过三个途径:
a、AutoCAD R12.0以前的版本在正常安装时,其Fonts子目录下同时含有SHP和SHX文件。找到低版本的AutoCAD后,从中Copy一份。
B、某些AutoCAD汉化软件,如隆迪ACE软件的子目录Bonus下含有Txt.shp文件。
c、如无法从上述两种方法得到,那就只能通过编程实现SHX与SHP文件格式的转换。SHX文件礁袷郊第二章第三节。既然SHX文件是二进制的SHP文件,而SHP又是ASCII格式,两者的转换不存在加、解密,根据上述格式可以很方便的设计出所需的程序。限于篇幅,其源程序在此不再列出。事实上,由于中文字库从不提供SHP文件,如需改造中文字库,必须采用SHX2SHP程序。
在本人的工作中,n仅需要英文字母,而且经常要用到一些希腊字符,如α、β、γ、δ、λ等,通过上述方法一并得到希腊字库文件Greeks.SHP。
2、标准字库的处理
在txt.shp中除英文字母外,还定义了三个特殊符号℃、±、Φ,其形状号分别为127、128、129,为保持兼容,该三个符号予以保留。另外为避免文件覆盖,将txt.shp更名为Cjf.shp。
2.1、将Greeks.shp中需要的字型加入到Cjf.shp,其形状号为134∽171(可以根据需要增减形状数量)。
2.2、按照习惯,英文文字的高度应比中文文字矮,这样排出的文字较美观。但中文字体的字模高度并不统一,同时不同的字体文件外观也不同,为取得较好的视觉效果a必须根据使用的中文字型调整两者的高度比例。本人取修改后的字形高度为原高度的0.8,修改方法,在原形状描述前增加“3,10,4,8”,在结束处加上“3,8,4,10”,同时不要忘记将定义字节数做相应的修改(在原来基础上加8)。
通过修改和引入已有的SHP文件,达到扩充字库的目的。
3、特殊符号的建立
工程设计中所用到的特殊符号包括两类:特殊形体和单位上标。
3.1、特殊形体
各个专业均有自己专业的一些特殊符号,如电子专业需用电子、电气符号,土建专业需用到型钢和一级钢筋、二级钢筋符号。对于经常在文字中出现的特殊符号有必要作为字体形进行定义=
对于本人从事的工作,经常要用到型钢符号。这些型钢包括角钢、扁钢、槽钢、工字钢等。按照上述的形的编写规则和工程符号表示要求,将这四个符号编入Cjf.shp中,其形状号编为130~133。
3.2、单位上标
工程文件中经常要表示单位,如12.3m2、45.34m3等,用过Microsoft Word的同志都知道,在Word中选择【格式】菜单中【字体】命令后,出现一个弹出菜单,选择上标选项即可将所选字符设为上标,非常方便。在工程设计文件中,经常要用到单位的表示,但AutoCAD本身并不提供该功能。考虑到该项功能使用频率较高,在字库文件中专门定义了上标2~9,其形状号为11~18。
3.3、控制符号的建立
在Word中,文本文件的排版功能主要是通过【格式】菜单实现。而工程文本文件主要用于输出,对于显示、色彩方面的要求不高(AutoCAD可用Color命令改变实体颜色),其他排版功能如文字行间距、上划线、下划线可通过AutoCAD相关命令方便地实现t对于阴文、阳文如字体文件支持,也可通过填充命令实现。因此,对AutoCAD的排版而言,主要是要实现任意文字的上、下标标注。
由于上、下标符号不能在文件中直接显示,故将其称做控制符号。
设置上、下标,其基本思路是要解决两点:
a、文字的起始点。对上标文字,其文字基点在正常文字高度的2/3处;对下标文字,其文字基点应略低于正常文字的基点,本人将其设于与正常文字的基点相平。
B、文字的高度:上、下标文字的高度为正常文字高度的1/2。
为使后续文字能正常标注,必须在上、下标文字标注结束后恢复到正常的参数。因此,对文字上、下标分别标注的情况下,必须各设置两个控制符号(参数改变和参数恢复),即需增加4个控制符号,形状名称分别命名为upshift,uprestore,downshift,downrestore。
形的编码用抬笔(2)、位d(8)、矢量长度相除(3)实现参数的改变,参数恢复则由矢量长度相乘(4)代替矢量长度相除(3)实现。
在公式编写时,往往出现上、下标同时标注的情况,而Word对这种情况的处理是上、下标分别标注,这与习惯是不相符的,必须增加公式编写器模块才能使标注符合习惯写法。通过增加控制符号,AutoCAD可以非常方便地实现该功能。
四、字体文件的使用
AutoCAD中形或字体必须以SHX格式存在,才能被使用。当用字处理软件编写SHP文件完成后,需将. SHP文件编译成.SHX文件。要将.SHP文件编译成.SHX文件,在AutoCAD中键入:
命令:Compile
从“选择形文件”对话框中选择要编译的形文件Cjf.shp,如果文件中有错误, AutoCAD将会发出错误报告,否则,出现如下的提示:
编译形/字体描述文件。
编译成功。输出文件路径\Cjf.shx包含6369字节。
Cjf.shx中增加的形状号见附表2。为方便使用,增加一Cread.com文件作为帮助文件,可使使用者不须记忆形状号
要使用字形文件,必须先用Style命令生成需要的字型。一个字型可以包含一个ASCII字形和一个big-fonts,并加上高度、宽度及旋转角度等参数组成。
在输入时,对英文字母可直接输入,对形状号大于127的形,可通过%%nnn的方式输入,其中nnn即为需要的形状号。
下面是Cjf.shx和大字形文件Hztxt.shx的一个例子。
附表1 文本字体的ASCII码
代码
|
字符
|
代码
|
字符
|
代码
|
字符
|
32
|
SPACE
|
64
|
@
|
96
|
‘(左撇号)
|
33
|
!
|
65
|
A
|
97
|
a
|
34
|
"(双引号)
|
66
|
B
|
98
|
b
|
35
|
#
|
67
|
C
|
99
|
c
|
36
|
$
|
68
|
D
|
100
|
D
|
37
|
%
|
69
|
E
|
101
|
e
|
38
|
&
|
70
|
F
|
102
|
f
|
39
|
’(撇号)
|
71
|
G
|
103
|
g
|
40
|
(
|
72
|
H
|
104
|
h
|
41
|
)
|
73
|
I
|
105
|
i
|
42
|
*
|
74
|
J
|
106
|
j
|
43
|
+
|
75
|
K
|
107
|
k
|
44
|
, (逗号)
|
76
|
L
|
108
|
l
|
45
|
- (连字号)
|
77
|
M
|
109
|
m
|
46
|
. (圆点)
|
78
|
N
|
110
|
n
|
47
|
/
|
79
|
O
|
111
|
o
|
48
|
0
|
80
|
P
|
112
|
p
|
49
|
1
|
81
|
Q
|
113
|
q
|
50
|
2
|
82
|
R
|
114
|
r
|
51
|
3
|
83
|
S
|
115
|
s
|
52
|
4
|
84
|
T
|
116
|
t
|
53
|
5
|
85
|
U
|
117
|
u
|
54
|
6
|
86
|
V
|
118
|
v
|
55
|
7
|
87
|
W
|
119
|
w
|
56
|
8
|
88
|
X
|
120
|
x
|
57
|
9
|
89
|
Y
|
121
|
y
|
58
|
: (冒号)
|
90
|
Z
|
122
|
z
|
59
|
; (分号)
|
91
|
[
|
123
|
{
|
60
|
<
|
92
|
\ (反斜杠)
|
124
|
| (竖线)
|
61
|
=
|
93
|
]
|
125
|
}
|
62
|
>
|
94
|
^ (脱字)
|
126
|
~ (代字号)
|
63
|
?
|
95
|
_ (下划线)
|
10
|
LF(换行)
|
|
|
|
|
|
|
附表 2 Cjf.shx中增加的形
==========================================================
ASCII 符号意义 ASCII 符号意义 ASCII 符号意义
001 上标2 134 α 151 ρ
002 上标3 135 β 152 σ
003 上标4 136 γ 153 Т
004 上标5 137 δ 154 υ
005 上标6 138 ε 155 ∈
006 上标7 139 Ψ 156 ω
007 上标8 140 Χ 157 ξ
008 上标9 141 η 158 ψ
010 LF 142 ι 159 ξ
011 移上 143 160 :
012 恢复 144 κ 161 ;
013 移下 145 λ 162 {
014 恢复 146 μ 163 }
147 ν 164 ~
127 ℃ 148 ο 165 Δ
128 ± 149 π 166 φ
129 Φ 150 167 θ
130 扁钢 168 ∑
131 角钢 169 倒△
132 槽钢 170 Ω
133 工字钢 171 Ψ
参考文献
1、AutoCAD 10.0 计算机绘图软件包 用户参考手册 中科院希望电脑技术公司
2、精通中文 AutoCAD 2000
3、AutoCAD 2000高级用户指南:设计、定制、开发
4、AutoCAD 软件技术探密 施灿堂著