sctw 发表于 2021-7-31 21:41:30

求去除所有多行文字颜色的程序(含块内多行文字)

要求:
1、搜寻出文件中所有多行文字、块中多行文字、嵌套块中多行文字真彩色变为对应的索引色;
2、以上多行文字如是255或255,255,255这两种颜色,变为7号色(或随层)。

我找到一个只能把选中的多行文字消除颜色的程序附上
----------------------------------------------------------------------------------------------
;;mtx-多行文字样式清除
(defun C:mtx(/ ss i ent elist )
      (if (setq ss(ssget '((0 . "TEXT,MTEXT"))))
                (progn
                        (setq i 0)
                        (repeat (sslength ss)
                              (setq ent (ssname ss i))
                              (setq elist (entget ent))
                              (entmod
                                        (subst
                                                (cons 1
                                                      (mtext2text (cdr(assoc 1 elist)))
                                                )
                                                (assoc 1 elist)
                                                elist                                       
                                        )      
                              )
                              (setq i (1+ i))                        
                        )
                )
      )
)
;提取多行文字,去除无用格式符号--来自明经
(defun mtext2text(MTextString / regex s)
      (setq regex(vlax-create-object "Vbscript.RegExp")) ;引用正则表达式控件
      (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
      (vlax-put-property regex "Global" 1) ;匹配方式,全文字匹配
      (setq s MTextString)

       ;删除字体颜色格式
      (vlax-put-property regex "Pattern" "(\\\\c)(.[^;]*);")
      (setq s(vlax-invoke-methodregex "Replace" s ""))

      (vlax-release-object regex)
      s
)

---------------------------------------------------------------------------------------------------------

panliang9 发表于 2021-8-1 19:37:21

有两个程序,不确定能不能满足你的的要求,可以试一下。是针对所有对象的,不仅仅针对文字
第一个,将选中的对象的真彩色改索引色
第二个,指定一个索引色,改成另外一个索引色。


第一个:真彩色改索引色。
第二个:指定一个颜色改成另一个颜色,看这个贴子。命令是CCT.
http://bbs.mjtd.com/thread-182904-1-1.html

sctw 发表于 2021-8-1 22:48:49

楼主可能没明白我的意思,我只想更改多行文字的颜色,因为只有多行文字不能像其它普通对像那样去改颜色,只能去判断对象或块里的对象(0组码为mtext类型的对象)为mtext类型时,提取文字内容,删除里面类似“\\c11336693”表示颜色的字段,才能达到清除多行文字颜色的目的。

我就是不知道怎么写lsp,把所有属性为“mtext”的多行文字图元提取出来。

panliang9 发表于 2021-8-2 11:22:10

lee_mac的 BFindV2-0.lsp 可以批量查找图纸的所有文本并替换,包括
单行文字
多行文字
块属性
块定义
标注文字
表格中的文字

这个程序中应该可以找到写法,怎么把全图的文字,包括镶套块里的文字找出来并修改,这个程序本身我们无法用。
“鱼与熊掌”改过一个版本,可以用,但无法做到全文匹配替换。

xvjiex 发表于 2021-8-3 09:20:27

这要上传CAD文档,看你有哪些需要修改的。
页: [1]
查看完整版本: 求去除所有多行文字颜色的程序(含块内多行文字)