At long last I think I see what you want.
Try this one.
Code:
;; CAB 01/06/06
(defun c:ss- (/ ss_exclude ss ss_keep)
(defun ss->lst (ss / i ename result)
(and ss ; must test for nil
(setq i -1)
(while (setq ename (ssname ss (setq i (1+ i))))
(setq result (cons ename result))
)
)
result
)
(if (or (setq ss_exclude (cadr (ssgetfirst)))
(setq ss_exclude (ssget "P")))
(progn
(sssetfirst nil) ; clear the selection set
(prompt "nSelect all items to be considered.")
(setq ss (ssget)
ss_keep (ssadd)
)
(and ss ; must test for nil
(setq ss_list (ss->lst ss_exclude))
(setq i -1)
(while (setq ename (ssname ss (setq i (1+ i))))
(if (not (member ename ss_list))
(progn
(ssadd ename ss_keep)
)
)
)
)
(if (and ss_keep (> (sslength ss_keep) 0))
(progn
(sssetfirst ss_keep ss_keep)
(prompt "nSelection set created use Previous to use.")
)
)
) ; progn
(prompt "n*** ERROR, you must select items to exclude first.")
)
(princ)
)
(prompt "nSelection set subtract loaded, Enter ss- to run.")
(princ)