设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1033|回复: 0

[文字] 批量处理DWG,转换全角文字(TXT,MTEXT)到半角

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-7-22 11:30:07 | 显示全部楼层 |阅读模式
  • 插件名称 : 全转半角
  • 作  者 : newer
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-07-22
  • 命令名称 :XDTB_TXTD2SBC
  • 插件介绍 :批量处理DWG,转换全角文字(TXT,MTEXT)到半角
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x

1、选择文字处理版本

  1. (defun c:XDTB_TXTD2SBC (/ ss x txt y second)
  2.   (if (and (xdrx_initssget "选取要全角转半角的文字<退出>:")
  3.            (setq ss (xdrx_ssget '((0 . "TEXT,MTEXT"))))
  4.       )
  5.     (progn
  6.       (xdrx_begin)
  7.       (mapcar
  8.         '(lambda (x)
  9.            (setq txt (xdrx_getpropertyvalue x "textstring"))
  10.            (mapcar '(lambda (y)
  11.                       (if (= y " ")
  12.                         (setq txt (xdrx_string_regexpr " " txt " " 14))
  13.                         (progn
  14.                           (setq        first  (substr y 1 1)
  15.                                 second (ascii (substr y 2 1))
  16.                                 second (- second 128)
  17.                                 str    (chr second)
  18.                           )
  19.                           (setq txt (xdrx_string_regexpr y txt str 14))
  20.                         )
  21.                       )
  22.                     )
  23.                    (xdrx_string_regexps "[\\u3000\\uff01-\\uff5f]" txt)
  24.            )
  25.            (xdrx_setpropertyvalue x "textstring" txt)
  26.          )
  27.         (xdrx_pickset->ents ss)
  28.       )
  29.       (xdrx_end)
  30.     )
  31.   )
  32.   (princ)
  33. )


下面是不打开DWG,批量处理的。

130409a9yohkxrhs0rxpyo.png.thumb.jpg

2、批量处理DWG版本

  1. (defun c:XDTB_TxtBatD2SBC (/ txt match n num fns dwg layous lay num1)
  2.   (defun _replace (o)
  3.     (setq txt (vla-get-textstring o))
  4.     (if        (setq
  5.           match        (xd::string:regexps "[\\u3000\\uff01-\\uff5f]" txt "")
  6.         )
  7.       (progn (foreach n        match
  8.                (if (= n " ")
  9.                  (setq txt (xd::string:regexpr " " txt " " ""))
  10.                  (progn        (setq first  (substr n 1 1)
  11.                               second (ascii (substr n 2 1))
  12.                               second (- second 128)
  13.                               str    (chr second)
  14.                         )
  15.                         (setq txt (xd::string:regexpr n txt str ""))
  16.                  )
  17.                )
  18.              )
  19.              (vla-put-textstring o txt)
  20.              (setq num        (1+ num)
  21.                    num1        (1+ num1)
  22.              )
  23.       )
  24.     )
  25.   )
  26.   (defun _find_and_replace (doc)
  27.     (textpage)
  28.     (setq fns (1+ fns))
  29.     (setq dwg (vla-get-name doc)
  30.           dwg (strcat (vl-filename-base dwg) (vl-filename-extension dwg)))
  31.     (princ (XD::String:TailFill (strcat "\n搜索 " dwg) " " 50))
  32.     (setq layouts (vla-get-layouts doc))
  33.     (setq num1 0)
  34.     (vlax-for lay layouts
  35.       (setq blk (vla-get-block lay))
  36.       (vlax-for        o blk
  37.         (if (or        (= (vla-get-objectname o) "AcDbText")
  38.                 (= (vla-get-objectname o) "AcDbMText")
  39.             )
  40.           (progn (_replace o))
  41.         )
  42.       )
  43.     )
  44.     (princ (strcat "  替换 " (itoa num1) " 个文字对象."))
  45.   )
  46.   (setq        fns 0
  47.         num 0
  48.   )
  49.   (xd::vla:odbx '_find_and_replace nil t)
  50.   (princ (strcat "\n总共搜索了 "
  51.                  (itoa fns)
  52.                  " 个DWG文件,供转码了 "
  53.                  (itoa num)
  54.                  " 个文本对象."
  55.          )
  56.   )
  57.   (princ)
  58. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2021-9-22 16:05 , Processed in 0.821704 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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