乐筑天下

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

[编程交流] 超过最大sel数

[复制链接]
M76

35

主题

114

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:00:36 | 显示全部楼层 |阅读模式
如何避开这个问题?
 
我总是将未使用的选择集的变量设置为零,但这似乎解决不了任何问题。
 
是否有明确的方法永久清除选择集?
 
我不明白为什么在可用选择集的数量如此有限(128)的情况下,没有关于这个主题的可用信息。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:07:19 | 显示全部楼层
它发生在什么情况下?当我在循环中使用选择集时,将选择集变量设置为nil或下一个ss(如ssget中的帮助文件所述)总是适用于我。
或者,如果是vla对象,可以在ss上使用vla delete。
回复

使用道具 举报

M76

35

主题

114

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:13:05 | 显示全部楼层
我在循环中使用它,我试图使用图形清理从闭合多段线中删除自交点,这就是我得到错误的地方。因此,选择集是由图形清理例程创建的,我无法控制它。
 
以下是导致问题的代码部分:
 
  1. (setq lof (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 "_lay"))))
  2. (if lof
  3.         (progn
  4. (setq ssn (sslength lof))
  5. (setq i 0)
  6. (repeat ssn
  7.         (setq entx (ssname lof i))
  8.         (command "_change" entx "" "_p" "_la" "tmp" "")
  9.         (command "_-mapclean" "lead.dpf")
  10.         (setq lef (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 "tmp"))))
  11.         (setq sen (sslength lef))
  12.         (setq j 0)
  13.         (repeat sen
  14.                 (setq enty (ssname lef j))
  15.                 (command "_change" enty "" "_p" "_la" "_lay" "")
  16.                 (setq j (1+ j))
  17.         )
  18.         (setq lef nil)
  19.         (gc)
  20.         (setq i (1+ i))
  21. )
  22. ))

 
即使在循环中添加gc也没有帮助。
 
领导dpf是在tmp层上运行的已保存清理例程。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:19:12 | 显示全部楼层
保持这种想法。。。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:25:04 | 显示全部楼层
那么这个呢:
  1. (setq lof (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 "_lay"))))
  2. (if lof
  3. (progn
  4.    (setq i -1)
  5.    (while (setq entx (ssname lof (setq i (1+ i))))
  6.      ;(command "_change" entx "" "_p" "_la" "tmp" "")
  7.      (entmod (subst (cons 8 "tmp") (assoc 8 (entget entx)) (entget entx)))
  8.      )
  9.    (command "_-mapclean" "lead.dpf")
  10.    (setq i -1)
  11.    (while (setq entx (ssname lof (setq i (1+ i))))
  12.      ;(command "_change" enty "" "_p" "_la" "_lay" "")
  13.      (entmod (subst (cons 8 "_lay") (assoc 8 (entget entx)) (entget entx)))
  14.      )
  15.    )
  16. )

 
我还没有测试过这个,但我认为你可能正在用其他代码制作一个有点混乱的网络。
回复

使用道具 举报

M76

35

主题

114

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:30:22 | 显示全部楼层
但是“图形清理”会将原始对象分解为多个对象,这段代码不是只会将其中一个对象设置回原始图层吗?
 
编辑:这给了我一个想法,图形清理可以选择在另一个图层上创建修改过的对象,这样我就不必从代码中放回它们。我试试看,然后回来汇报。
回复

使用道具 举报

M76

35

主题

114

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:34:06 | 显示全部楼层
这不起作用,错误仍然存在,我已使用“图形清理”命令转储,并使用内部函数进行清理,但唯一的区别是,当它用完128个选择集时,会出现访问冲突错误。
 
因此,问题仍然是如何在没有痕迹的情况下清除选择集。
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:41:21 | 显示全部楼层
很抱歉没有回复你(现在又是早上了)。我在autocad中没有该命令,所以我只是猜测。因此它将其分解为多个对象。然后你能在命令之间做两个循环吗?

  1. (setq lof (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 "_lay"))))
  2. (if lof
  3. (progn
  4.    (setq i -1)
  5.    (while (setq entx (ssname lof (setq i (1+ i))))
  6.      ;(command "_change" entx "" "_p" "_la" "tmp" "")
  7.      (entmod (subst (cons 8 "tmp") (assoc 8 (entget entx)) (entget entx)))
  8.      )
  9.    )
  10. )
  11. (command "_-mapclean" "lead.dpf")
  12. (setq lof (ssget "_X" (list (cons 0 "LWPOLYLINE") (cons 8 "tmp"))))
  13. (if lof
  14. (progn
  15.    (setq i -1)
  16.    (while (setq entx (ssname lof (setq i (1+ i))))
  17.      ;(command "_change" entx "" "_p" "_la" "tmp" "")
  18.      (entmod (subst (cons 8 "_lay") (assoc 8 (entget entx)) (entget entx)))
  19.      )
  20.    )
  21. )
回复

使用道具 举报

M76

35

主题

114

帖子

87

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 12:48:26 | 显示全部楼层
 
不,因为重要的是,清理是在对象上逐个运行的,否则它将检测到它们之间的交点,而不仅仅是自交点。结果充其量也只是一场闹剧。
 
在我看来,只有两种可能的解决方案。或者在每100个对象之后中断代码。或者创建一个例程,该例程可以检测和修复自相交,而无需创建额外的选择集。
回复

使用道具 举报

9

主题

383

帖子

82

银币

后起之秀

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

铜币
355
发表于 2022-7-6 12:53:45 | 显示全部楼层
试试这个
  1. (ade_ssfree lof)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:31 , Processed in 0.816968 second(s), 72 queries .

© 2020-2025 乐筑天下

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