明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 25757|回复: 59

[【风之影】] [源码]批量文本替换

    [复制链接]
发表于 2011-10-1 20:57 | 显示全部楼层 |阅读模式
本帖最后由 cabinsummer 于 2016-12-24 15:11 编辑


编译后的文件,免费,供淘宝者使用
命令:RC
  1. (defun c:rc(/ oldch newch sstxt ssl ct0 edata etext txtln subln ct1 ct2 schct DCL_ID newtext)
  2.   (setvar "cmdecho" 0)
  3.   (command "undo" "be")
  4.   (setq oldch "" newch "")
  5.   (if (> (setq DCL_ID (load_dialog "replace.dcl")) 0)
  6.     (progn
  7.       (if (new_dialog "replace" DCL_ID)
  8.         (progn
  9.           (mode_tile "oldword" 2)
  10.           (action_tile "oldword" "(setq oldch $value)")
  11.           (action_tile "newword" "(setq newch $value)")
  12.           (start_dialog)
  13.         )
  14.         (princ "\n 不能显示对话框")
  15.       )
  16.       (unload_dialog DCL_ID)
  17.     )
  18.     (princ "\n 不能打开对话框")
  19.   )
  20.   (if (and (/= "" oldch)(/= oldch newch)(setq sstxt (ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>")))))
  21.     (progn
  22.       (setq ssl (sslength sstxt)
  23.             ct0 0
  24.             ct1 0
  25.             ct2 0
  26.             subln (strlen oldch)
  27.       )
  28.       (while (< ct0 ssl)
  29.         (setq edata (entget (ssname sstxt ct0))
  30.               etext (cdr (assoc 1 edata))
  31.               txtln (strlen etext)
  32.               schct 1
  33.               newtext ""
  34.         )
  35.         (while (<= schct txtln)
  36.           (setq newtext
  37.             (strcat newtext
  38.               (if (= (setq readch (substr etext schct subln)) oldch)
  39.                 (setq ct1 (1+ ct1)
  40.                   schct (+ schct subln)
  41.                   newch newch
  42.                 )
  43.                 (progn
  44.                   (setq schct (1+ schct))
  45.                   (substr readch 1 1)
  46.                 )
  47.               )
  48.             )
  49.           )
  50.         )
  51.         (if (/= etext newtext)
  52.    (progn
  53.             (entmod (subst (cons 1 newtext) (assoc 1 edata) edata))
  54.             (setq ct2 (1+ ct2))
  55.           )
  56.         )
  57.         (setq ct0 (1+ ct0))
  58.       )
  59.       (alert (strcat "所选文字中共有" (itoa ct2) "个文字含" (itoa ct1) "个 \"" oldch "\" 被替换为 \"" newch "\" ."))
  60.     )
  61.   )
  62.   (command "undo" "e")
  63.   (princ)
  64. )

  1. replace:dialog
  2. {
  3.   label="替换文字串中指定子串";
  4.   :edit_box
  5.   {
  6.     label="目标子串";
  7.     key="oldword";
  8.     allow_accept=true;
  9.   }
  10.   :edit_box
  11.   {
  12.     label="替换子串";
  13.     key="newword";
  14.     allow_accept=true;
  15.   }
  16.   ok_only;
  17. }

本帖子中包含更多资源

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

x

点评

支持钢筋 %%130方式输入吗?  发表于 2019-4-25 08:24

评分

参与人数 3明经币 +4 金钱 +30 收起 理由
tigcat + 1 从狼大师那过来支持楼主的
langjs + 2 + 30 谢谢啊!
【KAIXIN】 + 1 支持!学习源码!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2024-1-25 15:30 | 显示全部楼层
半夜星星 发表于 2019-4-29 11:06
最好是用EXCEL的方式来改,把需要改的列成二列,这种有没有弄过

有的,直接在CAD选两列文字,一对对替换。
发表于 2022-5-10 15:08 | 显示全部楼层
本帖最后由 ZJKUSO 于 2022-5-10 16:17 编辑

能替换“#”,判断比较严格,要区分大小写
有个小遗憾,图块属性的文字无法替换
能不能加一个按钮,全图替换 和 框选替换 分开来
发表于 2019-4-29 11:06 | 显示全部楼层
最好是用EXCEL的方式来改,把需要改的列成二列,这种有没有弄过
发表于 2011-10-1 22:56 | 显示全部楼层
感觉还是CAD原带的好用。。。。
 楼主| 发表于 2011-10-2 04:07 | 显示全部楼层
429014673 发表于 2011-10-1 22:56
感觉还是CAD原带的好用。。。。

说对了!其实这是我十几年前在R14下开发的,那时AutoCAD还没有查找替换的功能。我是在明经上看到不少人还在发类似的东西,其实我们很多功能都是重复开发。放眼望去,明经上的程序很多只有简单的功能,还像个宝一样编译。所以我贴出十几年前的源码供大家学习。

点评

说的很对.... 很有见解,不知道你啥时候成版主了,恭喜了..  发表于 2012-1-6 18:18
看楼主的程序编排就感觉功力深厚,希望能见到楼主更多的源码来学习  发表于 2011-10-4 00:24

评分

参与人数 1金钱 +10 收起 理由
cnks + 10 也有很多开源的lsp都是很不错的,这才有大将.

查看全部评分

发表于 2011-10-4 23:07 | 显示全部楼层
楼主的分享精神值得学习,支持
 楼主| 发表于 2011-10-5 10:49 | 显示全部楼层
hzj526 发表于 2011-10-4 23:07
楼主的分享精神值得学习,支持

感谢上帝、感谢AutoCAD、感谢明经,这么旧的程序现在还能用
发表于 2011-10-5 14:49 | 显示全部楼层
感谢上帝。感谢风。
发表于 2011-10-5 14:51 | 显示全部楼层
(ssget '((-4 . "<OR")(0 . "TEXT")(0 . "MTEXT")(-4 . "OR>")))))

好像能
(ssget '((0 . "*text")))

点评

我感觉也能如明镜兄所整.  发表于 2012-8-4 23:30
这样可以吗?貌似缺少判断  发表于 2012-1-2 13:41
发表于 2011-10-5 16:52 | 显示全部楼层
感谢cabinsummer楼主
分享学习!
发表于 2011-10-29 08:59 | 显示全部楼层
好帖啊
发表于 2011-10-29 11:34 | 显示全部楼层
感谢楼主的同时,也建议大家理解一下新手吧.一个新手,花了大量的时间学会了编制一个简单的功能.对他来说,不亚于一个科学家搞出个原子弹来.让他沉浸在胜利的喜悦之中一段时间吧.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 23:40 , Processed in 0.230918 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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