自定义字体更换函数
如下,是我从网上找来的字体更换程序,完全复制了两份,用来替换不同的字体样式。
有没有可能,把这个程序定义成一个"函数",再用这个函数来更换不同的样式。
例如:(函数 tssdeng.shx hztxt.shx),(函数 gbenor.shx gbcbig.shx)
还请高手帮忙修改,谢谢!
;;更换字体样式
(defun c:Standard_tssdeng ()
(graphscr);关闭文本窗口
(initget 7)
(setq a1 (tblnext "style" t));将指针移到第一个字体
(while a1
(setq a2 (cdr (assoc 2 a1)));取出字体名称
(setq a3 (entget (tblobjname "style" a2)));取出字体的数据串行
(setq a3 (subst (cons 3 "tssdeng.shx" ) (assoc 3 a3) a3));将字体字型改成新字型
(entmod a3);更新字体
(setq a3 (subst (cons 4 "hztxt.shx" ) (assoc 4 a3) a3));将字体字型改成新字型
(entmod a3)
(setq a1 (tblnext "style" ));找出下一个字体
);end while
(command "REGEN" )
(princ "\n-->所有字型变更为方正中文,消除乱码成功!" )
);end defun
(defun c:Standard_gbcbig ()
(graphscr)
(initget 7)
(setq a1 (tblnext "style" t));将指针移到第一个字体
(while a1
(setq a2 (cdr (assoc 2 a1)));取出字体名称
(setq a3 (entget (tblobjname "style" a2)));取出字体的数据串行
(setq a3 (subst (cons 3 "gbenor.shx" ) (assoc 3 a3) a3));将字体字型改成新字型
(entmod a3);更新字体
(setq a3 (subst (cons 4 "gbcbig.shx" ) (assoc 4 a3) a3));将字体字型改成新字型
(entmod a3)
(setq a1 (tblnext "style" ));找出下一个字体
);end while
(command "REGEN" )
(princ "\n-->所有字型变更为标准中文,消除乱码成功!" )
);end defun
(defun hzt (zt1 zt2 / a1 a2 a3)
;(graphscr);关闭文本窗口
;(initget 7)
(setq a1 (tblnext "style" t));将指针移到第一个字体
(while a1
(setq a2 (cdr (assoc 2 a1)));取出字体名称
(setq a3 (entget (tblobjname "style" a2)));取出字体的数据串行
(setq a3 (subst (cons 3 zt1 ) (assoc 3 a3) a3));将字体字型改成新字型
(entmod a3);更新字体
(setq a3 (subst (cons 4 zt2 ) (assoc 4 a3) a3));将字体字型改成新字型
(entmod a3)
(setq a1 (tblnext "style" ));找出下一个字体
);end while
(command "REGEN" )
(princ "\n-->所有字型变更为方正中文,消除乱码成功!"))
;测试
(defun c:tt5 ()
(hzt "txt.shx" "hztxt.shx")
) 本帖最后由 muwind 于 2020-12-20 11:18 编辑
bai2000 发表于 2020-12-20 09:50
图框的字体是黑体字,怎么改?
首先要区分CAD字体和字体样式,cad中字显示形式是以字体样式体现,同样的一个字体可以在不同的字体样式中,同一个字体样式也可以随意指定任何字体。修改cad里面的字体,实际上应该是修改字体样式里面对应的字体。
如果你图框里面的字采用的 “黑体”,并且对应一个叫“黑体样式”的样式。你用程序修改字体样式的时候可以给定一个判断:
如果 字体样式名 = 黑体样式
什么也不做
否则
修改 字体样式下面对应的字体
反之亦然
比如 上面那些代码中
(setq a2 (cdr (assoc 2 a1)))获取的就是字体样式名
(if (/= a2 “黑体样式”)
(progn
替换字体代码)
)
start4444 发表于 2019-11-16 14:27
(defun hzt (zt1 zt2 / a1 a2 a3)
;(graphscr);关闭文本窗口
;(initget 7)
(entmod a3);更新字体
(setq a3 (subst (cons 4 zt2 ) (assoc 4 a3) a3));将字体字型改成新字型
(entmod a3)
第一个entmod没意义,可以取消 start4444 发表于 2019-11-16 14:27
(defun hzt (zt1 zt2 / a1 a2 a3)
;(graphscr);关闭文本窗口
;(initget 7)
万分感谢! 要是能指定仅更换某些字体就更好了 wyl219 发表于 2019-11-18 18:39
(entmod a3);更新字体
(setq a3 (subst (cons 4 zt2 ) (assoc 4 a3) a3)); ...
怎么改才能不更新图框(图块)中的字体呢? bai2000 发表于 2020-12-19 22:16
怎么改才能不更新图框(图块)中的字体呢?
图框的字体单独指定为某个样式,替换字体时候忽略掉这个字体样式即可 muwind 发表于 2020-12-19 22:52
图框的字体单独指定为某个样式,替换字体时候忽略掉这个字体样式即可
图框的字体是黑体字,怎么改?
页:
[1]
2