WARNING!! WARNING!!
This is yet another erasing routine but there is a warning that goes along with it. You don’t actually select anything. Instead, whatever your cursor hovers over gets erased. So if you don’t have a steady hand, then this routine will be dangerous for you… HAHA!!
Written by the CAB
~enjoy
;; modified by CAB 05.08.07
(defun C:ERASER (/ *error* pt ent usrpb)
(defun *error* (msg)
(if (not
(member msg '("console break" "Function cancelled" "quit / exit abort" "" nil)))
(princ (strcat "\nError: " msg))
) ; if
(and usrpb (setvar "pickbox" usrpb))
(princ)
) ; end error function
(setq usrpb (getvar "pickbox"))
(setvar "pickbox" 3)
(command "_.undo" "_begin")
(while (listp (setq pt (cadr (grread T 4 2))))
(if (setq ent (car (nentselp pt)))
(progn
(if (= (cdr(assoc 0 (entget ent))) "VERTEX")
(setq ent (cdr(assoc 330 (entget ent)))
))
(print)
(princ (entdel ent))
)
)
) ; while
(command "_.undo" "_end")
(*error* nil)
(princ)
)

instead of erase objects can you create a AutoLISP that will hide objects that you hover over.