明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1442|回复: 9

处理后的选择集如何再次利用?

[复制链接]
发表于 2022-12-19 22:18:31 | 显示全部楼层 |阅读模式

  • (defun c:FF()
  •   (setq ss (ssget))
  •   (command "overkill" ss "" "")
  •   (command "pedit" "m" ss "" "j" 0.1 "")
  •   (princ)
  • )
  • 这个代码是有问题的,向各位老师请教一下,这个选择集被处理过了,然后我还想继续利用,该如何操作?
  • 难道是先从ss里面挨个找出每一个单一对象,然后ss被处理后,再经过对比,检查出剩下的是哪一些,再形成一个选择集吗

发表于 2022-12-20 07:17:35 | 显示全部楼层
overkill会合并删除一些对象,是否有新对象产生,我没有试过,你可以测试一下。
如果没有新对象产生,后面一句(command "pedit" "m"。。。应该没有问题,pedit与"PEDITACCEPT"有关,倒是要关注的问题。
 楼主| 发表于 2022-12-20 08:40:33 | 显示全部楼层
自贡黄明儒 发表于 2022-12-20 07:17
overkill会合并删除一些对象,是否有新对象产生,我没有试过,你可以测试一下。
如果没有新对象产生,后面 ...

这个不是重点呀,重点是这个选择集的问题,我也可以先炸开,再删除重复项,再合并多段线,三波操作。
就是说,我对同一个选择集要进行多次的操作,但是每次操作都会对选择集产生影响,要么减少一些对象,要么增加对象,导致处理后的选择集与刚开始定义的选择集,是不一样的。可能也就第一波操作是正常的,第二次或者后面都会不正常
发表于 2022-12-20 09:56:58 | 显示全部楼层
指定两个点,用框选的形式创建选择集。每次处理后再用这两个点框选获取新的选择集?
发表于 2022-12-20 10:48:45 | 显示全部楼层
命令开始entlast标记图元  pedit后 entnext收集图元建选择集
 楼主| 发表于 2022-12-20 11:08:16 | 显示全部楼层
kucha007 发表于 2022-12-20 09:56
指定两个点,用框选的形式创建选择集。每次处理后再用这两个点框选获取新的选择集?

感谢回复,这个算一种方法,一种思路,额外加上一些过滤条件,也能准确的选取到自己想要的对象
发表于 2022-12-20 11:35:19 | 显示全部楼层
未完全测试所有意外情况:
  1. (defun c:TT (/ p1 p2 ss)
  2.   (if
  3.     (and
  4.       (setq p1 (getpoint "\n→指定第一个角点: "))
  5.       (progn
  6.         (initget 32) ;使用虚线框
  7.         (setq p2 (getcorner p1 "\n→指定第二角点: "))
  8.       )
  9.     )
  10.     (progn
  11.       (command "._rectang" p1 p2)
  12.       (entdel (entlast)) ;删除矩形
  13.       (setq ss (ssget "_C" P1 P2)) ;创建选择集
  14.       (command "overkill" ss "" "")
  15.       (setq ss1 (ssget "_C" P1 P2)) ;创建选择集
  16.       (command "pedit" "m" ss1 "" "j" 0.1 "")
  17.     )
  18.   )
  19. )


发表于 2022-12-20 15:40:39 | 显示全部楼层
选择集在变的时候  一般转成图元名列表来处理  不会出问题
发表于 2022-12-21 23:02:18 来自手机 | 显示全部楼层
或者通过ssnamex找出原来的选择集是怎么得到的,然后按搞选择集的时候的坐标范围重新搞选择集,不过这个选择集的坐标范围需要认真研究ssnamex的返回值才能搞定
发表于 2023-7-18 08:41:05 | 显示全部楼层
可以参照下面代码
(setq ss (ssget))
(setq ss1 (ssget "p" '((0 . "CIRCLE"))))
(command "select" ss "")
(setq ss2 (ssget "p" '((0 . "ARC"))))
(command "select" ss "")
(setq ss3 (ssget "p" '((0 . "INSERT"))))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 09:36 , Processed in 0.176484 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表