There may be a better way. I don't use ADT.
I do use this to select objects on a particular layer.
First pick an object on th layer you want, as many layers as you want.
Then press Enter, you may now select a group of objects to extract the objects on the
matching layers or press Enter again to use ALL objects on the matching layers.
Then run your command, if the selections are cleared just enter p for previous selection set.
;;=============================================================
;; Sel.lsp by Charles Alan Butler
;; Copyright 2004
;; by Precision Drafting & Design All Rights Reserved.
;; Contact at ab2draft@TampaBay.rr.com
;;
;; Version 1.0 Beta July 23,2004
;;
;; Creates a selection set of objects on a layer(s)
;; User picks objects to determine the layer(s)
;; Then User selects objects for ss or presses enter to
;; get all objects on the selected layer(s)
;; You may select the selection set before starting this
;; routine. Then select the layers to keep in the set
;;=============================================================
(defun c:sel (/ ent lay ss lay:lst lay:prompt ss:first)
;; get anything already selected
(setq ss:first (cadr(ssgetfirst))
ss (ssadd))
(setq lay:lst '())
;; Get user selected layers
(if ss:first
(setq lay:prompt "\nSelect the object to choose layers to keep.")
(setq lay:prompt "\nSelect object for layer filter.")
)
(while (setq ent (entsel lay:prompt))
(setq lay:lst
(cons (setq lay (cdr(assoc 8 (entget (car ent))))) lay:lst))
(prompt (strcat "\n*-* Selected Layer -> " lay))
)
(if (> (length lay:lst) 0); got layers to work with
(progn
(setq lay "")
(foreach itm lay:lst ; combine lay names into one , del string
(setq lay (strcat lay itm ",")))
(setq lay (substr lay 1 (1- (strlen lay)))); remove the last ,
(if ss:first
(while (setq ent (ssname ss:first 0))
(if (member (cdr(assoc 8 (entget ent))) lay:lst)
(ssadd (ssname ss:first 0) ss)
)
(ssdel (ssname ss:first 0) ss:first)
)
(progn
(prompt (strcat "\nOK >>--> Select objects for Selection set or "
"ENTER for All objects on layer(s) " lay))
(if (null (setq ss (ssget (list (cons 8 lay)))))
(setq ss (ssget "_X" (list (cons 8 lay))))
)
)
)
(prompt (strcat "\n" (itoa (sslength ss))
" Object(s) selected on layer(s) " lay
"\nStart an ACAD command."))
(sssetfirst nil ss)
)
)
(princ)
)
(prompt "\nSelect on Layer loaded, Enter Sele to run.")