글자 내용에 따른 색을 바꿔주는 리습을 구합니다.
컨텐츠 정보
- 336 조회
- 7 댓글
- 0 추천
- 0 비추천
- 목록
본문
예를 들어 글자에 D10을 포함하면 색상을 100, D13을 포함하면 색상을 130, D16을 포함하면 색상을 160으로 바꿔주는 리습을 원합니다.
각각 클릭이아니라 전체를 드래그해서 누르면 3가지 글자에 따라 다 각각의 색상으로 변환됬으면 합니다.
고수분들의 조언 부탁드립니다.
관련자료
gogohh3님의 댓글
(defun c:CSS ( / *CATCH_ERROR *OBJ_ENAME *OBJ_LAYER *OBJ_SSET *RPT_COUNT)
(princ "n 색상을 변경할 개체 선택 : ") (setq *Catch_Error (vl-catch-all-apply '(lambda () ;; (setq *Obj_SSet (ssget)) ) ) )
(if (vl-catch-all-error-p *Catch_Error) (progn (vl-exit-with-error "") ) )
(setvar "cmdecho" 0) (setq *Rpt_Count 0) (repeat (sslength *Obj_SSet)
(setq *Obj_Ename (ssname *Obj_SSet *Rpt_Count)) (setq *Obj_Layer (cdr (assoc 8 (entget *Obj_Ename))))
(cond ((= (strcase *Obj_Layer) "ZHD10″) (command "chprop" *Obj_Ename "" "c" 100 "")) ((= (strcase *Obj_Layer) "ZSHD10″) (command "chprop" *Obj_Ename "" "c" 100 "")) ((= (strcase *Obj_Layer) "ZUHD10″) (command "chprop" *Obj_Ename "" "c" 100 "")) ((= (strcase *Obj_Layer) "ZHD13″) (command "chprop" *Obj_Ename "" "c" 130 "")) ((= (strcase *Obj_Layer) "ZSHD13″) (command "chprop" *Obj_Ename "" "c" 130 "")) ((= (strcase *Obj_Layer) "ZUHD13″) (command "chprop" *Obj_Ename "" "c" 30 "")) ((= (strcase *Obj_Layer) "ZHD16″) (command "chprop" *Obj_Ename "" "c" 160 "")) ((= (strcase *Obj_Layer) "ZSHD16″) (command "chprop" *Obj_Ename "" "c" 160 "")) ((= (strcase *Obj_Layer) "ZUHD16″) (command "chprop" *Obj_Ename "" "c" 160 "")) ((= (strcase *Obj_Layer) "ZHD19″) (command "chprop" *Obj_Ename "" "c" 190 "")) ((= (strcase *Obj_Layer) "ZSHD19″) (command "chprop" *Obj_Ename "" "c" 190 "")) ((= (strcase *Obj_Layer) "ZUHD19″) (command "chprop" *Obj_Ename "" "c" 190 "")) ((= (strcase *Obj_Layer) "ZHD22″) (command "chprop" *Obj_Ename "" "c" 220 "")) ((= (strcase *Obj_Layer) "ZSHD22″) (command "chprop" *Obj_Ename "" "c" 220 "")) ((= (strcase *Obj_Layer) "ZUHD22″) (command "chprop" *Obj_Ename "" "c" 220 "")) ((= (strcase *Obj_Layer) "ZHD25″) (command "chprop" *Obj_Ename "" "c" 20 "")) ((= (strcase *Obj_Layer) "ZSHD25″) (command "chprop" *Obj_Ename "" "c" 20 "")) ((= (strcase *Obj_Layer) "ZUHD25″) (command "chprop" *Obj_Ename "" "c" 20 "")) )
(setq *Rpt_Count (1+ *Rpt_Count)) )
(princ) ) 이것도 똑같이 다중으로 선택해서 레이어에 따라 색상을 전환하는건데 이건 다중으로 선택해도 색상이바뀌던데 이런 폼으로 문자에 따른 색상 전환은 불가능할까요 ㅠㅠ
조용!!님의 댓글
근본 목적이 뭡니까.. 이런 질문의 경우.. 연관 질문이 오는데.. 답변자는 지칩니다.. ^_^;;;
(defun c:test () (setq se (ssget '((0 . "TEXT")(1 . "D*")))) (setq idx -1) (repeat (sslength se) (setq name (ssname se (setq idx (1+ idx)))) (setq ent (entget name)) (setq cd1 (cdr (assoc 1 ent))) (setq i (substr cd1 2)) (setq ix10 (* 10 (atoi i))) (setq as62 (cdr (assoc 62 ent))) (if as62 (progn (entmod (subst (cons 62 ix10) as62 ent)) ) (progn (entmod (append ent (append (list (cons 62 ix10))))) ) ) ) (princ) )