明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 941|回复: 10

[提问] 多行文本出现内容变成特字符,有办法变回原内容吗。

[复制链接]
发表于 2021-6-4 09:02 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 wgij007 于 2021-8-13 07:46 编辑

原内容: Q235冷板 T2.0


变成:Q235\U+51B7\U+677F T2.0   

在图内看的还是原内容,只有在特性里才有区别. 谢谢。
双击编辑,不用改任何东东,按确定退出也可以恢复。

功能:能框选,内容变回实际内容,内容不单单是上面那些,只是举例。


谢谢


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-6-4 12:22 | 显示全部楼层
没必要改,既不影响看图也不影响修改。
要改的话还要写程序批量转换。
回复

使用道具 举报

发表于 2021-6-4 16:20 来自手机 | 显示全部楼层
双击编辑还是文字吧?全选复制到记事本,再复制粘贴回去
回复

使用道具 举报

发表于 2021-6-4 17:09 | 显示全部楼层
这是ACAD的代码页跟WINDOWS的不一致而已,UTF-8什么的,建议不要改。在一致的机器上显示是正确的。
这个问题,在近20年前常见,还有专门工具转换。近年来基本看不到了。是不是WIN10?
回复

使用道具 举报

 楼主| 发表于 2021-6-4 18:45 | 显示全部楼层
主要是替代文本时有问题,有些变了,有些又没变。
回复

使用道具 举报

发表于 2021-7-5 11:09 | 显示全部楼层
(defun c:fmt(/ d dn e i s)
  (setvar "cmdecho" 0)
  (princ "\Fmt 〓 清除多行文字格式")
  (setq i -1)
  (if(setq s(ssget '((0 . "mtext"))))
    (repeat (sslength s)
      (setq d(entget(setq e(ssname s(setq i (1+ i))))))
      (setq dn(subst(cons 1(LM:UnFormat(cdr(assoc 1 d))nil))(assoc 1 d)d))
      (entmod dn)
    )
  )
  (prin1)
)
(defun LM:UnFormat (str mtx / _replace rx)
  (defun _replace (new old str)
    (vlax-put-property rx 'pattern old)
    (vlax-invoke rx 'replace str new)
  )
  (if (setq rx (vlax-get-or-create-object "VBScript.RegExp"));引入正则表达式
    (progn
      (setq str
        (vl-catch-all-apply
          (function
            (lambda ()
              (vlax-put-property rx 'global     actrue)
              (vlax-put-property rx 'multiline  actrue)
              (vlax-put-property rx 'ignorecase acfalse)
              (foreach pair
                '(
                   ("\032"    . "\\\\\\\\")
                   (" "       . "\\\\P|\\n|\\t")
                   ("$1"      . "\\\\(\\\\[ACcFfHLlOopQTW])|\\\\[ACcFfHLlOopQTW][^\\\\;]*;|\\\\[ACcFfHLlOopQTW]")
                   ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);")
                   ("$1$2"    . "\\\\(\\\\S)|[\\\\](})|}")
                   ("$1"      . "[\\\\]({)|{")
                 )
                (setq str (_replace (car pair) (cdr pair) str))
              )
              (if mtx
                (_replace "\\\\" "\032" (_replace "\\$1$2$3" "(\\\\[ACcFfHLlOoPpQSTW])|({)|(})" str))
                (_replace "\\"   "\032" str)
              )
            )
          )
        )
      )
      (vlax-release-object rx)
      (if (null (vl-catch-all-error-p str))
        str
      )
    )
  )
)
回复

使用道具 举报

 楼主| 发表于 2021-7-21 17:35 | 显示全部楼层
本帖最后由 wgij007 于 2021-7-21 17:38 编辑
xtjd 发表于 2021-7-5 11:09
(defun c:fmt(/ d dn e i s)
  (setvar "cmdecho" 0)
  (princ "\Fmt 〓 清除多行文字格式")

这个不是多行文字格式。 这是文本来的,图里看得是正常文本。编辑才看到\U+51B7 是冷字。\U+677F 是板字
回复

使用道具 举报

发表于 2021-7-22 11:47 | 显示全部楼层
(vl-string-translate "\\" "\\\\" "Q235\U+51B7\U+677F T2.0")->"Q235冷板 T2.0"
回复

使用道具 举报

 楼主| 发表于 2021-7-24 08:12 | 显示全部楼层
不是针对这个,是所有这种情况的文本改回,双击编辑按确定也可以的,我要的是批量处理。
回复

使用道具 举报

 楼主| 发表于 2021-8-12 18:00 | 显示全部楼层
顶一下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 07:28 , Processed in 0.990152 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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