lisp 객체를 선택하면 그 객체 수만큼 R01.R02.R03…R10..R11
이렇게 레이어를 만들고
각각의 객체를 만든 레이어로 변경하는 리습인데 수정 부타드립니다.
객체 선택하면 레이어를 만들어야 되는데 잘 적용이 안되네요.
레이어색상은 랜덤으로 겹치지 않게 만들려고 합니다. 20여가지 정도 색상으로 계속 속 돌아가면서 적용되도 좋을것 같습니다.
(defun c:XXX ( / ss i num obj ename layerName color)
(setq ss (ssget ‘((0 . “LINE,ARC,LWPOLYLINE”)))) ; 객체 선택
(if ss
(progn
(setq num (sslength ss)) ; 선택된 객체 수
(setq i 1)
(while (<= i num)
(setq layerName (strcat “R” (itoa i))) ; R1, R2, R3…
(setq color (+ 1 (random 255))) ; 랜덤 색상 (1~255)
;; 레이어가 존재하지 않으면 생성
(if (not (tblsearch “LAYER” layerName))
(entmake (list (cons 0 “LAYER”) (cons 100 “AcDbSymbolTableRecord”)
(cons 100 “AcDbLayerTableRecord”) (cons 2 layerName)
(cons 62 color))) ; 레이어 생성 및 색상 지정
)
;; 객체 선택 및 레이어 변경
(setq ename (ssname ss (- i 1))) ; 객체 선택
(setq obj (entget ename)) ; 객체 정보 가져오기
(setq obj (subst (cons 8 layerName) (assoc 8 obj) obj)) ; 객체의 레이어 변경
(entmod obj) ; 변경된 정보 적용
(setq i (1+ i)) ; 다음 객체 처리
)
)
)
(princ)
)