wgm107 发表于 2012-12-1 23:06:23

多行文字的格式修改

   我在编辑图形其中有多行文字,不同的两个文件,发现出现了两种情况,因为我需要将多行文字转化成黑体字,于是我在格式的文字格式里面想改成黑体,这样图纸上所有的字都改成黑体,但是问题来了,一种可以批量式修改过来,达到了我的要求;另外一种没有变动,依旧如此的。我后来经过对比,发现文字格式里面有的勾选了大字体这个就无法变更我想要的,可以变更的却没有勾选。于是我取消了大字体,但还是没有改过来,请问这是怎么一回事呢?我又该如何办才可以彻底的搞定它呢?非常感激不尽,小弟只是一个新人!!

dunkel 发表于 2012-12-3 08:45:11

多行文字,是可用带格式的,包括字体设置,所以,如果需要的话,它会自动插入字体设置控制代码;如果有了这样的字体控制代码,再设置字体样式或更改字体样式所使用的字体,对被代码控制了的那部分就不起作用了。一定要改,进编辑状态,全选了内容,重设字体或清除格式试试吧。

wgm107 发表于 2012-12-8 19:34:08

请问如果是用二次开发AutoLISP或者VLISP,是否可以修改的了多行文字的格式呢?我查看了一下dxf的属性,发现如果在“文字格式”里面勾选了大字体,那么属性有一项是simhei,否则就是另外一种,我想用VLISP却找不到修改的命令,请指教一二可好?谢谢

xazhji 发表于 2012-12-14 08:04:36

那种情况,恐怕需要在文字内容中修改了,替换\\...; 之类的格式

panzhongw 发表于 2012-12-14 16:12:19

或者打散了 再更新style

newbuser 发表于 2013-8-13 20:37:31

-----------------------------------------------------------------
;;;该函数使用格式(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                  宋体

newbuser 发表于 2013-8-13 20:38:23

试试这个程序呢,把字体的代码替换掉应该就没什么大问题了。

czcxxx 发表于 2015-11-19 10:01:45

谢谢分享!!!!!!
页: [1]
查看完整版本: 多行文字的格式修改