明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2392|回复: 19

[源码] 字体样式没有字体,自动替换并显示文字

  [复制链接]
发表于 2025-7-7 18:29:02 | 显示全部楼层 |阅读模式
本帖最后由 437271963 于 2025-7-9 18:28 编辑

fonts文件里面是常用的字体,如果碰到字体库里面没有的字体,就会显示不全,或提示替换字体样式。

通过网盘分享的文件:AutoCAD_fonts.7z
链接: https://pan.baidu.com/s/1vbU0jPTi3ZiOipjtaxTqYg?pwd=fdq4 提取码: fdq4
--来自百度网盘超级会员v1的分享

  1. ;;如果字体库里面没有找到字体,就修改常规字体为tssdeng.shx;如果有大字体,并且没有找到就修改为hztxt.shx字体
  2. ;;自动-修改-字体样式;
  3. (defun ZXFonts_25 ( / ff1 ff3 tr1 tr2 txt)
  4. (setvar "cmdecho" 0)
  5. (setvar "blipmode" 0)
  6. (vl-load-com)
  7. (setq ff1 "D:\\AutoCAD_fonts\\fonts\");字体路径;【压缩包解压到D盘,这样路径才不会出错。】
  8. (vlax-for txt (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object)))
  9.   (setq tr1 (vla-get-fontfile txt) tr2 (strcase tr1) ff3 (strcat ff1 tr1));取得常规字体
  10.   (if (and (/= tr1 "")
  11.            (/= tr2 "TSSDENG.SHX")
  12.            (vl-string-search ".SHX" tr2 0);确认是形字体
  13.            (null (findfile ff3));这个字体库里面没有找到
  14.       )
  15.    (vla-put-fontfile txt "tssdeng.shx");修改大字体规格
  16.   )
  17.   (setq tr1 (vla-get-bigfontfile txt) tr2 (strcase tr1) ff3 (strcat ff1 tr1));取得大字体
  18.   (if (and (/= tr1 "");不为空
  19.            (/= tr2 "HZTXT.SHX")
  20.            (vl-string-search ".SHX" tr2 0);形字体
  21.            (null (findfile ff3));这个字体库里面没有找到
  22.       )
  23.    (vla-put-bigfontfile txt "Hztxt.shx");修改大字体
  24.   )
  25. )
  26. (princ)
  27. )
  28. (ZXFonts_25)
  29. ;;自动修改大字体文件;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  30. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1、压缩包放到D盘解压
2、命令OP,添加以下路径:
   D:\\AutoCAD_fonts
   D:\\AutoCAD_fonts\\fonts

3、上移路径到顶
4、命令appload,把【自动修改字体样式.lsp】添加到启动项

5、以后打开图纸就可以完整显示文字内容,并且不会有提示【替换字体】。

修正了一下自动加载程序,代码如下:
  1. (defun ZXFonts_252 ( / tr1 tr2 txt)
  2. (setvar "cmdecho" 0)
  3. (setvar "blipmode" 0)
  4. (vl-load-com)
  5. (vlax-for txt (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object)))
  6.   (setq tr1 (vla-get-fontfile txt) tr2 (strcase tr1));字体名称
  7.   (if (and (/= tr1 "")
  8.            (vl-string-search ".SHX" tr2 0);确认是形字体
  9.            (null (findfile tr1));这个字体库里面没有找到
  10.       )
  11.    (vla-put-fontfile txt "tssdeng-改.shx");修改常规字体名称
  12.   )
  13.   (setq tr1 (vla-get-bigfontfile txt) tr2 (strcase tr1));取得大字体
  14.   (if (and (/= tr1 "")
  15.            (vl-string-search ".SHX" tr2 0);确认是形字体
  16.            (null (findfile tr1));这个字体库里面没有找到
  17.       )
  18.    (vla-put-bigfontfile txt "Hztxt-改.shx");修改大字体
  19.   )
  20. )
  21. (princ)
  22. )
  23. (ZXFonts_252)



本帖子中包含更多资源

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

x

点评

道不同不相为谋, 行业不同, 需求也不同, 比如设计院搞得花里胡哨, 我们做家具的, 其实无所谓, 能看到字就行.  发表于 2025-11-17 15:31

评分

参与人数 1明经币 +1 收起 理由
菜鸟初来乍到 + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2025-11-17 15:37:26 | 显示全部楼层
你有种再说一遍 发表于 2025-7-7 18:54
这个功能一直是一个伪需求,
遇到没有的字体,应该去服务器(或者本机某个文件夹)上面检索一次,
如果有就放 ...

画图目的是为了看, 不是为了好看,
发给其他人打开都是乱码,  只有你能看别人看不了.

每个人都自己定义个自定义字体, 那还怎么干活.
至于你说的"用字体来设计个家具", 这种行为应该受到谴责.

除了一些特殊符号这种还能理解, 为了好看把cad弄得这么麻烦, 好看应该去搞效果图去.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-7 19:32:28 | 显示全部楼层
kozmosovia 发表于 2025-7-7 19:22
都写代码了,而且还有7Z,还不如直接再Gitee上建一个公共项目,将7Z里面的SHX/TTF都保存在里面,代码里如果 ...

25年,在图纸上经常可以看到使用了钢筋【%%284】是635钢筋,网上没有找到,只能自己来解决。然后整合了所知道的资源,由于形字体tssdeng+hztxt目前看着比较完美,才提出这个功能,是为缺少字体的人员使用的。
程序先检测,看看字体库有没有字体,如果没有,就进行替换操作。
回复 支持 反对

使用道具 举报

发表于 2025-7-7 18:54:13 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2025-7-7 18:55 编辑

这个功能一直是一个伪需求,
遇到没有的字体,应该去服务器(或者本机某个文件夹)上面检索一次,
如果有就放字体文件夹载入,以此保证CAD环境的纯洁,实现过后删除.
如果还没有,你的替换成某个字体,是会造成形文件丢失的,因此就不应该替换.除非你确保别人图纸没有使用形文件,但是你都确保了,为什么不确保字体肯定有呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-7 19:01:38 | 显示全部楼层
你有种再说一遍 发表于 2025-7-7 18:54
这个功能一直是一个伪需求,
遇到没有的字体,应该去服务器(或者本机某个文件夹)上面检索一次,
如果有就放 ...

你测试一下,如果有“?”的字体,就上传来。
1、CAD形字体要使用我上传的。
2、设置按我的要求来。
回复 支持 反对

使用道具 举报

发表于 2025-7-7 19:03:48 | 显示全部楼层
437271963 发表于 2025-7-7 19:01
你测试一下,如果有“?”的字体,就上传来。
1、CAD形字体要使用我上传的。
2、设置按我的要求来。

形文件是大家都可以做的啊,怎么叫用你上传的,你到底听懂了没
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-7 19:08:10 | 显示全部楼层
你有种再说一遍 发表于 2025-7-7 19:03
形文件是大家都可以做的啊,怎么叫用你上传的,你到底听懂了没

这个hztxt.shx大字体,基本上可以显示所有中文;
常规字体tssdeng.shx基本上可以显示我知道的钢筋字体;
所以才提出缺少字体就自动使用这两个字体来替换。
回复 支持 反对

使用道具 举报

发表于 2025-7-7 19:10:30 | 显示全部楼层
437271963 发表于 2025-7-7 19:08
这个hztxt.shx大字体,基本上可以显示所有中文;
常规字体tssdeng.shx基本上可以显示我知道的钢筋字体;
...

你应该找到可以替换的映射关系,
而不是缺失就替换,
我给你举个极端例子,形文件是可以放家具的,
你要是替换了,连家具都没有了,嘻嘻
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-7-7 19:12:06 | 显示全部楼层
你有种再说一遍 发表于 2025-7-7 19:10
你应该找到可以替换的映射关系,
而不是缺失就替换,
我给你举个极端例子,形文件是可以放家具的,

所以,替换之前会检查,如果字体库里面有这个字体,就不会替换。
回复 支持 反对

使用道具 举报

发表于 2025-7-7 19:22:25 | 显示全部楼层
都写代码了,而且还有7Z,还不如直接再Gitee上建一个公共项目,将7Z里面的SHX/TTF都保存在里面,代码里如果本地没有找到就尝试网络自动下载到CAD的Font目录里。这样不需要分享7Z的地址,也不需要为了一个SHX就得去把整个7Z下载下来再手动解压找到SHX复制到本地。
回复 支持 反对

使用道具 举报

发表于 2025-7-7 20:28:15 | 显示全部楼层
试试好用不
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 06:29 , Processed in 0.163393 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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