明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2811|回复: 7

[讨论] 求修正字体统一程序

[复制链接]
发表于 2017-11-14 10:52:35 | 显示全部楼层 |阅读模式
;;; ------------------------------------------------------------------
;;;  字体统一批处理工具
;;;
;;;  原创 by 超越极至 || 修改 by wxh5330 QQ:102963688 10/07/21
;;;  
;;; ------------------------------------------------------------------


;(alert
  "本程序自动将图中所有文字样式的组合改为:

      【Tssdeng.shx + Hztxt.shx】

  采用以下字体的样式除外:

     Simplex.shx、Complex.shx、宋体
       黑体、楷体、新宋体、仿宋体

  启动命令:tszt"
;)

(defun c:tszt ()
  (vl-load-com)
(vl-load-all "Register")
(UseLimit)
  (vlax-for for-item (vla-get-textstyles
                       (vla-get-activedocument
                         (vlax-get-acad-object)
                       )
                     )
    (if        (and
          (not (wcmatch        (vla-get-fontfile for-item) ;simplex.shx
                        "SIMPLEX.shx*"
               )
          )
          (not (wcmatch        (vla-get-fontfile for-item) ;complex.shx
                        "COMPLEX.shx*"
               )
          )

          (not (wcmatch        (vla-get-fontfile for-item) ;宋体
                        "SONGTI.shx*"
               )
          )
          (not (wcmatch        (vla-get-fontfile for-item) ;黑体
                        "SIMHEI.shx*"
               )
          )

          (not (wcmatch        (vla-get-fontfile for-item) ;楷体
                        "Arial.shx*"
               )
          )
          (not (wcmatch        (vla-get-fontfile for-item) ;新宋体
                        "NSimSun.shx*"
               )
          )
          (not (wcmatch        (vla-get-fontfile for-item) ;仿宋体
                        "SIMFANG.shx*"
               )
          )


        )
      (progn
        (vla-put-fontfile for-item "tssdeng.shx")

        (vla-put-bigfontfile for-item "hztxt.shx")

      )


    )
  )
  (vla-regen (vla-get-activedocument (vlax-get-acad-object))
             1
  )
  (prin1)
  (prompt
    "\n*** 文字样式已统一修改为【Tssdeng.shx + Hztxt.shx】***\n"
  )

(repeat 10 (command "PURGE" "a" "" "n"))

)


;;;  超越极至 写于2009.10.19.10.21
此程序的问题是,运行后,所有字体都变成了探索者字体,而不能排除黑体,宋体那些,不知道该如果调整程序?请各位高手帮忙,谢谢

发表于 2017-11-14 11:28:13 | 显示全部楼层
有可能是大小写的问题,判断之前先转换成大写试试,注意后面的字体名称也要全大写
比如
(wcmatch (strcase (vla-get-fontfile for-item)) "SIMPLEX.SHX*")
 楼主| 发表于 2017-11-14 11:46:55 | 显示全部楼层
lostbalance 发表于 2017-11-14 11:28
有可能是大小写的问题,判断之前先转换成大写试试,注意后面的字体名称也要全大写
比如
(wcmatch (strcas ...

不是这个的问题
发表于 2017-11-15 09:20:02 | 显示全部楼层
按你的描述的,程序能运行修改,只不过不能排除,应该是if的判断逻辑出错了。我这边试了下,vla-get-fontfile返回的是全小写的字符串,你用带大写的字符串去wcmatch肯定是行不通的,大小写修正下应该没什么问题了。
另外,vla-get-fontfile返回的已经是完整字体名了,个人觉得没必要再用通配符*号了,万一碰上那种特殊名字的字体名还容易出错。
 楼主| 发表于 2017-11-15 09:39:07 | 显示全部楼层
lostbalance 发表于 2017-11-15 09:20
按你的描述的,程序能运行修改,只不过不能排除,应该是if的判断逻辑出错了。我这边试了下,vla-get-fontfi ...

是的,不能排除,全部改成大写或者小写,都不行,还是不能排除
发表于 2017-11-16 08:58:17 | 显示全部楼层
hdlyt11 发表于 2017-11-15 09:39
是的,不能排除,全部改成大写或者小写,都不行,还是不能排除

这个是我测试的
========================
(vlax-for for-item (vla-get-TextStyles (vla-get-ActiveDocument (vlax-get-acad-object)))
    (if (and
            (not (wcmatch (setq a (vla-get-fontfile for-item)) "ldie.shx"))
            (not (wcmatch (setq a (vla-get-fontfile for-item)) "romans.shx"))
            (not (wcmatch (setq a (vla-get-fontfile for-item)) "complex.shx"))
        )
        (progn
            (princ "\na=")
            (princ a)
            (princ "\nok")
        )
        (progn
            (princ "\na=")
            (princ a)
            (princ "\nfalse")
        )
    )
)
返回如下:
a=ldie.shx
false
a=romans.shx
false
a=romand.shx
ok
========================
看着没问题了啊
发表于 2023-3-28 17:11:04 | 显示全部楼层
顶个贴,黑体、宋体在C:\Windows\Fonts文件夹。http://bbs.mjtd.com/forum.php?mod=attachment&aid=MTI1OTM0fDFmNTIxNjVmY2M4MjMxN2Y5NWQ5ZGRkZGU3OWI2YTMzfDE3MzE3NTQ1NDM%3D&request=yes&_f=.png是否和这个有关系?

本帖子中包含更多资源

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

x
发表于 2023-5-30 11:34:00 | 显示全部楼层
Mark一下,我也找一个除黑体以外其他字体一键替换为某个字体的代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 18:55 , Processed in 0.197830 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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