乐筑天下

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

[编程交流] 比较上的2个实体列表

[复制链接]

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:51:47 | 显示全部楼层
 
当然
回复

使用道具 举报

gsc

33

主题

90

帖子

57

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-5 16:55:47 | 显示全部楼层
提及哪些圆(层名称)不再位于端点上将“节省时间”。
回复

使用道具 举报

76

主题

312

帖子

254

银币

后起之秀

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

铜币
390
发表于 2022-7-5 16:57:49 | 显示全部楼层
是的,这是可能的,但我不知道它如何适合塔尔瓦的代码,
因为他的代码搜索满足特定需求的圆。并没有将所有圆都设置为一个变量。。
 
如果我回到我的代码,它可能看起来像这样:
  1. (defun C:CadTutor ( / polyline polylinex polyliney allcircles n ensel enlist circlex circley)
  2. (setq polyline (entget (car (entsel))))
  3. (setq polylinex (car (cdr (assoc 10 (reverse polyline)))))
  4. (setq polyliney (car (cddr (assoc 10 (reverse polyline)))))
  5. (setq allcircles (ssget "_X" (list (cons 0 "CIRCLE"))))
  6. (setq n (sslength allcircles))
  7. (repeat n
  8.         (setq ensel (ssname allcircles (setq n (1- n))))
  9.         (setq enlist (entget ensel))
  10.         (setq circlex (car (cdr (assoc 10 enlist))))
  11.         (setq circley (car (cdr (cdr (assoc 10 enlist)))))
  12.         (if (and (= polylinex circlex)(= polyliney circley))
  13.                 (progn
  14.                         (princ "\nMatch found!")
  15.                         (setq enlist (subst (cons 8 "MATCHLAYER") (assoc 8 enlist) enlist))
  16.                         (entmod enlist)
  17.                                (ssdel enlist allcircles)
  18.                 )
  19.                 (progn
  20.                         (princ "\nNo match...")
  21.                 )
  22.         )
  23. )
  24. (princ)

 
运行代码后,变量!allcircles将只包含所有“不匹配”的圆,您可以在代码的最后一部分使用它们。
回复

使用道具 举报

gsc

33

主题

90

帖子

57

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
165
发表于 2022-7-5 17:04:58 | 显示全部楼层
我喜欢这样的想法,即如果圆对象的中心坐标等于LW多段线的端点,则该项将从列表中删除。这样,您将得到一个列表,其中仅包含不在任何LWD多段线端点上的圆。然而,您的示例是基于1条多段线,我有多条多段线和多个圆。
 
这是我的(部分)代码,它基于Tharwats最后一个示例代码。
这段代码有效:只要任何圆位于任何多段线的任何端点,并且当圆不在端点时终止(带有警报),就将图层名称写入列表。
 
我的想法是使用FOREACH部分(在半collons之后)在相等时从temp_列表(nfd)中删除圆。这样你就得到了一个不在端点上的圆列表。然后:如果temp\u list=0-->写入层名称,如果temp\u list>0-->通知不在端点上的圆层名称
 
但是最终的temp_列表将仅在while循环之后完成。我的技能不足以解决这个问题。。。
 
  1. 6
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-1 14:49 , Processed in 1.613831 second(s), 59 queries .

© 2020-2025 乐筑天下

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