乐筑天下

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

[编程交流] 查找并替换d中的文本

[复制链接]

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 22:57:13 | 显示全部楼层 |阅读模式
我试图找到一个lisp例程,该例程在当前图形中搜索某个字符串,并将其替换为用户已定义的变量字符串(在本例中,要查找的文本为“****”,变量称为“offerte”)。不仅在文本、多行文字中,而且在块、动态块、属性和字段中。。。
以下代码完成了任务,但仅适用于普通文本和多行文字。
 
  1. (defun tekstreplace (/ tss tdata)
  2. (setq tss (ssget "X" (list (cons 1 "****"))))
  3.         (repeat (sslength tss)
  4.                    (setq
  5.                              tdata (entget (ssname tss 0))
  6.                              tdata (subst (cons 1 offerte) (assoc 1 tdata) tdata)
  7.                    )
  8.                    (entmod tdata)
  9.                    (ssdel (ssname tss 0) tss)
  10.         )
  11. )

 
如有任何意见,请提前联系Thanx!
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 23:11:02 | 显示全部楼层
李有一个很棒的查找和替换工具。
 
http://www.lee-mac.com/bfind.html
 
它应该适合你的需要。
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:23:19 | 显示全部楼层
好吧,我真的希望它是自动化的,这样用户就不用担心太多的对话框。
我确实已经在李的网站上进行了搜索,但没有针对这个具体问题的结果。
实际上我不确定这是否可行。因为我在网上搜索过,但没有找到任何解决方案。
这就是为什么我需要比我更有经验的lisp用户的帮助。
再次感谢您的帮助或建议!
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-5 23:28:50 | 显示全部楼层
在我的代码库中找到了这一个旧的lisp,请在您的一端尝试,
更改旧文本值和新文本值,根据您的套装屏蔽名称
  1. (vl-load-com)
  2. (defun c:RTO  (/ ablocks acapp adoc blkdef blklist blkobj en i newtext oldtext sset)
  3. (setq acapp (vlax-get-acad-object)
  4.       adoc (vla-get-activedocument acapp)
  5.       ablocks (vla-get-blocks adoc))
  6. (setq oldtext  "ahha" newtext "new text");change to suit
  7. (if (setq sset (ssget "_X" (list (cons 0  "INSERT")(cons 66  1)(cons 2  "`*U*,DynBlock"))));DynBlock is name for your interest
  8. (progn
  9. (setq i (sslength sset))
  10. (while (setq en (ssname sset (setq i (1- i))))
  11. (setq blkobj    (vlax-ename->vla-object en))
  12.       (if (not (member "DynBlock" blklist)); use DynBlock only
  13. (setq blklist (cons (vla-get-effectivename blkobj) blklist)))
  14. (ssdel en sset))
  15. (repeat (length blklist)
  16. (if (not (vl-catch-all-error-p
  17.   (setq blkdef (vl-catch-all-apply 'vla-item (list ablocks (nth 0 blklist))))))
  18. (progn
  19.    (vlax-for a blkdef
  20.      (if (eq "ACDBTEXT" (strcase (vla-get-objectname a)))
  21. (if (eq oldtext (vla-get-textstring a))
  22. (vla-put-textstring a newtext)))
  23. (if (eq "ACDBMTEXT" (strcase (vla-get-objectname a)))
  24. (if (eq oldtext (vla-get-textstring a))
  25. (vla-put-textstring a newtext))))
  26.      ))
  27. (setq blklist (cdr blklist)))
  28. (command "_attsync" "_N" "*")
  29. (command "_regenall")
  30. )
  31. )
  32. (princ)
  33. )
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:42:34 | 显示全部楼层
谢谢你的后期修复。我已经在代码中实现了它,但没有成功。
也许你可以指定我应该放置什么而不是Dynblock。我已经尝试了插入到图形中的几个块名,但仍然没有结果。
我还注意到,在常规多行文字中搜索的字符串也没有改变。我会做错什么吗?
非常感谢您的帮助!
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:56:05 | 显示全部楼层
不确定,但发现了什么?do it certainaly changes attribute Value in Block。
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:59:32 | 显示全部楼层
我再次尝试了所有可用的选项,但仍然无法使用上述代码??@比加尔:你的意思是你知道吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 03:03 , Processed in 0.504800 second(s), 77 queries .

© 2020-2025 乐筑天下

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