본문 바로가기
autocad

문장 내부에 마지막 숫자만 무조건 1 증가; 감소

by kmlab 2025. 9. 4.

;; 문장 안에 있는 마지막 숫자만 무조건 1 증가; 1감소
;; AFC.1 을 'np' 명령으로 선택하면 AFC.2; 'nm' 명령으로 선택하면 AFC.0으로 수정.
;; 날짜를 2025 .09. 04 를 선택하면 2025. 09. 05 또는 03 으로 수정함.
;; 숫자가 중간에 있어도 가능 "평면도(3)" → "평면도(4)" | "평면도(2)"
;; 주의) 9 증가는 10 이 아니고 0 입니다; 0 감소는 -1 이 아니고 9 입니다.

LAST_NUMBER_UPdn.lsp
0.00MB

;; +- 1 The Last Numer
(defun KM:POSASC ( _STR _N / str asc )
(setq str _STR n _N)
(setq asc (ascii (substr str n 1)))
)

(defun KM:getNUM ( / )
(setq strdxf (entget (car (entsel))))
(setq str (cdr (assoc 1 strdxf)))
(setq len (strlen str))
(setq _STR str pos len)
)

(defun KM:LASTUPd ( _opt / )
(KM:getNUM)
(setq op _opt)
(setq asc 58)
(while (not (< 47 asc 58))
(setq asc (KM:POSASC _STR pos))
(setq pos (1- pos))
)
(setq strL (substr str 1 pos))
(setq strN (substr str (+ pos 1) 1))
(setq strR (substr str (+ pos 2)))
(cond 
  ((= op "+")
   (if (= asc 57)
   (setq strN "0")
   (setq strN (chr (+ (ascii strN) 1)))
  ))
  ((= op "-")
   (if (= asc 48)
   (setq strN "9")
   (setq strN (chr (- (ascii strN) 1)))
  ))
)
(setq Nstr (strcat strL strN strR))
) 

(defun KM:LAUPd ( _opr / )
(setq opr _opr)
(setq Nstr (KM:LASTUPd opr))
(setq NewTXT (subst (cons 1 Nstr) (assoc 1 strdxf) strdxf))
(entmod NewTXT)
(princ)
) 

(defun c:np ( / ) ; number +
  (KM:LAUPd "+") 
)
(defun c:nm ( / ) ; number -
  (KM:LAUPd "-") 
)

 

반응형

'autocad' 카테고리의 다른 글

선택한 것들 bylayer 색상, '0' 레이어로 변경 (SUBST multi CONS)  (0) 2025.09.09
radian  (0) 2025.09.08
대소문자 바꾸기  (0) 2025.09.03
Find Centroid of reg.Triangle  (0) 2025.09.02
엔티티 수정; Modify entity(entmod)  (0) 2025.08.26