明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1258|回复: 6

这是以前大佬替换字体源码,低版本CAD会替换到@仿宋,字体横着倒着,能替换正仿宋吗

[复制链接]
发表于 2021-8-11 09:58:14 | 显示全部楼层 |阅读模式
以下源码:
(defun c:XXZ (/ elist nm en cn enl)
(setq elist (tblnext "STYLE" T))
(while (/= elist nil)
(setq nm (cdr (assoc 2 elist))
en (cdr (assoc 3 elist))
cn (cdr (assoc 4 elist))
enl (strlen en)
)
(if (and
(/= en nil)
(= cn nil)
(= (findfile en) nil)
(= (strcase (substr en (- enl 2))) "ttf")
)
(command "_style" nm "simfang.ttf" "0.0" "0.8" "" "" "" "")
)
(if (and
(/= cn nil)
(= (findfile cn) nil)
)
(command "_style" nm "simfang.ttf" "0.0" "0.8" "" "" "" "")
)
(setq elist (tblnext "STYLE"))
)
) [/code]

此源码低版本CAD2012以下替换字体仿宋,会替换到@仿宋,会导致字体横着倒着,有没有办法替换到正的仿宋
发表于 2021-8-11 17:12:39 | 显示全部楼层
;-----------------文字替代(解决文字乱码用)(一级)----------------------
(defun sl-nx (/ elist nm en cn oldamd oldsty str)
        (setq oldamd (getvar "cmdecho"))
        (setq oldsty (getvar "TEXTSTYLE"))
        (setvar "cmdecho" 0) ;;命令显示关闭
        (setq str (getvar "Locale"))
        (if (or (= str "ZH") (= str "ZHH") (= str "CHS") (= str "ENU")) ;;如果CAD是简体中文版、英文版
                (progn
                        (setq elist (tblnext "STYLE" T))
                        (while (/= elist nil)
                                (setq nm (dxf1 elist 2)
                                        en (dxf1 elist 3)
                                        cn (dxf1 elist 4)
                                )
                                (if (or (/= (substr nm 1 1) "$") (= (vl-string-search "_" nm) nil) (= (vl-string-search "|" nm) nil));;不是参照中样式
                                        (progn
                                                (if (and (/= "" en) (= "" cn) (= (findfile en) nil))
                                                        (command "_style" nm "sltxt" "0.0" "0.7" "" "" "" "")
                                                )
                                                (if (and (/= "" cn) (= (findfile cn) nil))
                                                        (command "_style" nm "sltxt,slhztxt" "0.0" "0.7" "" "" "" "")
                                                )
                                        )
                                )
                                (setq elist (tblnext "STYLE"))
                        )
                )
        )
        (command "_style" "xz" "宋体TTf,宋体TTfbig" 0 0.7 0 "n" "n" "n")  
        (command "_style" "fan" "sltxt,chineset" 0 0.7 0 "n" "n" "n")
        (setvar "TEXTSTYLE" oldsty)
        (setvar "cmdecho" oldamd)
        (princ)
)
 楼主| 发表于 2021-8-12 09:20:21 | 显示全部楼层
尘缘一生 发表于 2021-8-11 17:12
;-----------------文字替代(解决文字乱码用)(一级)----------------------
(defun sl-nx (/ elist nm e ...

没有命令吗?
发表于 2021-8-12 14:40:06 | 显示全部楼层
由于系统不同,AutoCAD版本不同,使用shx/ttf/ttc,ttf安装到系统层级还是用户层级...
会有很多种情况,实际上判断条件和处理都是是比较复杂的,上面这些代码并不能很好的解决问题。
 楼主| 发表于 2021-8-12 15:34:53 | 显示全部楼层
e2002 发表于 2021-8-12 14:40
由于系统不同,AutoCAD版本不同,使用shx/ttf/ttc,ttf安装到系统层级还是用户层级...
会有很多种情况,实 ...

那就是改不了了哦

点评

可以程序处理,我的意思是上面这些给出的代码过于简单,很多情况没有考虑到,还需要改进。  发表于 2021-8-13 10:04
 楼主| 发表于 2021-8-13 11:22:20 | 显示全部楼层
yoyrtweq 发表于 2021-8-12 15:34
那就是改不了了哦

明白 了 谢谢你的回答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 10:01 , Processed in 0.177341 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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