明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 120|回复: 2

简繁互转,为啥2020版本以上不能使用?哪位大师知道。

[复制链接]
发表于 昨天 19:29 | 显示全部楼层 |阅读模式
(defun hzCharConvert (IsRev / SimpleCharSet TraditionalCharSet Text:CharConvert cmdfun)

(defun cmdfun (IsRev / i sel ent obj txt AcDoc dxf typ)
  (if (setq sel (ssget '((0 . "*TEXT,INSERT,ATTDEF"))))
    (progn
      (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
      (vla-StartUndoMark AcDoc)
      (setq i 0)
      (repeat (sslength sel)
        (setq ent (ssname sel i))
        (setq dxf (entget ent))
        (setq obj (vlax-ename->vla-object ent))
        (setq Typ (cdr (assoc 0 dxf)))
        (cond
          ( (vlax-property-available-p obj 'textstring)
            (setq txt (vla-get-TextString obj))
            (vla-put-textstring obj (Text:CharConvert txt IsRev))
            (if (= Typ "ATTDEF")
              (progn
                (setq txt (vla-get-tagstring obj))
                (vla-put-tagstring obj (Text:CharConvert txt IsRev))
              )
            )
          )
          ( (= Typ "INSERT")
            (foreach Att (vlax-invoke obj 'GetAttributes)
              (setq txt (vla-get-tagstring Att))
              (vla-put-tagstring Att (Text:CharConvert txt IsRev))
              (setq txt (vla-get-textstring Att))
              (vla-put-textstring Att (Text:CharConvert txt IsRev))
            )
          )
        )
        (setq i (1+ i))
      )
      (vla-EndUndoMark AcDoc)
      (vlax-release-object AcDoc)
      (princ "\n转化完毕!请再校正。")
    )
  )
  (princ)
)

;;;=============================================================
;;;=============================================================
(defun Text:CharConvert (text IsRev / Index NewTxt Str From to)
  (if IsRev
    (setq From TraditionalCharset
          To SimpleCharSet
    )
    (setq From SimpleCharSet
          To TraditionalCharset
    )
  )
  (setq NewTxt "")
  (while (/= text "")
    (setq str (substr text 1 1))
    (if (> (ascii str) 128)
      (progn
        (setq str (substr text 1 2))
        (setq text (substr text 3))
        (if (setq index (VL-POSITION str From))
          (setq str (nth index To))
        )
      )
      (setq str (substr text 1 1)
            text (substr text 2)
      )
    )
    (setq newtxt (strcat newtxt str))
  )
  newtxt
)


(cmdfun IsRev)

回复

使用道具 举报

发表于 19 小时前 | 显示全部楼层
让lispsys=0试试
回复 支持 反对

使用道具 举报

发表于 14 小时前 | 显示全部楼层
本帖最后由 e2002 于 2025-2-25 09:25 编辑

这能转编码?From,To都没有用到,或者没发出关键的转码语句或者函数。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-25 23:33 , Processed in 0.147215 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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