乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: caltes75

[编程交流] 自动选择文本

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 11:10:08 | 显示全部楼层
创建一些文字,其中有旧的。
 
 
  1. ;;method by Alanj
  2. ;;modified by reid b.
  3. (defun c:test (/ ss id ent a b)
  4. (setq ss (ssget "_x" '((0 . "text,mtext")))
  5.          id 0)
  6.       (while (setq ent (ssname ss id))
  7.         (if (wcmatch (strcase (cdr (setq a (assoc 1 (setq b (entget ent)))))) "*[color=red]OLD[/color]*")
  8. [u];;[color=red]OLD[/color] must be uppercase[/u]
  9. [color=dimgray][color=black][u];;will only modify text with the word [color=red]old[/color] in it[/u][/color]
  10. [/color]           (entmod (subst (cons 1 "[color=red]NEW[/color]") a b))
  11.         )
  12.       (setq id (1+ id))
  13.       )
  14. (princ)
  15. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:13:56 | 显示全部楼层
 
  1. (defun c:test ( / old new )
  2. ;; © Lee Mac 2010
  3. (setq old "Lee" new "Mac")
  4. (
  5.    (lambda ( s i / e )
  6.      (if s
  7.        (while (setq e (ssname s (setq i (1+ i))))
  8.          (entupd
  9.            (cdr
  10.              (assoc -1
  11.                (entmod
  12.                  (subst
  13.                    (cons 1 new) (assoc 1 (entget e)) (entget e)
  14.                  )
  15.                )
  16.              )
  17.            )
  18.          )
  19.        )
  20.      )
  21.    )
  22.    (ssget "_X" (list (cons 0 "TEXT,MTEXT") (cons 1 old))) -1
  23. )
  24. (princ)
  25. )
  26.                   

 
^^容易得多
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:16:56 | 显示全部楼层
区分大小写。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:19:55 | 显示全部楼层
  1. (defun c:Test (/ new old ss)
  2. (setq new "WoO"
  3.        old "Hoo"
  4. )
  5. (if (setq ss (ssget "_X" '((0 . "MTEXT,TEXT"))))
  6.    ((lambda (i / e s l)
  7.       (while (setq e (ssname ss (setq i (1+ i))))
  8.         (if (wcmatch (strcase (cdr (setq s (assoc 1 (setq l (entget e)))))) (strcase old))
  9.           (entmod (subst (cons 1 new) s l))
  10.         )
  11.       )
  12.     )
  13.      -1
  14.    )
  15. )
  16. (princ)
  17. )
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 11:23:57 | 显示全部楼层
致李:,
似乎你的代码只会在编写时改变Lee。如果全部是大写或小写,文本将不会更改。这和使用
(ssget“_x”'((1。“Lee”))然后entmod?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:29:47 | 显示全部楼层
 
是的,我承认我没有读完整的帖子,也不知道区分大小写是个问题。。。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
310
发表于 2022-7-6 11:31:48 | 显示全部楼层
别担心,我只是想学习
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-6 18:14 , Processed in 0.449436 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表