尝试以下快速编写的代码:
- (defun c:eraseall ( / a b i l r s )
-
- (setq l "SAMPLE") ;; Layer to retain
-
- (while (setq a (tblnext "block" (null a)))
- (setq b (tblobjname "block" (cdr (assoc 2 a))))
- (while (and b (/= l (strcase (cdr (assoc 8 (entget b))))))
- (setq b (entnext b))
- )
- (if b (setq r (vl-list* "," (cdr (assoc 2 a)) r)))
- )
- (if (setq s
- (ssget "_X"
- (cons (cons 8 (strcat "~" l))
- (if r
- (list
- '(-4 . "<NOT")
- '(-4 . "<AND")
- '(0 . "INSERT")
- (cons 2 (apply 'strcat (cdr r)))
- '(-4 . "AND>")
- '(-4 . "NOT>")
- )
- )
- )
- )
- )
- (repeat (setq i (sslength s))
- (entdel (ssname s (setq i (1- i))))
- )
- (princ "\nNo objects found to erase.")
- )
- (princ)
- )
|