乐筑天下

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

[编程交流] 检测重复的多行文字字符串

[复制链接]

5

主题

17

帖子

12

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:22:48 | 显示全部楼层 |阅读模式
你好
 
我也在Autodesk论坛上发布了这篇文章,但我想我可能会在这里得到更好的回复。
 
有什么方法可以检测多行文字条目,或者如果不能检测多行文字,只检测文字?
假设我在绘图中放置了数百个多行文字条目,但它们必须是唯一的。例如:
 
1.100
1.101
1.102
1.103
1.104
 
等等
 
有没有办法快速找到重复条目并突出显示它们,或者列出它们?例如,如果1.100在图形中使用了两次。
 
我知道我可以使用FIND,但由于我不知道哪个字符串是重复的,这将花费很长时间,因为我必须把每个字符串放进去,看看是否有重复的,如果我没有错的话?
 
有什么想法吗?
谢谢
回复

使用道具 举报

18

主题

111

帖子

93

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:29:35 | 显示全部楼层
出乎意料地
没有任何测试
 
 
(setq a(ssget“x”'((0。“TEXT,MTEXT,RTEXT”)))
(setq aa(如果a
(重复(setq i(sslength a))
(setq l(cons(ssname a(setq i(1-i)))l))
)
))
(foreach x l
(如果(=(cdr(assoc 1(entget x)))(vl位置(cdr(assoc 1(entget x))))(cdr(assoc 1(entget(car l 107;)а)а)
(打印x)
))
回复

使用道具 举报

18

主题

111

帖子

93

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
90
发表于 2022-7-5 15:35:53 | 显示全部楼层
自己测试后发现代码需要修改
现在不能正常工作
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 15:41:31 | 显示全部楼层
请阅读代码发布指南,并将您的代码包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:49:25 | 显示全部楼层
下面是一个快速示例:
  1. (defun c:foo (/ e msg out s tm)
  2. (cond
  3.    ((setq s (ssget "_A" '((0 . "MTEXT,TEXT"))))
  4.     (setq s (mapcar '(lambda (x) (cons x (strcase (cdr (assoc 1 (entget x))))))
  5.              (mapcar 'cadr (ssnamex s))
  6.      )
  7.     )
  8.     (setq out (ssadd))
  9.     (while (setq e (car s))
  10.       (setq s (cdr s))
  11.       (if (setq tm (vl-remove-if-not '(lambda (x) (wcmatch (cdr e) (cdr x))) s))
  12. (progn
  13.    (setq msg (cons (cons (cdr e) (1+ (length tm))) msg))
  14.    (foreach x (append (list e) tm) (setq out (ssadd (car x) out)) (setq s (vl-remove x s)))
  15. )
  16.       )
  17.     )
  18.     (sssetfirst nil out)
  19.     (mapcar 'print (vl-sort msg '(lambda (a b) (< (car a) (car b)))))
  20.    )
  21. )
  22. (princ)
  23. )
回复

使用道具 举报

5

主题

17

帖子

12

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 15:58:47 | 显示全部楼层
 
这正是我想要的,谢谢!
是否可以列出找到重复的字符串?作为奖励!
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:03:30 | 显示全部楼层
以上代码已更新。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:05:58 | 显示全部楼层
做得好,罗恩·琼普。
 
没有必要
  1. (setq out (ssadd <ent> out))
  1. (ssadd <ent> out)
就足够了。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:14:38 | 显示全部楼层
啊,是的。。有时候我对赛特的比赛有点疯狂。
回复

使用道具 举报

5

主题

17

帖子

12

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 16:21:35 | 显示全部楼层
 
太棒了!我会用这个。非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 03:36 , Processed in 0.421436 second(s), 72 queries .

© 2020-2025 乐筑天下

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