扩充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命令所使用的主要数据为形文件(西方字库、汉字字库),即应从形文件上作文章。为此,必须要了解形文件,不仅要了解文件格式,更重要的是要了解其中数据的定义。