明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2099|回复: 12

[提问] 为什么文字样式字体名为宋体,DXF数据却为空

[复制链接]
发表于 2016-3-9 16:53:15 | 显示全部楼层 |阅读模式
输入style命令后,样式名"-宋体"的SHX字体名为”宋体“。图纸文字也正常显示为宋体。

(tblnext "style" t)
(tblnext "style")后,"-宋体的"的SHX元素值为“”,并未显示为宋体。

已附上图片,有人知道是什么原因吗?

本帖子中包含更多资源

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

x
发表于 2016-3-9 19:25:08 | 显示全部楼层
 楼主| 发表于 2016-3-10 10:23:11 | 显示全部楼层
kozmosovia 发表于 2016-3-9 19:25
http://bbs.mjtd.com/thread-171460-1-1.html

先谢谢大侠。
不过这个链接是解决了如何创建文字样式名的问题。"需要使用宋体的TTF文件名,到windows的fonts目录查一下"你的这句点出了那个楼主的问题所在。
只是我奇怪某些图纸,汉字样式都正常显示为某种汉字时,DXF组的SHX字体元素为什么有的为空,有的为*.ttf。
我是在写一个自动设置识别不到字体的程序。唯独对于这个汉字问题,无法解决。有没有办法让为空的shx元素值自动赋予style命令显示的那种字体?
发表于 2016-3-10 14:38:22 | 显示全部楼层
Windows机制下,允许TTF集合成TTC,AutoCAD暂时不支持TTC,而Windows系统的宋体只有TTC文件,所以CAD在处理 宋体时有些诡异。其他有TTF字体文件的字体没有问题,可以直接赋值给DXF。
 楼主| 发表于 2016-3-10 16:47:56 | 显示全部楼层
kozmosovia 发表于 2016-3-10 14:38
Windows机制下,允许TTF集合成TTC,AutoCAD暂时不支持TTC,而Windows系统的宋体只有TTC文件,所以CAD在处理 ...

了解了。那如果遇到某种字体使用TTC,有没有办法获取知道是采用了哪种TTC?STYLE命令显示的有用各种汉字字体。DXF组里看不出来,因为统一都是为空。
发表于 2016-3-10 19:13:39 | 显示全部楼层
根据vla-setfont textstyle "宋体" :vlax-false :vlax-false 1 0
估计可能可以使用vla-getfont,你试一下
 楼主| 发表于 2016-3-11 18:34:16 | 显示全部楼层
kozmosovia 发表于 2016-3-10 19:13
根据vla-setfont textstyle "宋体" :vlax-false :vlax-false 1 0
估计可能可以使用vla-getfont,你试一下

好的。我回头试试。谢谢!
 楼主| 发表于 2016-3-14 11:52:14 | 显示全部楼层
本帖最后由 jmdzorro 于 2016-3-14 11:54 编辑
kozmosovia 发表于 2016-3-10 19:13
根据vla-setfont textstyle "宋体" :vlax-false :vlax-false 1 0
估计可能可以使用vla-getfont,你试一下

没成功,vla-getfont主要还是针对当前图形对象,获取其字体属性。但目前我用的是style字体列表来搜索字体,可以获取到比如样式名"standard"并赋予某个变量。不知道vla-getfont该如何用在这个地方。

(setq acadObj (vlax-get-object))
(setq doc (vla-get-ActiveDocument acadObj))
(vla-GetFont (vla-get-ActiveTextStyle doc) 'typeFace 'Bold 'Italic 'charSet 'PitchandFamily)

这个是我在CAD官网找的范例
发表于 2016-3-14 13:03:34 | 显示全部楼层
jmdzorro 发表于 2016-3-14 11:52
没成功,vla-getfont主要还是针对当前图形对象,获取其字体属性。但目前我用的是style字体列表来搜索字体 ...

你的代码写错了
应为
(setq acadObj (vlax-get-acad-object))
(setq doc (vla-get-ActiveDocument acadObj))
(vla-GetFont (vla-get-ActiveTextStyle doc) 'typeFace 'Bold 'Italic 'charSet 'PitchandFamily)

如此typeface将会返回字体名称:如宋体或者新宋体
 楼主| 发表于 2016-3-15 09:24:41 | 显示全部楼层
kozmosovia 发表于 2016-3-14 13:03
你的代码写错了
应为
(setq acadObj (vlax-get-acad-object))

是的,是少了个"-ACAD"。那个调试的时候是返回了当前样式的属性(比如standard)。但是用(tblnext "style")轮换样式的时候,无法返回相应的样式属性(依然还是standard)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 20:34 , Processed in 0.215139 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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