明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6444|回复: 14

[已解答] 怎么使用 entmake 创建 中文的字体样式

[复制链接]
发表于 2015-8-21 14:35:07 | 显示全部楼层 |阅读模式
如提描述,组码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 . "") 都为“” ,这又是为什么呢?
各位大神求解!
发表于 2020-5-26 08:18:32 | 显示全部楼层
kay338 发表于 2015-10-12 12:45
解决了,万分感谢

怎么设置的,能把源码分享出来学习一下吗?
发表于 2023-3-16 02:30:22 | 显示全部楼层
mark一下,学习了
发表于 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)
)
 楼主| 发表于 2015-8-21 15:21:56 | 显示全部楼层
我目前使用的是WIN7 的系统 ,
测试过了,entmake ,  command 都不好创建 宋体的字体样式,
command 老是提示 “字体文件不存在。”
还是楼上方法可行,谢谢了。
发表于 2015-8-21 16:27:38 | 显示全部楼层
win7没试过,xp这样是可以的。
  1. (defun c:2t ()
  2.   (entmake (list '(0 . "STYLE")
  3.    '(100 . "AcDbSymbolTableRecord")
  4.    '(100 . "AcDbTextStyleTableRecord")
  5.    '(2 . "CN");样式名
  6.    '(70 . 0)
  7.    '(40 . 0.0)
  8.    '(44 . 1.0)
  9.    '(50 . 0.0)
  10.    '(71 . 0)
  11.    '(3 . "宋体.ttf");;此处如何使用中文字体,例如宋体,仿宋 等等。
  12.    '(4 . "")
  13.     )
  14.   );end entmake
  15.   (princ "\n已经创建CN 中文样式")
  16.   (princ)
  17. )

点评

刚才家里的win7 64位上测试,没有问题  发表于 2015-8-21 21:39
e大的办法在我在XP的win7 32位下都没问题,到win7 64位下不得行了  发表于 2015-8-21 16:37
发表于 2015-8-21 16:44:46 | 显示全部楼层
edata 发表于 2015-8-21 16:27
win7没试过,xp这样是可以的。

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

点评

试试黑体呢,黑体基本上都有吧。很容易出问题的就是宋体,xp系统有新宋体和宋体,宋体PUA  发表于 2015-8-21 19:14
发表于 2015-8-21 22:07:29 | 显示全部楼层
系统win7-64位 cad2011,应该也是64位的吧,因为任务管理器中,没有*32这样的字符。
测试可以使用。
 楼主| 发表于 2015-8-22 11:21:31 | 显示全部楼层
本帖最后由 hbgsw 于 2015-8-22 11:23 编辑

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



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



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

本帖子中包含更多资源

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

x
发表于 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正确显示。。
 楼主| 发表于 2015-8-22 13:56:35 | 显示全部楼层
那就应该是系统的问题,不纠结了。。
发表于 2015-8-24 17:39:31 | 显示全部楼层
win7  64  + cad2011 运行楼主程序没有问题,
(vl-cmdf "_.style" "info" "隶书" "0" "1" "0" "n" "n")
也没有问题。

关于写字问号的问题,我也碰到过。
比如从xp的电脑上copy文件过来,他的字体是楷体,在我的电脑上全是问号,解决方法是:从它那里copy该字体文件,重命名,放到我的电脑内即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 23:36 , Processed in 0.240969 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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