多行文字的格式修改
我在编辑图形其中有多行文字,不同的两个文件,发现出现了两种情况,因为我需要将多行文字转化成黑体字,于是我在格式的文字格式里面想改成黑体,这样图纸上所有的字都改成黑体,但是问题来了,一种可以批量式修改过来,达到了我的要求;另外一种没有变动,依旧如此的。我后来经过对比,发现文字格式里面有的勾选了大字体这个就无法变更我想要的,可以变更的却没有勾选。于是我取消了大字体,但还是没有改过来,请问这是怎么一回事呢?我又该如何办才可以彻底的搞定它呢?非常感激不尽,小弟只是一个新人!! 多行文字,是可用带格式的,包括字体设置,所以,如果需要的话,它会自动插入字体设置控制代码;如果有了这样的字体控制代码,再设置字体样式或更改字体样式所使用的字体,对被代码控制了的那部分就不起作用了。一定要改,进编辑状态,全选了内容,重设字体或清除格式试试吧。 请问如果是用二次开发AutoLISP或者VLISP,是否可以修改的了多行文字的格式呢?我查看了一下dxf的属性,发现如果在“文字格式”里面勾选了大字体,那么属性有一项是simhei,否则就是另外一种,我想用VLISP却找不到修改的命令,请指教一二可好?谢谢 那种情况,恐怕需要在文字内容中修改了,替换\\...; 之类的格式 或者打散了 再更新style -----------------------------------------------------------------;;;该函数使用格式(funformat 图元名 任意非;值),返回多行文字的内容
-----------------------------------------------------------------
(defun UnFormat (Mtext KeepLF / Text Str)
(vl-load-com)
(cond
((= (type Mtext) 'VLA-Object))
((= (type Mtext) 'ENAME)
(setq Mtext (vlax-ename->vla-object Mtext))
)
(1 (setq Mtext nil))
)
(and
Mtext
(= (vlax-get Mtext 'ObjectName) "AcDbMText")
(setq Mtext (vlax-get Mtext 'TextString))
(setq Text "")
(while (/= Mtext "")
(cond
((wcmatch (strcase (setq Str (substr Mtext 1 2))) "\\[\\{}`~]")
(setq Mtext (substr Mtext 3)
Text (strcat Text Str)
)
)
((wcmatch (substr Mtext 1 1) "[{}]")
(setq Mtext (substr Mtext 2))
)
((and KeepLF (wcmatch (strcase (substr Mtext 1 2)) "\\P"))
(setq Mtext (substr Mtext 3)
Text(strcat Text "\\P")
)
)
((wcmatch (strcase (substr Mtext 1 2)) "\\")
(setq Mtext (substr Mtext 3))
)
((wcmatch (strcase (substr Mtext 1 2)) "\\")
(setq Mtext (substr Mtext (+ 2 (vl-string-search ";" Mtext))))
)
((wcmatch (strcase (substr Mtext 1 2)) "\\S")
(setq Str (substr Mtext 3 (- (vl-string-search ";" Mtext) 2))
Text(strcat Text (vl-string-translate "#^/" " " Str))
Mtext (substr Mtext (+ 4 (strlen Str)))
)
)
((> (ascii Mtext) 127)
(setq Text (strcat Text (substr Mtext 1 2))
Mtext (substr Mtext 3)
)
)
(1
(setq Text (strcat Text (substr Mtext 1 1))
Mtext (substr Mtext 2)
)
)
)
)
)
Text
)
;;;以上自定义函数 unformat引自明经通道之咬文嚼字等一系列高人作品
(defun c:gzt( / n ss e el)
(setq ss (ssget))
(setq n 0)
(repeat (sslength ss)
(setq e (ssname ss n))
(setq el (entget e))
(if (= "MTEXT" (cdr (assoc 0 el)))
(progn
(setq el (subst (cons 1 (strcat "{\\fSTZhongsong|b0|i0|c134|p2;" (unformat e keepfl) "}")) (assoc 1 el) el)) ;;;此处例举改为华文中宋
(entmod el)
)
)
(setq n (+ n 1))
)
(princ)
)
;;;常用字体列表,其余可自己查询
;;;fSTZhongsong|b0|i0|c134|p2 华文中宋
;;;fSimHei|b0|i0|c134|p2 黑体
;;;fLiSu|b0|i0|c134|p49 隶书
;;;fFangSong_GB2312|b0|i0|c134|p49 仿宋2312
;;;fKaiTi_GB2312|b0|i0|c134|p49 楷体2312
;;;fNSimSun|b0|i0|c134|p49 新宋体
;;;fSimSun|b0|i0|c134|p2 宋体 试试这个程序呢,把字体的代码替换掉应该就没什么大问题了。 谢谢分享!!!!!!
页:
[1]