아래 리습은 제가 사용하는 레이어필터제거 리습인데요.
LFD를 치면 엔터를 한번 더 쳐야하는데
이걸 엔터까지 자동으로 치게 만들려면 어떻게 해야할지 모르겠어서요..;;
(defun rrbI:LayerFiltersDelete (strKeepWC / objXDict)
(vl-load-com)
(vl-catch-all-apply
(function
(lambda ()
(setq objXDict (vla-GetExtensionDictionary
(vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))))))))
(cond (objXDict
(or
(rrbI:DeleteAllXRecs objXDict “ACAD_LAYERFILTERS” strKeepWC)
(rrbI:DeleteAllXRecs objXDict “AcLyDictionary” strKeepWC)))))
(defun rrbI:DeleteAllXRecs (objXDict dictName strKeepWC / objDict i)
(vl-catch-all-apply
(function
(lambda ()
(setq objDict (vla-Item objXDict dictName))
(vlax-for objXRec objDict
(cond ((not (and strKeepWC (wcmatch (vla-Get-Name objXRec) strKeepWC)))
(setq i (1+ (cond (i)
(0))))
(vla-Delete objXRec)))))))
(cond (i (princ (strcat “n” (itoa i) ” filters deleted.”)))))
(defun C:LFD (/ inpKeep)
(setq inpKeep (getstring
“nWildcard mask for filters to keep, or <Enter> to delete all: “))
(rrbI:LayerFiltersDelete (cond ((/= inpKeep “”) inpKeep)))
<Enter>
(princ))