用于锁定的Copytolayer命令
我希望能够使用COPYTOLAYER命令将锁定层复制到新层。我试图通过在COPYTOLAYER命令之前和之后解锁层来解决这个问题。
当我尝试复制锁定层时,会出现这样的错误:
代码如下:
(vl-load-com)
;; PROBLEM
;; AutoCAD gives unhandled exception error with eOnLockedLayer.
;; TO ADD
;; Change this to have undo handling
(defun c:Lay_Copy_Locked (/ layUlist laydata ss)
(setq doc (vla-get-ActiveDocument (vlax-get-Acad-Object)))
; Unlock all layers - https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/unlocking-layers-is-painfully-slow/m-p/2881866#M294136
(vlax-for item (vla-get-layers doc)
(if (= (vlax-get-property item "Lock") :vlax-true)
(progn
(setq Locked_Layers (cons item Locked_Layers)) ; set variable "locked_layers" to all locked layers.
(vlax-put-property item "Lock" :vlax-false) ; unlock each layer if it is locked.
) ; end progn
) ; end if
) ; end vlax
;; Copy to layer
(if (setq ss (ssget "_:L"))
(command "._-copytolayer" ss "")
) ; end if
; If any layers were locked at the beginning, lock them again. -https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/unlocking-layers-is-painfully-slow/m-p/2881866#M294136
(if Locked_Layers
(mapcar '(lambda (x) (vlax-put-property x "Lock" :vlax-true)) Locked_Layers)
) ; end if
(princ)
) ; defun
(c:Lay_Copy_Locked)
页:
[1]