明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5983|回复: 7

多行文字的格式修改

[复制链接]
发表于 2012-12-1 23:06 | 显示全部楼层 |阅读模式
   我在编辑图形其中有多行文字,不同的两个文件,发现出现了两种情况,因为我需要将多行文字转化成黑体字,于是我在格式的文字格式里面想改成黑体,这样图纸上所有的字都改成黑体,但是问题来了,一种可以批量式修改过来,达到了我的要求;另外一种没有变动,依旧如此的。我后来经过对比,发现文字格式里面有的勾选了大字体这个就无法变更我想要的,可以变更的却没有勾选。于是我取消了大字体,但还是没有改过来,请问这是怎么一回事呢?我又该如何办才可以彻底的搞定它呢?非常感激不尽,小弟只是一个新人!!
发表于 2012-12-3 08:45 | 显示全部楼层
多行文字,是可用带格式的,包括字体设置,所以,如果需要的话,它会自动插入字体设置控制代码;如果有了这样的字体控制代码,再设置字体样式或更改字体样式所使用的字体,对被代码控制了的那部分就不起作用了。一定要改,进编辑状态,全选了内容,重设字体或清除格式试试吧。
 楼主| 发表于 2012-12-8 19:34 | 显示全部楼层
请问如果是用二次开发AutoLISP或者VLISP,是否可以修改的了多行文字的格式呢?我查看了一下dxf的属性,发现如果在“文字格式”里面勾选了大字体,那么属性有一项是simhei,否则就是另外一种,我想用VLISP却找不到修改的命令,请指教一二可好?谢谢
发表于 2012-12-14 08:04 来自手机 | 显示全部楼层
那种情况,恐怕需要在文字内容中修改了,替换\\...; 之类的格式
发表于 2012-12-14 16:12 | 显示全部楼层
或者打散了 再更新style
发表于 2013-8-13 20:37 | 显示全部楼层
-----------------------------------------------------------------
;;;该函数使用格式(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)) "\\[LOP]")
          (setq Mtext (substr Mtext 3))
        )
        ((wcmatch (strcase (substr Mtext 1 2)) "\\[ACFHQTW]")
          (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                    宋体
发表于 2013-8-13 20:38 | 显示全部楼层
试试这个程序呢,把字体的代码替换掉应该就没什么大问题了。
发表于 2015-11-19 10:01 | 显示全部楼层
谢谢分享!!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 20:40 , Processed in 0.248838 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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