TheSwamp
Code Red => AutoLISP (Vanilla / Visual) => Topic started by: ronjonp on September 14, 2005, 01:02:18 PM
-
How would one go about showing all objects in a drawing who's visibilty is set to false via lisp?
Thanks,
Ron
-
Define show, do you mean temporarilly display or to force visibility on?
-
Sorry,
Force to visibility on.
Thanks
-
This works:
(defun c:so (/ s1 index ent obj)
(command ".undo" "begin")
(if (setq sl (ssget "x"))
(progn
(setq index -1)
(while (< (setq index (1+ index)) (sslength sl))
(setq ent (ssname sl index))
(setq obj (vlax-ename->vla-object ent))
(vlax-put-property obj 'Visible :vlax-true)
)
)
)
(command ".undo" "end")
)
-
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)
)
)
)
-
Thanks Michael. :-)
-
My pleasure.
:kewl: