리습을 쓸 줄만 아는 왕초보입니다.
아래는 예전 하루님께서 올리신 문자 수정 리습입니다.
원본은 (TTB.F) 와 (SSH.R)가 클릭할때마다 교대로 바뀌는 건데요.. 이 건 두 문자 뒤에 아무것도 붙지 않을 때만 바뀌더라구요.. 이걸 문자 뒤에 다른 문자가 있어도 바뀌는 것으로 수정해 주실 순 없는지요..
예를 들면 ‘H200x100-500’ -> ‘H200x100X500’ -> ‘H200x100-500’으로 클릭할 때마다 교대로 바뀌는 식으로요..^^;;
(defun c:asd(/ ss k ttb ssh ed txt len n q @1 var nt #1)
(setq ss (ssget (list (cons 0 “text,mtext”))))
(setq k 0)
(setq ttb “(TTB.F)” ssh “(SSH.R)”)
(repeat (sslength ss)
(setq ed (entget (ssname ss k))
txt (cdr (assoc 1 ed)))
(setq len (strlen txt))
(setq n 1 q nil)
(repeat len
(setq @1 (substr txt n 7))
(if (or (= @1 ssh) (= @1 ttb))
(progn (setq q n) (setq var @1))
);if
(setq n (1+ n))
);repeat
(if (/= q nil)
(progn
(setq #1 (substr txt 1 (- q 1)))
(cond ((= var ssh) (setq nt (strcat #1 ttb)))
((= var ttb) (setq nt (strcat #1 ssh)))
);cond
(entmod (subst (cons 1 nt) (assoc 1 ed) ed))
);progn
);if
(setq k (1+ k))
);repeat
(princ)
);defun
공유