Bloccare le viewport
Capita troppo spesso che uno inguai un layout perché le viewport non erano bloccate: uno entra per ritoccare un segno sbagliato e bang! si fotte l'impaginazione. Peggio ancora se avete UCSFOLLOW impostata su 1 (allora può anche ruotare e zoomare a estensione…). Bloccatele sempre, e se vi fa fatica selezionarle e poi cliccare il lucchetto in basso a destra (o la proprietà nel pannello dell'oggetto) leggete il seguito.
Dato che si può dare come riga di comando il blocca tutte le viewport nel layout corrente si può creare una macro che lo faccia con un clik (studiate il comando MV - make viewport e le sue opzioni).
^C^C_mview;l;on;all;;
Non avrete però il controllo sulle viewport in altri layout, solo quello corrente. Per per farlo contemporaneamente in tutte le viewport occorre un autolisp (e quindi la versione full), come quello proposto dal nostro amato lee-mac qui sotto:
; By Lee-Mac found at the Augi forums https://autocadtips1.com/2011/06/21/autolisp-viewport-lock-unlock/
;; Lock Selected Viewport
;; VPL – Lock selected viewport
;; VPU – Unlock selected viewport
;; VPLA – Lock ALL viewports
;; VPUA – Unlock ALL viewports
(vl-load-com)
(defun c:vpl nil
(if (SSVPLock (ssget "_+.:E:S:L" '((0 . "VIEWPORT"))) :vlax-true)
(princ "\n--> Viewport Locked.")
)
(princ)
)
;; Unlock Selected Viewport
(defun c:vpu nil
(if (SSVPLock (ssget "_+.:E:S:L" '((0 . "VIEWPORT"))) :vlax-false)
(princ "\n--> Viewport Unlocked.")
)
(princ)
)
;; Lock All Viewports
(defun c:vpla nil
(SSVPLock (ssget "_X" '((0 . "VIEWPORT"))) :vlax-true)
(princ "\n--> All Viewports Locked.")
(princ)
)
;; Unlock All Viewports
(defun c:vpua nil ;; changed "VPLU" to "VPUA" to be consistant with the above function
(SSVPLock (ssget "_X" '((0 . "VIEWPORT"))) :vlax-false)
(princ "\n--> All Viewports UnLocked.")
(princ)
)
(defun SSVPLock ( ss lock / i )
(if ss
(repeat (setq i (sslength ss))
(vla-put-displaylocked (vlax-ename->vla-object (ssname ss (setq i (1- i)))) lock) t
)
)
)
Per l'utilizzo di autolisp vi rinvio sempre a queste istruzioni.