오토캐드 연속 번호 증가 리습 (NINC)

기준 문자를 하나 선택하면 클릭하는 위치마다 끝 번호를 증가시키며 복사합니다. P-001 → P-002처럼 접두어와 자리수(0 채움)를 그대로 유지해 도번·부재번호·측점 번호 매기기가 몇 초에 끝납니다.

코드 전문 공개 · 다운로드 파일과 100% 동일 · 출처 표기 후 자유 사용

복사하고 더블클릭해서 고치고 있다면

부재 번호, 실 번호, 측점 번호, 상세도 번호처럼 연속 번호를 붙이는 작업은 보통 문자를 복사한 뒤 하나씩 더블클릭해서 고치는 방식으로 합니다. 열 개면 참을 만하지만 백 개면 그 자체가 하나의 일이 됩니다.

NINC는 기준 문자를 한 번 선택한 뒤, 클릭하는 위치마다 끝 번호를 증가시킨 복사본을 만들어 줍니다. 문자 스타일·높이·레이어는 기준 문자를 그대로 따릅니다.

동작 방식과 주의할 점

  • 문자 끝의 숫자만 증가합니다. "P-001"은 "P-"를 유지한 채 001 부분이 커지고, 자리수도 유지됩니다(001 → 002 → … → 010).
  • 증가 간격을 바꿀 수 있습니다. 2를 입력하면 P-001 → P-003 → P-005, 음수를 입력하면 역순 번호도 가능합니다.
  • 한 줄 문자(TEXT) 전용입니다. 여러 줄 문자(MTEXT)는 지원하지 않습니다.
  • 실수했더라도 걱정 없습니다. 전체 작업이 UNDO 그룹으로 묶여 있어 U 한 번이면 이번에 만든 번호가 모두 취소됩니다.

이런 작업에 씁니다

  • 구조: 기둥·보 부재 번호(C1, C2… / G-01, G-02…) 배치
  • 건축: 실 번호, 창호 번호(W-01…), 상세도 번호 매기기
  • 토목: 측점 번호, 관정·맨홀 번호 연속 표기
HOW TO USE

사용 순서

리습 로드가 처음이라면
  1. 1

    APPLOAD 명령으로 내려받은 number-increment.lsp를 로드합니다.

  2. 2

    명령행에 NINC 를 입력합니다.

  3. 3

    기준이 될 번호 문자(예: P-001)를 클릭해 선택합니다.

  4. 4

    증가 간격을 입력하거나 Enter로 기본값 1을 사용합니다.

  5. 5

    다음 번호를 놓을 위치를 연속 클릭하고, 끝나면 Enter로 종료합니다.

SOURCE

코드 전문

명령 NINC

다운로드 파일은 아래 코드와 100% 동일합니다. 붙여넣기보다 파일 다운로드 후 APPLOAD 로드를 권장합니다.

.lsp 다운로드
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: NINC
;; 기능: 기준 문자의 끝 번호를 증가시키며 클릭 위치에 연속 복사 (P-001 → P-002 …)
;; 출처: https://www.autocats.co.kr/lisp/number-increment
;; 버전: 1.0 (2026-07-20)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 + UNDO 그룹(한 번의 U로 전체 취소), 파괴적 동작 없음
;;; ------------------------------------------------------------

(defun c:NINC (/ *error* ninc-split ninc-pad oldecho undo-open sel ent data raw
                 pair head tail num width step idx pt newstr newdata)

  (defun *error* (msg)
    (if undo-open
      (progn (command "_.UNDO" "_End") (setq undo-open nil)))
    (if oldecho (setvar "CMDECHO" oldecho))
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*,*취소*")))
      (princ (strcat "\n[NINC] 중단: " msg)))
    (princ))

  ;; 문자 끝의 숫자를 분리한다: "P-001" → ("P-" . "001"), "12" → ("" . "12")
  (defun ninc-split (s / i)
    (setq i (strlen s))
    (while (and (> i 0) (wcmatch (substr s i 1) "#"))
      (setq i (1- i)))
    (cons (substr s 1 i) (substr s (1+ i))))

  ;; 자리수를 유지하며 0을 채운다: (ninc-pad 2 3) → "002"
  (defun ninc-pad (n w / s)
    (setq s (itoa n))
    (while (< (strlen s) w) (setq s (strcat "0" s)))
    s)

  (setq sel (entsel "\n[NINC] 기준이 될 번호 문자(TEXT)를 선택하세요: "))
  (setq ent (if sel (car sel) nil))
  (if (and ent (= (cdr (assoc 0 (entget ent))) "TEXT"))
    (progn
      (setq data (entget ent)
            raw  (cdr (assoc 1 data))
            pair (ninc-split raw)
            head (car pair)
            tail (cdr pair))
      (if (= tail "")
        (princ "\n[NINC] 문자 끝에 숫자가 없습니다. 예: P-001, A12, 15")
        (progn
          (setq num (atoi tail) width (strlen tail))
          (setq step (getint "\n증가 간격 (음수 가능) <1>: "))
          (if (or (null step) (= step 0)) (setq step 1))
          (setq oldecho (getvar "CMDECHO"))
          (setvar "CMDECHO" 0)
          (command "_.UNDO" "_Begin")
          (setq undo-open T idx 0)
          (while (setq pt (getpoint "\n다음 번호를 놓을 위치 클릭 (Enter 종료): "))
            (setq idx    (1+ idx)
                  newstr (strcat head (ninc-pad (+ num (* idx step)) width))
                  newdata (subst (cons 1 newstr) (assoc 1 data) data)
                  newdata (subst (cons 10 pt) (assoc 10 newdata) newdata))
            (if (assoc 11 newdata)
              (setq newdata (subst (cons 11 pt) (assoc 11 newdata) newdata)))
            (entmake (vl-remove-if '(lambda (x) (member (car x) '(-1 5 330))) newdata))
            (princ (strcat "  → " newstr)))
          (command "_.UNDO" "_End")
          (setq undo-open nil)
          (setvar "CMDECHO" oldecho)
          (princ (strcat "\n[NINC] " (itoa idx) "개 생성 완료. (U 한 번으로 전체 취소 가능)")))))
    (princ "\n[NINC] 한 줄 문자(TEXT)를 선택해야 합니다. (MTEXT는 지원하지 않습니다)"))
  (princ))

(princ "\n[AutoCATS] NINC 로드 완료 - 명령행에 NINC 를 입력하세요.")
(princ)
COMPATIBILITY

호환 CAD

AutoCAD 2010+BricsCADZWCADGstarCADCADian

AutoLISP을 지원하는 CAD에서 동작합니다. 문제가 있다면 네이버 카페에 CAD 종류·버전과 함께 남겨주세요.

WORKS WELL WITH

함께 쓰면 좋은 CATS 명령

전체 명령 보기
LOADLISPSATFOLDER / CATS_LOADLISPSATFOLDER받은 리습을 폴더째 한 번에 로드합니다. XYP / CATS_XYP번호와 함께 좌표 표기가 필요할 때 클릭 지점의 좌표를 문자로 삽입합니다.
FAQ

자주 묻는 질문

"12A"처럼 숫자가 중간에 있는 문자도 되나요?

안 됩니다. 문자 끝에 있는 숫자만 인식합니다(12A는 끝이 영문이라 대상이 아닙니다). A12, P-001, 15처럼 숫자로 끝나는 문자에서 사용하세요.

기존 문자를 일괄로 다시 매기는 것도 되나요?

NINC는 새 번호를 배치하는 리습입니다. 이미 배치된 번호를 다시 매기는 기능은 별도 리습으로 준비 중이며, 리습 자료실 RSS나 네이버 카페에서 소식을 받아보실 수 있습니다.

FREE LISP + FREE ADD-IN

리습과 CATS Pro를 함께 쓰세요.

리습은 가볍게, 반복 작업은 CATS Pro 버튼으로. 둘 다 무료입니다.