明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4188|回复: 15

【多行文字格式清除】

  [复制链接]
发表于 2019-4-24 09:38:14 | 显示全部楼层 |阅读模式
;;多行文字样式清除
(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" "\\\\\\\\")
        (setq s(vlax-invoke-method  regex "Replace" s (chr 1)))
        ;替换\{字符
        (vlax-put-property regex "Pattern" "\\\\{")
        (setq s(vlax-invoke-method  regex "Replace" s (chr 2)))
        ;替换\}字符
        (vlax-put-property regex "Pattern" "\\\\}")
        (setq s(vlax-invoke-method  regex "Replace" s (chr 3)))
        ;删除段落缩进格式
        (vlax-put-property regex "Pattern" "\\\\pi(.[^;]*);")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除制表符格式
        (vlax-put-property regex "Pattern" "\\\\pt(.[^;]*);")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除堆迭格式
        (vlax-put-property regex "Pattern" "\\\\S(.[^;]*)(\\^|#|\\\\)(.[^;]*);")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除字体、颜色、字高、字距、倾斜、字宽、对齐格式
        (vlax-put-property regex "Pattern" "(\\\\F|\\\\f|\\\\C|\\\\H|\\\\\T|\\\\Q|\\\\W|\\\\A)(.[^;]*);")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除下划线、删除线格式
        (vlax-put-property regex "Pattern" "(\\\\L|\\\\O|\\\\l|\\\\o)")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除不间断空格格式
        (vlax-put-property regex "Pattern" "\\\\~")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除换行符格式
        (vlax-put-property regex "Pattern" "\\\\P")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除换行符格式(针对Shift+Enter格式)
        (vlax-put-property regex "Pattern" "\n")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;删除{}
        (vlax-put-property regex "Pattern" "({|})")
        (setq s(vlax-invoke-method  regex "Replace" s ""))
        ;替换回\\,\{,\}字符
        (vlax-put-property regex "Pattern" "\\x01")
        (setq s(vlax-invoke-method  regex "Replace" s "\\"))
        (vlax-put-property regex "Pattern" "\\x02")
        (setq s(vlax-invoke-method  regex "Replace" s "{"))
        (vlax-put-property regex "Pattern" "\\x03")
        (setq s(vlax-invoke-method  regex "Replace" s "}"))
       
        (vlax-release-object regex)
        s
)

评分

参与人数 2明经币 +2 收起 理由
断箭 + 1 很给力!
USER2128 + 1 赞一个!

查看全部评分

发表于 2024-4-18 13:15:33 | 显示全部楼层
ferious 发表于 2023-12-26 12:53
清理格式后怎么换行变了?能帮忙看下吗

“换行”也是一种格式,都清除了
发表于 2024-6-7 15:22:40 | 显示全部楼层
就像保留分数, 删了 "删除堆迭格式", 不过分数变大了怎么办?

本帖子中包含更多资源

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

x
发表于 2021-11-13 15:48:43 | 显示全部楼层
你好群主错误: no function definition: VLAX-CREATE-OBJECT
发表于 2020-11-10 14:27:44 | 显示全部楼层
感谢,比smt好用
发表于 2022-7-6 14:39:38 | 显示全部楼层
很好用,感谢!
发表于 2023-2-11 08:48:44 | 显示全部楼层
非常好的代码,谢谢楼主分享啊。
发表于 2023-11-29 19:18:37 | 显示全部楼层
简单好用,收藏!
发表于 2023-12-26 12:53:38 | 显示全部楼层
清理格式后怎么换行变了?能帮忙看下吗

本帖子中包含更多资源

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

x
发表于 2024-4-17 17:53:04 | 显示全部楼层
当文字比较长、elist组码出现“3”时怎么处理?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 11:48 , Processed in 0.198336 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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