(defun c:test ( / ext sel sss )
(while (null ext)
(setvar 'errno 0)
(if sss (initget "Undo"))
(setq sel (entsel (strcat "\nPick Object to Erase" (if sss " : " ": "))))
(cond
( (= 7 (getvar 'errno))
(princ "\nMissed, try again.")
)
( (= "Undo" sel)
(if (> (sslength sss) 0)
(repeat (sslength sss)
(entdel (ssname sss 0))
(ssdel (ssname sss 0) sss)
)
)
)
( (= 'ename (type (car sel)))
(setq sss (ssget "x" (list (cons 8 (cdr (assoc 8 (entget (car sel))))))))
(command "erase" sss "")
)
( (setq ext t) )
)
)
(princ)
) 是的,你说的没错,Mircea代码现在正在工作,但我还有一个问题,那就是它只会用一个选择集撤消,
如果我选择了多个不工作的。。 这是因为sss变量在每次选择操作时被重置-尝试将以前的内容存储到列表中,并将其解析为撤消。
请再次帮助我更新您的代码 这是我的建议:
(defun c:test ( / ext sel sss listOfSelSets )
(while (null ext)
(setvar 'errno 0)
(if sss (initget "Undo"))
(setq sel (entsel (strcat "\nPick Object to Erase" (if sss " : " ": "))))
(cond
((= 7 (getvar 'errno))
(princ "\nMissed, try again.")
)
((= "Undo" sel)
(if listOfSelSets
(progn
(setq sss (car listOfSelSets)
listOfSelSets (cdr listOfSelSets))
(repeat (sslength sss)
(entdel (ssname sss 0))
(ssdel (ssname sss 0) sss)
)
)
(prompt "\nNothing to undo...")
)
)
((= 'ename (type (car sel)))
(setq sss (ssget "x" (list (cons 8 (cdr (assoc 8 (entget (car sel))))))))
(command "erase" sss "")
(setq listOfSelSets (cons sss
listOfSelSets))
)
((setq ext t))
)
)
(princ)
) 哇!非常感谢米尔恰,现在我明白了
再次感谢你的帮助
当做
甘尼什·谢蒂 完全欢迎你,甘尼什!
页:
1
[2]