反向选择
我正在使用lisp,我需要反转用户选择的内容。这意味着,如果文件有A-Z,并且用户选择了A和Z,代码将取消选择A和Z,并选择B-Y。谢谢。 我们在谈论选择集吗? 你把我弄丢了。让我解释一下我将使用它做什么:我的意思是,在模型空间中,在一个有很多东西的图形上工作,我希望能够选择一件我需要的东西,让它反转选择并删除所有我不需要的东西。我只是试着练习我的lisp创建过程,所以我问了一个最小帮助类型的问题。抱歉给你带来了困惑。 没问题,我想你可能在说一个选择集
谢谢你澄清
李 我有这个,但它似乎只适用于第一次使用。。。不知道为什么?
(defun c:test (/ ss i eLst invss)
(setq ss (ssget) i (sslength ss)
eLst (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
invss (ssget "X" (list (cons 410 (getvar "CTAB")))))
(while (not (minusp (setq i (1- i))))
(if (member (cdar (entget (ssname invss i))) eLst)
(ssdel (ssname invss i) invss)))
(sssetfirst nil invss)
(princ))
很危险,但给你!
(defun c:danger (/ ss)
(while (not ss)
(princ "\nSelect Entities To Save..."))
(setq ss (ssget))
(command "_.ERASE" "_All" "_Remove" ss "")
(prin1))
-大卫 这是一个子例程。
;;CAB 03.05.09
;; Subtract ss2 from ss1 & return a selection set
;;ss1 & ss2 must be valid selection sets
(defun ssSubtract (ss1 ss2 / ss3 idx ent)
(setq ss3 ss1
idx (sslength ss2)
)
(while (> (setq idx (1- idx)) -1)
(setq ent (ssname ss2 idx))
(if (ssmemb ent ss3) (ssdel ent ss3))
)
ss3
) 啊!ssmemb!完全忘记了那个函数!:哎呀: 谢谢大家。我还没有机会测试你们提出的各种代码,但我应该可以去。大卫,我明白为什么你会说这很危险,但这是为了编程我们的数控系统。原始文件被锁定了,所以他们无论如何都无法保存,他们所做的就是删除不需要的东西,并将其放在表格图纸上。 任何时候你在没有验证的情况下批量删除对象都被认为是危险的。
页:
[1]