明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2081|回复: 5

[讨论] 字体的创建问题

[复制链接]
发表于 2015-10-3 15:47 | 显示全部楼层 |阅读模式
本帖最后由 llsheng_73 于 2015-10-3 16:09 编辑

以前通过(command"style""宋体""宋体"0 0"""")能轻创建宋体或者别的字体
但没太注意,不知道从什么时候起,这样创建宋体通通不能成功,用ENTMAKE同样无法成功,vla方法也同样失败,好象只有老老实实的在CAD窗口里边用style命令才能成功了
曾经以为只是个例,但最近慢慢有人同样面临这个困惑,于是仔细看了在CAD窗口里边用style命令创建的宋体,结果不经意发现它多出了一个-3组,以前好象所有字体都没有这个,并且CAD版本我也没更新,还是用的2006版,不同的是系统从以前的XP,win7 32,后来换成了win7 64,印象中就那时开始出现这个鬼问题,到目前换成了8.1 64位
  1. (defun MKstyle(ys ztm h kg / a b);;(mkstyle"1""txt.shx"0 1)
  2.   (regapp"ACAD")
  3.   (if(setq b(mapcar'cons'(40 41 3 4 -3)(list h kg""""(list(list"ACAD"(cons 1000 (vl-filename-base ztm))'(1071 . 34306)))))
  4.      a(tblobjname"STYLE"ys))
  5.     (entmod(append(vl-remove-if'(lambda(x)(member(car x)'(3 4 40 41)))(entget a))b))
  6.     (entmakex(append(mapcar'cons'(0 100 100 2 70 71)(list"STYLE""AcDbSymbolTableRecord""AcDbTextStyleTableRecord"ys 0 0))b)))
  7.   )

上边是根据多出来的-3组对以前的创建字体函数进行的修改,经个人测试有以下情况,创建字体的时候没问题,但(mkstyle"宋体""Simsun.ttc"0 1)(mkstyle"宋体1""Simsun.ttf"0 1)创建出来的字体虽然看着一样,但实际上确不相同,另外如果用这个函数的修改部分把宋体变来变去,可能会使字体样式无效,另外那个-3组它到底有什么作用,为什么在XP或者win7 32上可以不用它?难道是windows对字体的处理方法发生了改变,以至于老版本的CAD无法处理它?但这也说不通,因为直接通过style命令创建或者修改字体为宋体都没有问题。另外1071组的34306又是什么意思?

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2015-10-4 12:22 | 显示全部楼层
1071
包含 Truetype 字体的字宽与字族、字符集 以及斜体和粗体标志的长值

这个数值得去查查资料了。

我发现TTC字体,3 4的值均为空,有效值在-3中。
发表于 2015-11-11 17:42 | 显示全部楼层
  1. (defun c:fnt(/ a) (vl-load-com) (setq ThisDrawing(vla-get-activedocument (vlax-get-acad-object))) (Setq TextStyles(vla-get-TextStyles ThisDrawing)) (Setq TextStyle(vla-add TextStyles "新文字样式")) (vla-SetFont TextStyle "宋体" :vlax-false :vlax-false 1 0) (princ) )
 楼主| 发表于 2015-11-11 19:10 | 显示全部楼层
tryhi 发表于 2015-11-11 17:42


  1. (defun TextStyle(ST ZT H K / a b)
  2.   (if(member St(vlax-for x(setq a(vla-get-TextStyles(vla-get-activedocument (vlax-get-acad-object))))(setq b(cons(vla-get-name x)b))))
  3.     (vla-SetFont(vla-item a St)ZT :vlax-false :vlax-false k h)
  4.     (vla-SetFont(vla-add a ST)ZT :vlax-false :vlax-false k h)))

这个比较直接些。。。只是没测试在只有Simsun.ttc的情况下是不是都可能成功创建宋体
发表于 2016-1-18 11:00 | 显示全部楼层
试验怎么不行?
发表于 2022-6-10 19:58 | 显示全部楼层

好用,如果加上字宽和字高,该怎么改?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 21:13 , Processed in 0.311510 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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