蜀国的大熊猫 发表于 2023-12-19 13:32:54

提取TEXT/MTEXT内的纯文本,过滤文字样式格式

(if (null vlax-dump-object) (vl-load-com));;将 Visual LISP 扩展功能加载到 AutoLISP

;提取多行文字,去除无用格式符号--(一级)----
;由尘缘一生提供 QQ:15290049

(defun gets-mt (nam / s ob)

(setq s (vlax-get (vlax-ename->vla-object nam) 'TextString))

(vlax-put-property (setq ob (vlax-create-object "Vbscript.RegExp")) "IgnoreCase" 0)

(vlax-put-property ob "Global" 1)

(setq s

    (mapcar

      '(lambda (x y) (vlax-put-property ob "Pattern" x) (setq s (vlax-invoke-method ob "Replace" s y)))

      '("\\\\\\\\" "\\\\{" "\\\\}" "\\\\p(.[^;]*);" "\\\\S(.[^;]*)(\\^|#|\\\\)(.[^;]*);"

         "(\\\\F|\\\\f|\\\\C|\\\\H|\\\\T|\\\\Q|\\\\W|\\\\A)(.[^;]*);" "(\\\\L|\\\\O|\\\\l|\\\\o)" "\\\\~"

         "\\\\P" "\n" "({|})" "\\x01" "\\x02" "\\x03")

      (list (chr 1) (chr 2) (chr 3) "" "" "" "" "" (chr 0) "" "" "\\" "{" "}")

    )

)

(if ob (vlax-release-object ob))

(last s)

)



;样例

(defunc:tt (/ str)

(setq mtext_name (car(entsel "\n 请选择MTEXT文字:?")))

(setq str (gets-mt mtext_name))

str

)



BestYou 发表于 2023-12-20 00:18:31

感谢分享代码

不一样地设计 发表于 2023-12-20 01:00:05

感谢楼主分享

xyp1964 发表于 2023-12-20 22:43:12

MTEXT直接炸开获取更简单明了……

zilong136 发表于 2023-12-25 02:27:24

天正文字不正持
页: [1]
查看完整版本: 提取TEXT/MTEXT内的纯文本,过滤文字样式格式