明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2200|回复: 2

[求助]如何修改后,实现批量修改文本

[复制链接]
发表于 2010-4-10 10:45:00 | 显示全部楼层 |阅读模式

这个是我自己写的一段“换文字”的lisp

想实现批量修改,怎么写?意思就是,第一次单选一个文本 → 再批量选择需要替换的文本 → 删除第一个文本→结束

只知道下面的entsel 要修改为要该为批量选择(ssget?),再有循环,怎么写就不知道了,求高手帮我!

(defun c:HWZ()
(setq en (entsel "选新文字(删除):"))
(setq en_data (entget (car en)))
(setq en_text_list (assoc 1 en_data))
(setq text (cdr en_text_list))
(princ "\n新文字:")(princ text)

(setq eo (entsel "选旧文字(保留):"))
(setq eo_data (entget (car eo)))
(setq texto_list (assoc 1 eo_data))
(princ "  旧文字:")(princ (cdr texto_list))
(setq new_text_list (cons 1 text))
(setq eo_data (subst new_text_list texto_list eo_data))

(entmod eo_data)
(vl-cmdf "erase" en "")
)

发表于 2010-4-10 11:52:00 | 显示全部楼层
  1. (defun c:HWZ()
  2.    (setq en (entsel "选新文字(删除):"))
  3.    (setq en_data (entget (car en)))
  4.    (setq en_text_list (assoc 1 en_data))
  5.    (setq text (cdr en_text_list))
  6.    (princ "\n新文字:")(princ text)
  7.    
  8.    (princ "\n 选旧文字(保留):")
  9.    (cond
  10.     ((null (setq ss (ssget '((0 . "TEXT"))))))
  11.     (T
  12.      (setq nn (sslength ss)
  13.            nn (1- nn)
  14.      )
  15.      (while (setq ee (ssname ss nn))
  16.        (setq eo_data (entget ee)
  17.                   nn (1- nn)
  18.        )
  19.        (setq texto_list (assoc 1 eo_data))
  20.        (princ "\n旧文字:")(princ (cdr texto_list))
  21.        (setq new_text_list (cons 1 text))
  22.        (setq eo_data (subst new_text_list texto_list eo_data))
  23.       
  24.        (entmod eo_data)
  25.    )))  
  26.    (vl-cmdf "erase" en "")
  27. )
 楼主| 发表于 2010-4-11 01:03:00 | 显示全部楼层

非常好用!

谢谢二楼!

向您学习,向您致敬~

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

本版积分规则

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

GMT+8, 2024-10-1 23:35 , Processed in 0.161639 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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