Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 1

;;; Select Similar

;;; (based on a command found in a few versions of AutoCAD)


;;; written by Adam Wuellner
;;; all rights released

;--------> MAIN ROUTINE


(defun c:selsim (/ ss1 i ent filter_list type-layer filter sstemp)
(if (not (setq ss1 (cadr (ssgetfirst))))
(setq ss1 (ssget)))
(setq i 0
filter_list '())
(repeat (sslength ss1)
(setq ent (entget (ssname ss1 i))
i (1+ i))
(setq type-layer (list (assoc 0 ent) (assoc 8 ent)))
(if (not (member type-layer filter_list))
(setq filter_list (cons type-layer filter_list))))
(foreach filter filter_list
(princ (strcat "selecting all " (cdar filter) " entities on layer " (cdadr
filter) "...\n"))
(setq sstemp (ssget "X" filter))
(setq ss1 (ss:union ss1 sstemp)
sstemp nil))
(sssetfirst nil ss1)
(princ))

;--------> UNION
(defun ss:union (ss1 ss2 / ename ss-smaller ss-larger c)
(cond ((and ss1 ss2)
(setq c 0)
(if (< (sslength ss1) (sslength ss2))
(setq ss-smaller ss1
ss-larger ss2)
(setq ss-larger ss1
ss-smaller ss2))
(while (< c (sslength ss-smaller))
(setq ename (ssname ss-smaller c)
c (1+ c))
(if (not (ssmemb ename ss-larger))
(ssadd ename ss-larger)))
ss-larger)
(ss1 ss1)
(ss2 ss2)
(t nil)))

You might also like