“X-SSP-군포전기실 입면$0$-?????” 이렇게 됀 형식의 레이어에 “X-SSP-군포전기실 입면$0$” 여기까지 버리고 “-????”이부분만 따와서 rename 으로 수정했으면 합니다..레이어명 중간에 “$0$” 경계로 “-????” 부분은 따와서 사용 할거고 $0$포함한 이전은 삭제해서 rename 할생각입니다. .rename으로 하려는 이유는 블럭내에 해당 레이어들이 있는데 블럭을 해체하면 안돼는 상황입니다. 해서 rename밖에 생각이 안나 리습을 만들었는데 허접한 실력이라 마땅한 방법을 못찾겠네요… 고수님들 해결방법 좀 알려주세요.
(defun c:cng_layer1(/ layer_nm layer_nm_len ss has_layer ld layer_nm_len1 layer_eq layer_chg layer_nm_len1 sss n_txt)
(setq layer_nm “X-SSP-군포전기실 입면$0$“)
(setq layer_nm “X-SSP-군포전기실 입면$0$“)
:::::이부분 입니다…
(setq layer_nm_len (strlen layer_nm))
(setq ss (+ layer_nm_len 1))
(setq has_layer nil)
(setq ld
(tblnext “LAYER” T)
)
(setq layer_nm_len (strlen layer_nm))
(setq ss (+ layer_nm_len 1))
(setq has_layer nil)
(setq ld
(tblnext “LAYER” T)
)
(while ld
(setq layer_name (cdr (assoc 2 ld)))
(setq layer_nm_len1 (strlen layer_name))
(setq layer_eq (substr layer_name ss layer_nm_len1));;;layer_nm의 ss 번째 이후 레이어명 따오기
(setq layer_chg (substr layer_name 1 layer_nm_len));;;layer_name의 1번째부터 layer_nm_len까지 레이어명 따오기
(setq layer_nm_len1 (strlen layer_eq))
(setq sss “-XXXX”)
(setq n_txt (strcat layer_eq sss))
(if (= layer_chg layer_nm)
(Progn
(COMMAND “-rename” “la” layer_name n_txt)
(COMMAND “-rename” “la” layer_name n_txt)
(setq has_layer T)
)
)
(setq ld (tblnext “LAYER”))
)
)
)
(setq ld (tblnext “LAYER”))
)
(PRINC)
)
그 경우는 다른 레이어의 있는 객체의 레이어를 중복대상으로 옮기는 작업도 필요해보이네요…
설명이 부족해서 수정했습니다..”-????”부분으로 rename 하는겁니다.
(defun c:test (/ layer_name ld)
(setq ld (tblnext “LAYER” T) )
(while ld
(if (wcmatch (setq layer_name (cdr (assoc 2 ld))) “”X-SSP-군포전기실 입면$0$*”)
(COMMAND “-rename” “la” layer_name (substr layer_name 25))
)
(setq ld (tblnext “LAYER”))
)
(PRINC)
)