求去除所有多行文字颜色的程序(含块内多行文字)
要求: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
)
---------------------------------------------------------------------------------------------------------
有两个程序,不确定能不能满足你的的要求,可以试一下。是针对所有对象的,不仅仅针对文字
第一个,将选中的对象的真彩色改索引色
第二个,指定一个索引色,改成另外一个索引色。
第一个:真彩色改索引色。
第二个:指定一个颜色改成另一个颜色,看这个贴子。命令是CCT.
http://bbs.mjtd.com/thread-182904-1-1.html
楼主可能没明白我的意思,我只想更改多行文字的颜色,因为只有多行文字不能像其它普通对像那样去改颜色,只能去判断对象或块里的对象(0组码为mtext类型的对象)为mtext类型时,提取文字内容,删除里面类似“\\c11336693”表示颜色的字段,才能达到清除多行文字颜色的目的。
我就是不知道怎么写lsp,把所有属性为“mtext”的多行文字图元提取出来。 lee_mac的 BFindV2-0.lsp 可以批量查找图纸的所有文本并替换,包括
单行文字
多行文字
块属性
块定义
标注文字
表格中的文字
这个程序中应该可以找到写法,怎么把全图的文字,包括镶套块里的文字找出来并修改,这个程序本身我们无法用。
“鱼与熊掌”改过一个版本,可以用,但无法做到全文匹配替换。 这要上传CAD文档,看你有哪些需要修改的。
页:
[1]