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命令调用的形,还是作为一个字符插入时,输入的形名既可以大写也可以是小写。