레이어를 선택한 부분만 빼고 점부 잠그거나 전부 잠금을 해제하고 싶습니다.
인터넷에서 무료로 받은
<Layer v1.1- 레이어 컨트럴 함수>
리습에서 필요한 부분만 쓰려고 가져왔는데요.
위 리습에서 43번은 잘 되는데, 45번이 되지 않습니다.
명령어 창에 이런식으로 애러가 뜨네요.
혹시 이유를 알 수 있을까요?
리습은 다음과 같습니다.
(defun c:45(/ cla ss k la-lis ed la k)
(princ “n ::::: Layer Except Lock :::::”)
(setq cla (getvar “clayer”))
(setq ss (ssget))
(setq k 0 la-lis ‘())
(setvar “cmdecho” 0)
(repeat (sslength ss)
(setq ed (entget (ssname ss k))
la (cdr (assoc 8 ed)))
(setq la-lis (append la-lis (list la)))
(setq k (1+ k))
) ;repeat
(setq la-lis (str_memb la-lis))
(command “undo” “be”)
(command “layer” “lo” “*” “”)
(foreach x la-lis (progn
(command “layer” “u” x “”)
)
(princ “n[“)(princ x)(princ “] layer is unlock.”)
) ;foreach
(command “undo” “e”)
(princ “n ::::: Layer Except Lock completion :::::”)
(princ)
) ;defun
제가 쓰는 컴은 윈11, 오토캐드 25입니다.
(defun remove-duplicates (lst)
(defun remove-item (item lst)
(cond ((null lst) nil)
((equal item (car lst)) (remove-item item (cdr lst)))
(t (cons (car lst) (remove-item item (cdr lst)))))
)
(if lst
(cons (car lst) (remove-duplicates (remove-item (car lst) (cdr lst))))
nil
)
)
(defun c:test (/ cla ss k la-lis ed la)
(princ “n ::::: Layer Except Lock :::::”)
(setq cla (getvar “clayer”))
(setq ss (ssget))
(setq k 0 la-lis ‘())
(setvar “cmdecho” 0)
(repeat (sslength ss)
(setq ed (entget (ssname ss k))
la (cdr (assoc 8 ed)))
(setq la-lis (append la-lis (list la)))
(setq k (1+ k))
) ;repeat
(setq la-lis (remove-duplicates la-lis))
(command “undo” “be”)
(command “layer” “lo” “*” “”)
(foreach x la-lis
(progn
(command “layer” “u” x “”)
(princ (strcat “n[” x “] layer is unlocked.”))
)
) ;foreach
(command “undo” “e”)
(princ “n ::::: Layer Except Lock completion :::::”)
(princ)
) ;defunfun
여기 구문 올리니깐 기호가 빠지네요…매일주소 남겨주세요.//
앗 메일은 nayua690@naver.com입니다. 어떤 부분 기호가 자주 빠지시나요?