That should do it.
For fun I did this one, which will also ensure attributes / vertices are visible ---
(defun c:AllVisible ( / StartUndo Children ForceVisibility Main )
(defun StartUndo ( document / enabled )
(cond
( (setq enabled (< 0 (getvar "undoctl")))
(while (eq 8 (logand 8 (getvar "undoctl")))
(vla-endundomark document)
)
(vla-startundomark document)
)
)
enabled
)
(defun Children ( ename / result )
(if (assoc 66 (entget ename))
(reverse
(while
(/= "SEQEND"
(cdr
(assoc 0
(entget
(setq ename
(entnext ename)
)
)
)
)
)
(setq result (cons ename result))
)
)
)
)
(defun ForceVisibility ( ename )
(vl-catch-all-apply
;; trap any errors, like
;; object's layer locked
'(lambda ()
(vla-put-visible
(vlax-ename->vla-object object)
:vlax-true
)
)
)
;; recursive call for child entities,
;; like vertices and attributes
(foreach child (Children ename)
(ForceVisibility child)
)
)
(defun Main ( document / ss i undoflag )
(cond
( (setq ss (ssget "x"))
(setq undoflag (StartUndo document))
(repeat (setq i (sslength ss))
(ForceVisibility
(ssname ss
(setq i (1- i))
)
)
)
(if undoflag (vla-endundomark document))
)
)
(princ)
)
(Main
(vla-get-activedocument
(vlax-get-acad-object)
)
)
)