;; This routine is amended from a similar one found on web (www.cad-manager.com) ;; To test this routine, first you need to create a layer name "draft_only" in current drawing ;; Then add some entities on this layer.
(vl-load-com)
(defun DoThisAfterCommand (Caller CmdSet) (if (= (car Cmdset) "PLOT") (FreezeLayer "draft_only") ) (princ) )
(defun DoThisBeforeCommand (Caller CmdSet) (if (= (car Cmdset) "PLOT") (ThawLayer "draft_only") ) (princ) )
(setq MyReactor1 (vlr-command-reactor nil '((:vlr-commandWillStart . DoThisBeforeCommand) (:vlr-CommandEnded . DoThisAfterCommand) (:vlr-CommandCancelled . DoThisAfterCommand) ) ) )
(defun Clear_My_Reactors () (if (and MyReactor1 (vlr-added-p MyReactor1)) (vlr-remove MyReactor1) ) )
(defun Clear_All_Reactors (/ TMP) (vlr-remove-all :vlr-Command-reactor) )
(defun FreezeLayer (layname / layobj) (setq layobj (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) layname)) (vla-put-freeze layobj :vlax-true) ) (defun ThawLayer (layname / layobj) (setq layobj (vla-item (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) layname)) (vla-put-freeze layobj :vlax-false) ) |