明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 583|回复: 4

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

[复制链接]
发表于 2021-7-31 21:41 | 显示全部楼层 |阅读模式
5明经币
要求:
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-method  regex "Replace" s ""))

        (vlax-release-object regex)
        s
)

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

发表于 2021-8-1 19:37 | 显示全部楼层
有两个程序,不确定能不能满足你的的要求,可以试一下。是针对所有对象的,不仅仅针对文字
第一个,将选中的对象的真彩色改索引色
第二个,指定一个索引色,改成另外一个索引色。


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

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

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

使用道具 举报

发表于 2021-8-2 11:22 | 显示全部楼层
lee_mac的 BFindV2-0.lsp 可以批量查找图纸的所有文本并替换,包括
单行文字
多行文字
块属性
块定义
标注文字
表格中的文字

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

使用道具 举报

发表于 2021-8-3 09:20 | 显示全部楼层
这要上传CAD文档,看你有哪些需要修改的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 23:43 , Processed in 0.391520 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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