hbgsw 发表于 2015-8-21 14:35:07

怎么使用 entmake 创建 中文的字体样式

如提描述,组码3处无法只用中文字体?非中文字体到没有问题,如何使用中文字体呢,例如 宋体?

(defun c:2t ()
(entmake (list '(0 . "STYLE")
   '(100 . "AcDbSymbolTableRecord")
   '(100 . "AcDbTextStyleTableRecord")
   '(2 . "CN");样式名
   '(70 . 0)
   '(40 . 0.0)
   '(44 . 1.0)
   '(50 . 0.0)
   '(71 . 0)
   '(3 . "宋体");;此处如何使用中文字体,例如宋体,仿宋 等等。
   '(4 . "")
    )
);end entmake
(princ "\n已经创建CN 中文样式")
(princ)
)

当在CAD中,手动设置字体为“宋体”后,通过ENTGET查看相关数据时,(3 . "") (4 . "") 都为“” ,这又是为什么呢?
各位大神求解!

huxu823 发表于 2020-5-26 08:18:32

kay338 发表于 2015-10-12 12:45
解决了,万分感谢

怎么设置的,能把源码分享出来学习一下吗?

hd654 发表于 2023-3-16 02:30:22

mark一下,学习了

lucas_3333 发表于 2015-8-21 14:48:22

本帖最后由 lucas_3333 于 2015-8-21 15:08 编辑

宋体是ttc, 论坛有讨论过

鉴于论坛搜索不好用, 贴个链接吧
http://bbs.mjtd.com/forum.php?mod=redirect&goto=findpost&ptid=87573&pid=477294&fromuid=7303840

http://bbs.mjtd.com/thread-113732-1-1.html

明总的好方法:
用AX方法解决:
(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)
)

hbgsw 发表于 2015-8-21 15:21:56

我目前使用的是WIN7 的系统 ,
测试过了,entmake ,command 都不好创建 宋体的字体样式,
command 老是提示 “字体文件不存在。”
还是楼上方法可行,谢谢了。

edata 发表于 2015-8-21 16:27:38

win7没试过,xp这样是可以的。
(defun c:2t ()
(entmake (list '(0 . "STYLE")
   '(100 . "AcDbSymbolTableRecord")
   '(100 . "AcDbTextStyleTableRecord")
   '(2 . "CN");样式名
   '(70 . 0)
   '(40 . 0.0)
   '(44 . 1.0)
   '(50 . 0.0)
   '(71 . 0)
   '(3 . "宋体.ttf");;此处如何使用中文字体,例如宋体,仿宋 等等。
   '(4 . "")
    )
);end entmake
(princ "\n已经创建CN 中文样式")
(princ)
)

lucas_3333 发表于 2015-8-21 16:44:46

edata 发表于 2015-8-21 16:27 static/image/common/back.gif
win7没试过,xp这样是可以的。

E大
我之前也这样试过 , 是能创建 ,但是用此字体样式的文字都是问号.
winxp 32位, 2007 ,

edata 发表于 2015-8-21 22:07:29

系统win7-64位 cad2011,应该也是64位的吧,因为任务管理器中,没有*32这样的字符。
测试可以使用。

hbgsw 发表于 2015-8-22 11:21:31

本帖最后由 hbgsw 于 2015-8-22 11:23 编辑

貌似用E大的代码, 在WIN732位, cad2007上还是测试通过不了。如下图:



正常来说,应该显示的是宋体那个,但是实际是 “宋体.ttf” ,之前我在代码中用(3 . "SimSun.ttf") 也不行。



WIN7系统中自带有 宋体的字体:

edata 发表于 2015-8-22 11:48:43

xp+cad08无此问题,07还真没试过。

手动建立得到的是
(entget(tblobjname "style" "样式 1"))
((-1 . <图元名: 7efec398>) (0 . "STYLE") (330 . <图元名: 7efeac18>) (5 . "1B3") (100
. "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "样式 1") (70
. 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "SimSun.ttf") (4
. ""))

;;程序建立是
(entget(tblobjname "style" "cn"))
((-1 . <图元名: 7efec388>) (0 . "STYLE") (330 . <图元名: 7efeac18>) (5 . "1B1") (100
. "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "CN") (70 .
0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "宋体.ttf") (4 . ""))
以上都能在08正确显示。。

hbgsw 发表于 2015-8-22 13:56:35

那就应该是系统的问题,不纠结了。。

fl202 发表于 2015-8-24 17:39:31

win764+ cad2011 运行楼主程序没有问题,
(vl-cmdf "_.style" "info" "隶书" "0" "1" "0" "n" "n")
也没有问题。

关于写字问号的问题,我也碰到过。
比如从xp的电脑上copy文件过来,他的字体是楷体,在我的电脑上全是问号,解决方法是:从它那里copy该字体文件,重命名,放到我的电脑内即可。
页: [1] 2
查看完整版本: 怎么使用 entmake 创建 中文的字体样式