找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 481|回复: 6

[文章]:剖析AUTCAD形文件

[复制链接]
发表于 2004-4-9 22:13:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
论坛上常刊登有关形文件方面的文章,在此本人不想重复,现谈一些并不常见的用法及解释。
1.在Unicode形文件中,文字的定义行都是以下规定格式,以ROMANS.SHP为例:
*0000A,9,lf                                         
“*0000A”---字符的编号,在此以16进制码表示,如用10进制表示,此处应为“*10,”。
也可用计算器进行换算,如编号小于*0007F(10进制127)也可从帮助文件中的自定义手册查找ASCII 码换算表, “9,”---下一行中共有9个字符;
“lf”---字符的名称,此处表示换行符号。至于为什么是换行符号,仍可从ASCII 码换算表中查取,也可利用下述方式查取。
在Unicode形文件中的名称有许多“?”,其实它的名称并非是“?”,而是它的名称在WINDOWS系统中无法正确显示,然而在CAD图形中却是可以表示的,可通过输入文字来了解其含义。以“*000C0,43,uc^?”为例:
用计算器在16进制状态下输入C0(数字0),将其转换成10进制得192,在CAD图形中采用单行文字方式输入%%192,也可直接输入“\U+00C0”, 由此可看到“uc^?”的字符原为“a(A)”且字顶上有一撇。通过了解字符的含义,可定义自己所需的形文件。
2.当大字体与字母混写时,其大小很不协调,字母总比汉字大一号,非常难看。曾有人采用比例缩小方式将其统一。即在字母形文件每一句的开头加上“3,5,4,4,”,这里3,5,表示将字母缩小1/5,4,4,表示将字母扩大4倍,意味着整个字高比例系数为0.8,然后在每一句的末尾加上“3,4,4,5,0”,再将其比例还原。这确实是一个办法,但太繁琐。其实根本不需这么麻烦,只需在形文件中改动一个字即可实现。以ROMANS.SHP文件为例,从形文件中将“21,7,2,0,0,0”改成“24,7,2,0,0,0”即可。其解释为:21表示大写字母整个高度被划分的单元网格数量,7表示小写字母在基线向下延伸的距离,2表示可双向(水平或垂直)书写的字体,最后三个0,0,0分别表示为Unicode,可以内嵌的字体以及结尾。改动后相当于字母的高度缩小了21/24。最后将修改后的ROMANS.SHP放入CAD的FONTS文件夹中,用COMPILE命令编译成ROMANS.SHX文件(以下修改文件均采用此编译方式)。
3.上述修改字高方式可用于任何Unicode字体,然而对于TXT.SHP文件却并不完全适用,虽然将6,2,2,0,0,0改成7,2,2,0,0,0后,其字体可缩小为6/7,但整个字母及数字将偏下于汉字的左下方,对于并不十分讲究的使用人来讲,毕竟比原先的字体漂亮多了。如要达到尽善尽美,则6,2,2,0,0,0无需改动,而采用类似于上述第2项的方式进行调整。以数字1的定义为例,首先将“*00031,18,n1……”改为:
*00031,28,n1
2,3,5,031,4,4,14,8,(-1,-6),054,1,012,06C,2,018,1,020,2,020,14,03A,3,4,039,4,5,0
由于改动后比原先多了“3,5,031,4,4,”“ 3,4,039,4,5,”共10个字符,故需将“*00031,18,n1……”改为“*00031,28,n1……”。其中“3,5,***,4,4,”的含义与上述相同,即字高比例系数为0.8,所不同的是031表示在缩小1/5后,将字体的起点向X的正方向移动3格、Y的正方向移动1格(详见帮助文件的自定义部分),039表示反向移动复位。
常用字母的名称范围:数字n0~n9,大写字母 uca~ucz,小写字母lca~lcz。如某些特殊字符也需修改,其名称范围可从ASCII 码换算表中查取。
4.在CAD的帮助文件中,介绍了利用“[”“]”及“{”“}”键实现上、下标功能。但采用帮助文件中的定义,下标偏离太远,几乎到了下一行,且比例失真,实用意义不大。现将其调整如下,首先删除下列语句:
“*0005B,37,klb
   ……”
  “*0005D,37,krb
   ……”
  “*0007B,54,klbr
   ……”
  “*0007D,54,krbr
   ……”
用下列语句覆盖:
*0005B,7,super_on
2,0E4,3,5,4,3,0
*0005D,7,super_off
2,4,5,3,3,0EC,0
*0007B,9,sub_on
2,3,5,8,(0,-28),4,3,0
*0007D,9,sub_off
2,3,3,8,(0,28),4,5,0
以上修改的是ROMANS.SHP文件,该字体的单元网格高等于21,对于网格高等于21的Unicode字体都可采用以上定义。若修改TXT.SHP文件,由于TXT字体网格高等于6,故需将以上定义中的E换成4,28换成8即可。
5.TXT字体中的大写字母“O”呈长方形,本人觉得不好看,若你也有同感,可修改*0004F,17,uco”语句,将其4个角去掉,用下列语句将相关部分覆盖。
“*0004F,23,uco
2,14,8,(-2,-6),040,014,1,01A,028,016,044,012,020,01E,04C,2,02F,14,8,(-4,-3),0”
6. 在《AutoCAD应用技巧44例》一文中,作者提出形位公差中的圆度符号失真,认为GDT.SHP文件的2号及4号字符中采用127°定义圆度不妥,应为90°。对此,本人持有不同见解。GDT.SHP文件中的2号及4号字符中采用00C码定义圆弧,而00C码规定的半圆定义就是127,并非90°(角度),只有00B码才采用角度定义圆弧。如采用00B码定义圆弧,其效果与00C码一样,但定义编写麻烦,因此不存在圆度失真问题。
7.CAD形位公差中的圆跳动符号与国标不相吻合,国标规定圆跳动符号为实心箭头,箭角为30°,标注角为60°;而CAD的符号却为空心箭头,标注角为45°,箭角为45°。如需与国标一致,可修改GDT.SHP文件的第5句——“*5,16,005”,将其修改为:
*5,37,005
5,8,(36,63),7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,7,6,4,182,3,10,083,6,0
*6,17,006
9,(-12,7),(48,55),(-24,-69),(-12,7),(0,0),023,4,4,3,5,0
对修改后的语句解释为:新增的第6句定义了箭角为30°的空心箭头,为绘制实心箭头,在6句的末尾,向内移动并变换4/5的比例。第5句的“7,6, 7,6,……”为反复引用第6句共13次,从而以多个(一个比一个小的)空心箭头近似的取代了实心箭头 。
8.CAD2000中所用的大字体Gbcbig.shx宽高比有点失调,显得过分瘦长,AUTODESK公司在2004版本中有所改善,其宽度约是以前版本的1.1倍。因此若用CAD2004来打开CAD2000以前版本的文件,其Gbcbig.shx字体的宽度将增大1.1倍,反之,若用CAD2000来打开CAD2004的文件(另存为2000版本),其Gbcbig.shx字体的宽度将缩小为原先的约0.9。对此,若文件中Gbcbig.shx字体数量不多,则可忽略不计,当有大段的Gbcbig.shx字体时,则不得不给予足够的注意。
9.值得提醒的是,经编译后的形文件只能在自己的电脑上使用,若将CAD图形在他人电脑上打开或打印,所有修改后的字体仍将恢复原先的状态。也许有人说,这还不简单,将修改的字体复制到他人电脑上,不就行了吗。是的,这样做是能解决问题,但别人却不一定喜爱经你修改的文件,尤其是自定义的上、下标字体。其实,还有更好更简单的办法---将自定义字体与图形放在同一个移动盘或文件夹中,在别人电脑上打开CAD图形时,首先会在CAD图形所在的移动盘或文件夹中寻找并使用相关的字体,即使在他人电脑里已有同名字体时也不例外。这样一来,既满足了当前使用需求,同时他人电脑的字体也未受任何影响。第8条的情况也可采用此方法来解决。各类*shp形文件可从CAD-R14版本的光盘中获取。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-4-29 01:51:44 | 显示全部楼层
高手,不佩服不行。顶一下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-30 09:35:14 | 显示全部楼层
佩服楼主,可我对CAD形还是不理解,首先应是形编号、然后形大小、形名,那么对形编号(为什么采用十六进制?)有什么要求?
  LF换行符什么意思?
 请楼主解释下面两个形:
*036,70,n6
2,034,14,8,(-10,-21),14,5,8,(16,18),1,025,8,(-3,1),028,8,(-3,-1),8,(-2,-3),
8,(-1,-5),05C,8,(1,-4),02E,8,(3,-1),010,8,(3,1),022,8,(1,3),014,8,(-1,3),026,
8,(-3,1),018,8,(-3,-1),02A,8,(-1,-3),2,8,(16,-7),14,6,14,8,(10,-9),03C,0

*036,77,n6
2,14,3,2,14,8,(-13,-42),14,4,2,8,(12,18),1,9,(-1,2),(-3,1),(-2,0),(-3,-1),
(-2,-3),(-1,-5),(0,-5),(1,-4),(2,-2),(3,-1),(1,0),(3,1),(2,2),(1,3),(0,1),
(-1,3),(-2,2),(-3,1),(-1,0),(-3,-1),(-2,-2),(-1,-3),(0,0),2,8,(20,-7),14,3,2,
14,8,(-27,-21),14,4,2,0

谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-30 12:48:53 | 显示全部楼层
毕竟是高手,可我一看这密密麻麻的数字就头晕!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-30 20:09:19 | 显示全部楼层
036是形编号,此处以16进制表示,相当于10进制的54,用于区别调用不同的字符,在CAD中通常用16进制表示。036对应于数字6。
第二个70是036形中所有字迹的数量,共70个(也就是说所有的标点符号数字再加1)。
第三个n6是形的名称。
LF是换行符号,对应于计算机键盘中的ENTER的效果。
有关内容的解释就复杂多了,要详细的说需费好大的劲,介绍你去看看帮助文件吧,打开帮助—自定义--创建形定义文件---形说明---特殊代码,那里有最完善的解释。
最后,特别提醒一下,在同一个*.SHP文件中,决不可同时有两个*036,70,n6。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-2 13:48:58 | 显示全部楼层
跟着楼主学习啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-10 10:04:36 | 显示全部楼层
向搂主学习!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-23 23:18 , Processed in 0.198026 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表