处理后的选择集如何再次利用?
[*](defun c:FF()
[*](setq ss (ssget))
[*](command "overkill" ss "" "")
[*](command "pedit" "m" ss "" "j" 0.1 "")
[*](princ)
[*])
[*]这个代码是有问题的,向各位老师请教一下,这个选择集被处理过了,然后我还想继续利用,该如何操作?
[*]难道是先从ss里面挨个找出每一个单一对象,然后ss被处理后,再经过对比,检查出剩下的是哪一些,再形成一个选择集吗
overkill会合并删除一些对象,是否有新对象产生,我没有试过,你可以测试一下。
如果没有新对象产生,后面一句(command "pedit" "m"。。。应该没有问题,pedit与"PEDITACCEPT"有关,倒是要关注的问题。 自贡黄明儒 发表于 2022-12-20 07:17
overkill会合并删除一些对象,是否有新对象产生,我没有试过,你可以测试一下。
如果没有新对象产生,后面 ...
这个不是重点呀,重点是这个选择集的问题,我也可以先炸开,再删除重复项,再合并多段线,三波操作。
就是说,我对同一个选择集要进行多次的操作,但是每次操作都会对选择集产生影响,要么减少一些对象,要么增加对象,导致处理后的选择集与刚开始定义的选择集,是不一样的。可能也就第一波操作是正常的,第二次或者后面都会不正常 指定两个点,用框选的形式创建选择集。每次处理后再用这两个点框选获取新的选择集? 命令开始entlast标记图元pedit后 entnext收集图元建选择集 kucha007 发表于 2022-12-20 09:56
指定两个点,用框选的形式创建选择集。每次处理后再用这两个点框选获取新的选择集?
感谢回复,这个算一种方法,一种思路,额外加上一些过滤条件,也能准确的选取到自己想要的对象 未完全测试所有意外情况:(defun c:TT (/ p1 p2 ss)
(if
(and
(setq p1 (getpoint "\n→指定第一个角点: "))
(progn
(initget 32) ;使用虚线框
(setq p2 (getcorner p1 "\n→指定第二角点: "))
)
)
(progn
(command "._rectang" p1 p2)
(entdel (entlast)) ;删除矩形
(setq ss (ssget "_C" P1 P2)) ;创建选择集
(command "overkill" ss "" "")
(setq ss1 (ssget "_C" P1 P2)) ;创建选择集
(command "pedit" "m" ss1 "" "j" 0.1 "")
)
)
)
选择集在变的时候一般转成图元名列表来处理不会出问题 或者通过ssnamex找出原来的选择集是怎么得到的,然后按搞选择集的时候的坐标范围重新搞选择集,不过这个选择集的坐标范围需要认真研究ssnamex的返回值才能搞定 可以参照下面代码
(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"))))
页:
[1]