Try this-
;Tip1744: CLEAR.LSP Clear duplicates (c)2001, Andrzej Gumula
(defun DXF (A) (cdr (assoc A (entget ONE)))) ;end dxf
(defun COMPLEX ()
(while (not (wcmatch (DXF 0) "*END*"))
(setq ONE (entnext ONE)
ELEM (append ELEM (list ONE)))
(CHECK)) ;end while
) ;end complex
(defun CORECT (A)
(cond ((= (type (cdr A)) 'list)
(cons (car A) (mapcar '(lambda (X) (atof (rtos X 2 8))) (cdr A))))
((member (type (cdr A)) (list 'INT 'REAL))
(cons (car A) (mapcar '(lambda (X) (atof (rtos X 2 8))) (list (cdr A)))))
(t A))) ;end corect
(defun CHECK ()
(foreach X (entget ONE)
(if (not (member (car X) '(-2 -1 5 6 8 62 100)))
(setq TEMP (cons (CORECT X) TEMP))))) ;end check
;(defun c:clear (/ CM LISTA NEW ONE TEMP OLD ZNACZNIK)
(defun C:CLEAR ()
(setq CM (getvar "cmdecho")
LISTA NIL
NEW NIL
ONE NIL
TEMP NIL
OLD (ssget "_X"))
(setvar "cmdecho" 0)
(cond
(OLD
(command "_-layer" "_u" "*" "")
(prompt "\nDrawing clearing. ")
(prompt "\nPlease wait... \n")
(while (cond (ONE (setq ONE (entnext ONE)))
(t (setq ONE (entnext))))
(setq ELEM (append ELEM (list ONE)))
(CHECK)
(if (or (and (= (DXF 0) "INSERT") (= (DXF 66) '1)) (= (DXF 0) "POLYLINE"))
(COMPLEX))
(if (member TEMP LISTA)
(foreach X ELEM (entdel X)))
(setq LISTA (cons TEMP LISTA)
TEMP NIL
ELEM NIL)
(cond (ZNACZNIK (setq ZNACZNIK NIL) (princ "\r\\"))
(t (setq ZNACZNIK (princ "\r/"))))) ;end while
(prompt (strcat "\nNumber of elements before clearing- " (itoa (sslength OLD))))
(prompt
(strcat "\nNumber of elements after clearing- " (itoa (sslength (ssget "_X"))))))
(t (prompt "\nFound zero elements. "))) ;end cond
(setvar "cmdecho" CM)
(princ)) ;end file
(prompt "\nLoaded new command CLEAR. ")
(princ)