AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

Join the forum, it's quick and easy

AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
AutoCAD顧問
Would you like to react to this message? Create an account in a few clicks or log in to continue.
[分享]Auto CAD与文字上下标 Aoe1-113[分享]Auto CAD与文字上下标 Ioaoe110[分享]Auto CAD与文字上下标 2020-310[分享]Auto CAD与文字上下标 Oiu15010[分享]Auto CAD与文字上下标 2020-211[分享]Auto CAD与文字上下标 Ia15010[分享]Auto CAD与文字上下标 Aizyao10[分享]Auto CAD与文字上下标 Uos15010[分享]Auto CAD与文字上下标 BPl3tjj[分享]Auto CAD与文字上下标 Ziao1510
[分享]Auto CAD与文字上下标 Aoe15010[分享]Auto CAD与文字上下标 Oo-2-110[分享]Auto CAD与文字上下标 Zuoiy_10[分享]Auto CAD与文字上下标 Aizyao11[分享]Auto CAD与文字上下标 Iyb_1510[分享]Auto CAD与文字上下标 Aoe1-112[分享]Auto CAD与文字上下标 Uos15011[分享]Auto CAD与文字上下标 Aoe2da10[分享]Auto CAD与文字上下标 Aoe2da11[分享]Auto CAD与文字上下标 Aoe10

[分享]Auto CAD与文字上下标

2 posters

向下

[分享]Auto CAD与文字上下标 Empty [分享]Auto CAD与文字上下标

發表 由 li60830 2013-04-23, 16:03

摘要 在各种操作系统下的所有AutoCAD版本,都不能直接写出带上下标的文字,并根据工作实践,介绍了该文提出了解决这一问题的方法。

关键词 AutoCAD 文字 文字上下标在AutoCAD中,用于存放所绘图形的文件被称为图形文件,实体是组成这种文件的基本单位,文字(Text)是其中最常用的实体之一。


一、术语

为叙述方便先定义几个与文字有关的术语,在BASESUPPER DATA(带上标的文字)、BASES UB DATA(带下标的文字)、BASESUPPERSUB DATA(带上下标的文字)的例子中,BASE和DATA称为基本文字,其中BASE又称前导(基本)文字、DATA又称后续(基本)文字,SUPPER称为上标文字, SUB称为下标文字,文字上下标在这里包括文字的上标(Superscript)

、下标(Subscript)和上下标。

在AutoCAD中,文字是具有相同高度、高宽比(宽度)、旋转角度、倾斜角度、线型、颜色和字体等属性的字符串,由1个及多个字符组成。由于上下标文字与基本文字高度不同,按此定义,AutoCAD文字显然不能带上下标,因此给使用者带来了很多麻烦。在实际使用中,前导文字、上标文字、下标文字和后续文字必须分多次来写,虽然这样可以应付使用,但是有很多不便:

(1)由于要分次来写所以比较烦琐;

(2)由于基本文字与上下标文字分属不同的实体所以修改起来也比较烦琐;

(3)由于精确定位困难所以图中文字的上下标很难完全一致。


二、扩充TEXT命令

在AutoCAD各版本中,TEXT命令用于在图中写文字(字符串),只能直接写出基本文字,而不能直接写出带上下标的文字。能否用TEXT命令,在不对AutooCAD程序作任何修改的情况下,扩充TEXT命令的功能,使其也能直接写出带上下标的文字呢?本文得出的结论是肯定的。

要扩允TEXT命令,必须先弄清楚此命令写文字的处理过程:

(1)确定文字(西文字符、汉字)的各种属性;

(2)置"文字解释器"(Translater for text)初值;

(3)读入一行文字;

(4)对此行文字中的每个文字(西方字符为单个字符、汉字为两个字符)按其先后顺序逐个进行以下操作;

(5)落笔(置写方式);

(6)从形文件(西文字符从普通形文件、汉字从多字形文件)中取出对应数据;

(7)文字解释器将取出的数据按其数据定义边解释边写入图中。


要扩充TEXT命令,且又不修改AutoCAD程序,那么只能从此命令所使用的数据上作文章,由以上给出的处理过程可知:TEXT命令所使用的主要数据为形文件(西方字库、汉字字库),即从形文件上作文章。为此,必须要了解形文件,不仅要了解文件格式,更重要的是要了解其中数据的定义。

形文件由形及索引组成,形由形定义命令和向量数据组成,AutoCAD中共有两种形文件:一种是普通形文件(Shape),用单字节作索引(用单个字节作为取出数据的索引),用于建立西方字库,最多可拥有256个形;另一种为多字形文件,(big fo nt)其含义为可容纳许多文字的形文件,用双字节作索引,用于建立汉字字库,最多可拥有256×256=65536个形。虽然这两种文件格式稍有不同,但其形定义完全一样,本篇统称形文件。

从形定义命令表(表1)可以看出,1与2、3与4、5与6是三组互为逆操作的命令,分别用于落笔与抬笔控制、向量数据的缩小与放大、当

前位置的保存与恢复。表1

在文字解释器中,用到两个重要的变量:一个是"比例因子",为正实型数,其初数与形文件中的特殊形(见表2)有关,

表2

用于向量数据的比例,其值可由形定义命令3与4加单字节整数(1~255)数据来改变,通过3与4的组合可以为比例因子设置不同的值;另一个是"当前位置",其初值为使用者输入的文字的参考点,其值在写文字过程中随着形定义的变化而随时被改变,其值还可由抬笔加位移来人为地改变,每个文字的起点都由此变量给出,命令5与6可把此变量进栈与出栈,用于此变量的保存与恢复。值得注意的问题是在一个形中3与4、5与6都不一定要成对使用,这是解决问题的关键所在。

现以写同时带上标和下标的文字为例(参考表3),设上标和下标的文字高度均为基本文字的1/2倍,使用上述3组形定义命令,说明TEXT命令直接写出带上下标文字的方法。以下是TEX T命令中文字解释器的

工作过程:

(1)在A点落笔(使用形定义命令1),开始写前导文字,当前位置为A点,比例因子为文字高度/基线上方向量长度(参考表2);

(2)写完前导文字BASE后,当前位置为B点;

(3)B点位置进栈(命令5);

(4)进行写上标文字前的位置调整,将写上标文字的起点(当前位置)调整到D点,在B点笔(命令2)、位移到C点(数据OA4)、再位移到D点(数据(010) ;

(5)调整上标文字的高度,将比例因子除2(命令3、数据2),使其高度缩小2倍; 表3

(6)在D点落笔(命令1)后,开始写上标文字SUPPER,写完后当前位置为E点;

(7)B点位置出栈(命令6),回到B点并使其成为当前位置;

(8)进行写下标文字前的位置调整,将写下标文字的起点(当前位置)调整到G点,在B点笔(命令2)、位移到F点(数据04C)、再位移到G点(数据0 20);

(9)在G点落笔(命令1)后,开始写下标文字SUB,写完后当前位置为H点;

(10)恢复后续文字的高度,将比例因子乘2(命令4、数据2),使其高度放大2倍,恢复到基本文字的原有高度;

(11)进行写后续文字前的位置调整,将后续文字的起点(当前位置)调整到J点,在H点抬笔(命令2)、位移到I点(数据010)、再位移到J点(数据0

24);

(12)在J点落笔(命令1)后,开始写后续文字DATA,写完后当前位置为K点;

(13)到K点整个写文字过程结束。对写带上标或带上下标的文字,请参见表3。

从以上的过程可以看出:不修改AutoCAD程序,只利用AutoCAD现有

的功能,已有可能使TE XT命令直接写出带上下标的文字。


三、分隔文字

在包含前导文字、上标文字、下标文字和后续文字的带上下标文字中,显然必须只要用3个特殊文字来分隔它们,称为分隔文字,取名为"上下标开始"、"上下标隔"和"上下标结束"。在包含前导文字、下标文字和后续文字的带上标文字中,要用两个分隔文字"上标开始"和"上标结束"。在包含前导文字、下标文字和后续文字的带下标文字

中,同样也要用两个分隔言文字"下标开始"和"下标结束"。

对带上下标的文字,在前导文字和上标文字之间有分隔文字"上下标开始,这之间要进行上标文字位置和高度的调整;在上标文字和下标文字之间有"上下标分割",这之间要进行下标文字位置的调整;在下标文字和后续文字之间有"上下标结束",这之间要进行后续文字位置和高度的调整。如果这3个分隔文字能完成这些指定功能,那么TEXT命令就能直接写出带上下标的文字。

在带上下标、上标和下标的文字中,并要用到7个分隔文字。如果单个字符表示只能将其插Z入西文字库,而西文字库中的字符有些输入不方便、有些常用不可替代、有些与汉字冲突,可供使用的字符不多,用单个字符表示不方便。如果两个字符表示可将其插入汉字字库,考虑到输入的方便性和直观性,这7个分隔文字用下划线加括号组成,分别为:"_{"(上下标开始)、"_|"(上下标分隔)和"_}"(上下标结束)、"

_("(上下标开始)和"_)"(上标结束)、"_["(下标开始)和"_"(下标结束)。

实质上,分隔文字可以看作是特殊的形。在带上下标文字中用到的3个形(分隔文字),定义如下。"上下标开始"为:(1)2(抬笔);(2)5(B点位置进栈);(3)0A4(从B点位移到C点);(4)0 10 (再位移到D点)(5)3及2(向量数据缩小2倍);(6)0(定义结束)。"上下标分隔"为:(1)2(抬笔);(2)6(B点位置出栈);(3)04C(从B点位移到F点);(4)020(再位移到G点);(5)0(定义结束) 。此时,由于向量数据已被缩小2倍;实际长度仅有原来的1/2,故F点到G点的位移020与C点到D点的位移010相同,这样才能保证上标和下标的起点在一条垂线上。"上下标结束"为:

(1)2(抬笔);

(2)3及2(向量数据放大2倍);

(3)5(B点位置进栈);

(4)010(从H

点位移到I点);

(5)024( 再位移到J点);

(6)0(定义结束)。在写带上标和带下标文字中用到的另外4个形,请参见表2。

上述用作分隔文字的7个形有了明确的定义。因此只要将这7个形插入到多字形文件(汉字字库)中,就能用TEXT命令直接写出带上下标的文字。形文件有严格、固定、不可阅读的格式,形并不能直接插入,因此只有将这7个形插入到形文件的源文件(SHP文件)中,并对源文件的第一行作相应修改,重新编译后才可使用。表2给出的数据是相对于12(基线上方向量长度)而言的,如果在你的多字形文件中此值不是12,如果你对上下标的位置和高度不满意,可对数据适当修改。使用时,要写同时带上标和下标的文字,只要输入一行文字:BASE_{SUPPER_|SU _}DATA;要写带上标的文字,输入:BASE_(SUPPER_)DATA;要写带下标的文字,输入:BASE_ [SUB_]DATA。

使用中需注意的问题是:

(1)在行未的分隔文字可省略;

(2)在带上下标的文字中,如下标文字个数比上标文字少要用空格补足;

(3)由于分隔文字被放在多字形文件中,所以只有使用这个多字形文件,即将这个多字形文件设置成当前字体,才能写出带上下标的文字。在AutoC AD中,多字体文件与普通形文件要配套使用,并按此顺序取数据,由于下划线字符"_"已被用在分隔文字中,被多字形文件占用,在普通形文件中这个字符就无法被使用,为确保完整性,必须在多字形文件中对这个字符重新定义(见表2),重新定义后用"----"表示"--"。

使用这种方法扩充TEXT命令,有很多好处:

(1)不必修改AutoCAD程序;

(2)对AutoCAD的所有命令(包括TEXT命令)都没有任何影响;

(3)适用于各种操作系统下的所有AutoCAD版本;

(4) 使用方便,用一个TEXT命令一次就能直接写出带上标、下标或上下标的文字;

(5)写入图中的基本文字及上下标是一个实体,所以修改方便;

li60830
li60830
初級會員
初級會員

文章總數 : 345
年齡 : 53
來自 : 亞洲
職業 : 待業
愛好 : 電動~游泳~看書~看影集
個性 : 固執
使用年資 : 18年
使用版本 : 2008 - 2014
積分 : 5
經驗值 : 6000
威望值 : 340
注冊日期 : 2013-04-17
藍鵲697號
男 處女座 豬

回頂端 向下

[分享]Auto CAD与文字上下标 Empty 回復: [分享]Auto CAD与文字上下标

發表 由 Tiger&蘋果爸 2013-04-23, 16:28

謝謝您的熱心分享!
提醒您:如果這是轉載文章,請記得註明出處喔~
認同

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21382
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90361
威望值 : 17197
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
[分享]Auto CAD与文字上下标 Aoe1-113[分享]Auto CAD与文字上下标 Ioaoe110[分享]Auto CAD与文字上下标 2020-310[分享]Auto CAD与文字上下标 Oiu15010[分享]Auto CAD与文字上下标 2020-211[分享]Auto CAD与文字上下标 Ia15010[分享]Auto CAD与文字上下标 Aizyao10[分享]Auto CAD与文字上下标 Uos15010[分享]Auto CAD与文字上下标 BPl3tjj[分享]Auto CAD与文字上下标 Ziao1510
[分享]Auto CAD与文字上下标 Aoe15010[分享]Auto CAD与文字上下标 Oo-2-110[分享]Auto CAD与文字上下标 Zuoiy_10[分享]Auto CAD与文字上下标 Aizyao11[分享]Auto CAD与文字上下标 Iyb_1510[分享]Auto CAD与文字上下标 Aoe1-112[分享]Auto CAD与文字上下标 Uos15011[分享]Auto CAD与文字上下标 Aoe2da10[分享]Auto CAD与文字上下标 Aoe2da11[分享]Auto CAD与文字上下标 Aoe10