明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1290|回复: 8

【K:StyleNonBoldSong】非黑宋规整

[复制链接]
发表于 2022-11-9 11:40:01 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2023-6-10 07:09 编辑

最早是根据文字样式名称修改,见此贴:http://bbs.mjtd.com/thread-186303-1-1.html

现在是获取文字样式的字体名称,如果不是黑体宋体或形字体(ltypeshp.shx),就规整为设置的标准字体。

  1. ;如果不成功则抓取错误,如果成功就执行程序
  2. (defun K:CatchApply (fun args / result)
  3.   (if
  4.     (not
  5.       (vl-catch-all-error-p
  6.         (setq result (vl-catch-all-apply
  7.                       (if (= 'SYM (type fun)) fun (function fun))
  8.                       args
  9.                     )
  10.         )
  11.       )
  12.     )
  13.     result
  14.   )
  15. )

函数部分:
  1. ;(字体)非黑宋规整为标准字体
  2. (defun K:StyleNonBoldSong (FNam BFNam Width / TmpDoc obj FindFlag TypeFace Bold Italic Charset PitchandFamily)
  3.   (setq TmpDoc (vla-get-activedocument (vlax-get-acad-object)))
  4.   (vlax-for obj (vla-get-textstyles TmpDoc)
  5.       (if
  6.         (and
  7.             (not (vl-string-search "|" (vla-get-Name obj)))
  8.             (not (vl-string-search "$" (vla-get-Name obj)))
  9.         );排除外部参照的字体样式
  10.         (progn
  11.           (setq FindFlag Nil)
  12.           (K:CatchApply 'vla-Getfont (list obj 'TypeFace 'Bold 'Italic 'Charset 'PitchandFamily))
  13.           (if (eq TypeFace "")
  14.               (if (/= (vla-get-fontfile obj)  "ltypeshp.shx");线型形文件
  15.                   (setq FindFlag T)
  16.               )
  17.               (if (not (wcmatch (strcase TypeFace) "**宋**,**FANGSONG**,**黑体**,**SIMHEI**"))
  18.                 (setq FindFlag T)
  19.               )
  20.           )
  21.           (if FindFlag
  22.               (progn
  23.                 (K:CatchApply 'vla-setfont (list obj FNam "false" "false" 1 0));TTF
  24.                 (K:CatchApply 'vla-put-fontfile (list obj FNam));SHX
  25.                 (K:CatchApply 'vla-put-bigfontfile (list obj BFNam));大字体
  26.                 (K:CatchApply 'vla-put-width (list obj Width));宽度因子
  27.               )
  28.           )
  29.         )
  30.       )
  31.   )
  32.   (princ)
  33. )


用法:
  1. (K:StyleNonBoldSong "仿宋_GB2312" nil 0.8);TTF
  2. (K:StyleNonBoldSong "txt" nil 0.8);SHX:不使用大字体
  3. (K:StyleNonBoldSong "gbenor" "gbcbig" 0.8);SHX:使用大字体




其它:
;获取TTF字体名称
  1. (vla-Getfont obj 'TypeFace 'Bold 'Italic 'Charset 'PitchandFamily)
  2. (princ TypeFace)
复制代码


;打印所有字体样式名称
  1. (defun C:TT ()
  2.     (vlax-for TS (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object)))
  3.         (princ (strcat "\n" (vla-get-Name TS)))
  4.     )(princ)
  5. )

;打印非外部参照的字体样式名称
  1. (defun C:TT ()
  2.     (vlax-for TS (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object)))
  3.         (if (not (vl-string-search "|" (vla-get-Name TS)))
  4.              (princ (strcat "\n" (vla-get-Name TS)))
  5.         )
  6.     )(princ)
  7. )


;打印非外部参照的字体样式所使用的字体名称
  1. (vlax-for TS (vla-get-textstyles (vla-get-activedocument (vlax-get-acad-object)))
  2.     (if (not (vl-string-search "|" (vla-get-Name TS)));排除外部参照
  3.           (progn
  4.           (setq FontNam (vla-get-fontfile (vlax-ename->vla-object (tblobjname "style" (vla-get-Name TS)))))
  5.           (princ (strcat "\n" FontNam))
  6.         )
  7.     )
  8. )(princ)



本帖子中包含更多资源

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

x
发表于 2022-11-9 19:05:06 | 显示全部楼层
谢谢楼主分享!
发表于 2022-11-9 20:56:31 | 显示全部楼层

谢谢楼主分享!
发表于 2022-11-11 10:08:26 | 显示全部楼层
谢谢楼主分享!
发表于 2022-11-18 20:10:36 | 显示全部楼层
好像哪里有点问题?不能过滤黑体(包括:黑体.ttf   simhei.ttf)
 楼主| 发表于 2022-11-18 23:49:38 | 显示全部楼层
bai2000 发表于 2022-11-18 20:10
好像哪里有点问题?不能过滤黑体(包括:黑体.ttf   simhei.ttf)

我没问题唉,麻烦提供处理失败的文件看看哈
发表于 2023-4-18 07:33:02 | 显示全部楼层
谢谢楼主分享!
发表于 2023-6-9 14:33:55 | 显示全部楼层
提示参数过多誒
 楼主| 发表于 2023-6-10 07:09:39 | 显示全部楼层
jackAqwq 发表于 2023-6-9 14:33
提示参数过多誒

嗯嗯,下面用法忘记改了,再看一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:32 , Processed in 0.157164 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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