找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4601|回复: 20

[源码] 干掉选择字体对话框,开图自动替换字体(2021.3.2增加c#版本)

[复制链接]

已领礼包: 28个

财富等级: 恭喜发财

发表于 2021-2-24 20:23:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
本帖最后由 print1985 于 2022-5-17 10:24 编辑


对不起各位,因最近发现本人发的个别插件、源码被人挂网上贩卖,虽然没啥技术含量,但是也是花了时间做的。为了不被后面的二手贩子继续利用,忍心下架所有成品插件,敬请理解,确实需要本插件的朋友可以给我留言。
请版主把本帖改为普通帖子,对不起了


开图不停的替换字体,囧 囧 囧  受够了,干掉这个讨厌的对话框,自动替换未知字体
干掉字体选择对话框.png

1、Lisp文件这里要修改为你想要的字体。
修改为你自己的字体.png

2、CAD菜单-工具-选项-系统-隐藏消息设置
隐藏消息设置.png

3、勾选如下图
勾选缺少.png

4、打开缺少字体的图纸,如图勾选“始终执行……”,后点击“忽略缺少的……”
勾选始终.png

搞定,以后开图不会出现选择字体对话框了,lisp程序会在开图后会自动替换未知字体。

主要源码来自http://bbs.mjtd.com/forum.php?mod=viewthread&tid=181963&extra=&highlight=%D7%D6%CC%E5%2B%CC%E6%BB%BB&page=1

我只作了简单修改,感谢gaics、sctw、wudechao等各位大侠

  1. ;手动替换字体,命令tzt
  2. (defun c:tzt() (GL:changefont))

  3. ;替换字体
  4. (defun GL:changefont ( / *error* a b c d date1 e err font_chn font_eng font_lst_chn font_lst_eng font_lst_tru font_tru textstyles x)
  5. (setq font_eng "tssdeng.shx"  ;tssdeng.shx英文字体,自行修改
  6.       font_chn "tssdchn.shx"  ;tssdchn.shx中文字体,自行修改
  7.       font_tru "宋体"         ;windows系统字体,自行修改
  8.       font_lst_eng '()
  9.       font_lst_chn '()
  10.       font_lst_tru '()
  11. )

  12. (defun *error* (msg) ;错误处理
  13.   (setvar "regenmode" 1)
  14.   (command "undo" "e")
  15.   (setvar "cmdecho" 1)
  16.   (princ msg)
  17. )

  18. (vl-load-com)
  19. (setvar "cmdecho" 0)
  20. (command "undo" "be")
  21. (setvar "regenmode" 0)
  22. (setq date1 (getvar "millisecs"))
  23. (setq textstyles (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object))))
  24. (vlax-for x textstyles (vla-getfont x 'a 'b 'c 'd 'e) (if (= a "")
  25.                                                         (progn
  26.                                                          (if (and
  27.                                                               (not (findfile (vla-get-fontfile x)))
  28.                                                               (not (findfile (strcat (vla-get-fontfile x) ".shx")))
  29.                                                              )
  30.                                                          (progn
  31.                                                           (vla-put-fontfile x font_eng)
  32.                                                           (setq font_lst_eng (cons (vla-get-name x) font_lst_eng))
  33.                                                          )
  34.                                                          )
  35.                                                          (if (and
  36.                                                               (/= (vla-get-bigfontfile x) "")
  37.                                                               (not (findfile (vla-get-bigfontfile x)))
  38.                                                               (not (findfile (strcat (vla-get-bigfontfile x) ".shx")))
  39.                                                              )
  40.                                                          (progn
  41.                                                           (vla-put-bigfontfile x font_chn)
  42.                                                           (setq font_lst_chn (cons (vla-get-name x) font_lst_chn))
  43.                                                          )
  44.                                                          )
  45.                                                         )
  46.                                                         (progn
  47.                                                          (setq err (vl-catch-all-apply 'vla-setfont (list x a b c d e)))
  48.                                                          (if (vl-catch-all-error-p err)
  49.                                                          (progn
  50.                                                           (vla-setfont x font_tru b c d e)
  51.                                                           (setq font_lst_tru (cons (vla-get-name x) font_lst_tru))
  52.                                                          )
  53.                                                          )
  54.                                                         )
  55.                                                        )
  56. )
  57. (setvar "regenmode" 1)
  58. (command "regen")
  59. (princ "\n")
  60. (if (or font_lst_eng font_lst_chn font_lst_tru)
  61. (progn
  62.   (princ (strcat "字体替换完成,共耗时" (rtos (/ (- (getvar "millisecs") date1)1000.000) 2 3) "秒。  "))
  63.   (if font_lst_eng (progn (princ "文字样式:")(princ font_lst_eng)(princ (strcat "的英文字体已替换为" font_eng "。  "))))
  64.   (if font_lst_chn (progn (princ "文字样式:")(princ font_lst_chn)(princ (strcat "的中文字体已替换为" font_chn "。  "))))
  65.   (if font_lst_tru (progn (princ "文字样式:")(princ font_lst_tru)(princ (strcat "的字体已替换为" font_tru "。  "))))
  66. )
  67. (princ "\n所有字体均存在,未替换")
  68. )
  69. (command "undo" "e")
  70. (setvar "cmdecho" 1)
  71. (princ)
  72. )

  73. ;开图自动替换字体
  74. (GL:changefont)



----------------------------------c#版本-------------------------------------------
2021.3.2增加c#版本

源码来自 http://blog.sina.com.cn/s/blog_69e8fdf00100nc58.html  版权归原作者所有,感谢!
本人修改了几处代码并重新编译以适应高版本CAD

使用方法:
1、将DLL文件设为自动加载(不会设的设置的可以参看我发的lisp+c#混合编程帖子的lisp代码)。
2、开图使用Hztxt.shx自动替换未知字体,所以你的CAD至少得有Hztxt.shx字体。
3、DLL可以单独使用,也可以和上面的lisp代码组合使用,当然如果要用DLL就不能干掉字体替换对话框了(干掉C#程序就没法自动选择字体了),不干掉字体选择对话框lisp也是可以自动替换的。

原理:开图出现字体选择对话框时,自动选择Hztxt.shx字体替换未知字体(可以理解为模拟按键,代替手动选择)

C#版自动替换字体.gif

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 3个

财富等级: 恭喜发财

发表于 2021-2-25 08:25:46 | 显示全部楼层
学习了                  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 756个

财富等级: 财运亨通

发表于 2021-2-25 08:53:42 | 显示全部楼层
谢谢分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 5601个

财富等级: 富甲天下

发表于 2021-2-25 10:16:57 | 显示全部楼层
感谢楼主提供的程序!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

发表于 2021-2-25 13:40:08 | 显示全部楼层
感谢楼主分享学习!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

发表于 2021-2-26 08:34:32 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2021-2-27 12:01:14 | 显示全部楼层
6666666666,感谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-3-2 09:00:50 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 756个

财富等级: 财运亨通

发表于 2021-3-2 09:12:42 | 显示全部楼层
试试这个,只要电脑中安装了对应的ttf后缀格式字体
处理字体被替换的问题.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2021-3-2 16:10:05 | 显示全部楼层
2021.3.2增加c#版本
不喜欢的lisp版本的可以试试C#版
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-3-3 19:06:21 | 显示全部楼层
谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2021-3-4 19:08:50 | 显示全部楼层
给yanchao316 win10测试用 2个版本 看下有能用的没得
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:ChangeFonts(CAD2012).rar 
下载次数:60  文件大小:3.79 KB 
下载权限: 不限 以上  [免费赚D豆]


请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:ChangeFonts CAD2012版本2.rar 
下载次数:28  文件大小:3.73 KB 
下载权限: 不限 以上  [免费赚D豆]


点评

多谢!测试了,ChangeFonts(CAD2012)已经能在win10下完美运行了。先前的2007~2012又试了,也能运行了。前两天不知道啥原因用不了。  详情 回复 发表于 2021-3-5 21:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 87个

财富等级: 招财进宝

发表于 2021-3-5 21:33:11 | 显示全部楼层
print1985 发表于 2021-3-4 19:08
给yanchao316 win10测试用 2个版本 看下有能用的没得

多谢!测试了,ChangeFonts(CAD2012)已经能在win10下完美运行了。先前的2007~2012又试了,也能运行了。前两天不知道啥原因用不了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2021-3-22 16:12:25 | 显示全部楼层
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command-s)

点评

CAD高版本的问题,替换一下这段 (defun *error* (msg) ;错误处理 (setvar "regenmode" 1) (command-s "undo" "e");高版本用command-s (setvar "cmdecho" 1) (princ msg) )  详情 回复 发表于 2021-3-22 20:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2021-3-22 20:50:39 | 显示全部楼层
lijoicq1 发表于 2021-3-22 16:12
调用(*push-error-using-command*)前无法从 *error* 调用(command)。
建议将(command)调用转换为(command- ...

CAD高版本的问题,替换一下这段

(defun *error* (msg) ;错误处理
  (setvar "regenmode" 1)
  (command-s "undo" "e");高版本用command-s
  (setvar "cmdecho" 1)
  (princ msg)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 06:32 , Processed in 0.221355 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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