David_Webb 发表于 2024-2-5 07:21:59

请问是否可以设置多行文字编辑时无字符格式粘贴文本的快捷键

本帖最后由 David_Webb 于 2024-2-5 07:23 编辑

每次从别的程序复制文本到CAD多行文字时,不想带入文本格式,就需要点击右键,然后在弹出菜单中选择“选择性粘贴”-“无字符格式粘贴”,操作非常烦琐,有没有大佬能通过设置或编程,实现一个快捷键比如说“Ctrl +Alt +V”或其它快捷键,直接无字符格式粘贴,提前感谢!

sniper1111 发表于 2024-2-5 08:55:07

;60.提取多行文字,去除无用格式符号--来自明经
(defun QYD: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-methodregex "Replace" s (chr 1)))
       ;替换\{字符
        (vlax-put-property regex "Pattern" "\\\\{")
        (setq s(vlax-invoke-methodregex "Replace" s (chr 2)))
       ;替换\}字符
        (vlax-put-property regex "Pattern" "\\\\}")
        (setq s(vlax-invoke-methodregex "Replace" s (chr 3)))
       ;删除段落缩进格式
        (vlax-put-property regex "Pattern" "\\\\pi(.[^;]*);")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除制表符格式
        (vlax-put-property regex "Pattern" "\\\\pt(.[^;]*);")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除堆迭格式
        (vlax-put-property regex "Pattern" "\\\\S(.[^;]*)(\\^|#|\\\\)(.[^;]*);")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除字体、颜色、字高、字距、倾斜、字宽、对齐格式
        (vlax-put-property regex "Pattern" "(\\\\F|\\\\f|\\\\C|\\\\H|\\\\\T|\\\\Q|\\\\W|\\\\A)(.[^;]*);")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除下划线、删除线格式
        (vlax-put-property regex "Pattern" "(\\\\L|\\\\O|\\\\l|\\\\o)")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除不间断空格格式
        (vlax-put-property regex "Pattern" "\\\\~")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除换行符格式
        (vlax-put-property regex "Pattern" "\\\\P")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除换行符格式(针对Shift+Enter格式)
        (vlax-put-property regex "Pattern" "\n")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       ;删除{}
        (vlax-put-property regex "Pattern" "({|})")
        (setq s(vlax-invoke-methodregex "Replace" s ""))
       
       ;替换回\\,\{,\}字符
        (vlax-put-property regex "Pattern" "\\x01")
        (setq s(vlax-invoke-methodregex "Replace" s "\\"))
        (vlax-put-property regex "Pattern" "\\x02")
        (setq s(vlax-invoke-methodregex "Replace" s "{"))
        (vlax-put-property regex "Pattern" "\\x03")
        (setq s(vlax-invoke-methodregex "Replace" s "}"))
       
        (vlax-release-object regex)
        s
)

sniper1111 发表于 2024-2-5 09:01:08

这有一个成品的。看看是不是你想要的

paulpipi 发表于 2024-2-5 09:20:29

sniper1111 发表于 2024-2-5 09:01
这有一个成品的。看看是不是你想要的

感谢分享,大神能不能按楼主的要求帮忙改一下呢?
页: [1]
查看完整版本: 请问是否可以设置多行文字编辑时无字符格式粘贴文本的快捷键