Here is a version of lock\unlock viewports:
;;UNLOCK OR LOCK ALL VPORTS
(defun c:vplockall (/ X lck prmpt ent clr clr2 obj)
(vl-load-com)
(initget 0 "Lock Unlock")
(if (not *default*)
(setq *default* "Lock")
)
(setq
X (cond
((getkword
(strcat
"\n (L)ock or (U)nlock all viewports? <<Hit Enter for "
*default*
">>: "
)
)
)
(*default*)
)
)
(setq *default* X)
(cond ((= X "Lock")
(setq lck :vlax-true
prmpt "locked..."
clr 5
clr2 acBlue
)
)
((= X "Unlock")
(setq lck :vlax-false
prmpt "unlocked..."
clr 1
clr2 acRed
)
)
)
(vlax-for lay (vla-get-layouts
(vla-get-activedocument
(vlax-get-acad-object)
)
)
(if (eq :vlax-false (vla-get-modeltype lay))
(vlax-for ent (vla-get-block lay)
(if (= (vla-get-objectname ent) "AcDbViewport")
(progn
(vla-put-displaylocked ent lck)
(vla-put-color ent clr)
(if (setq
obj (assoc 340 (entget (vlax-vla-object->ename ent)))
)
(vla-put-color (vlax-ename->vla-object (cdr obj)) clr2)
)
)
)
)
)
)
(princ (strcat "\n All viewports have been " prmpt))
(princ)
)