문자 대소문자 변환 리습 (TCASE)

여러 TEXT·MTEXT의 영문 대소문자를 Upper, Lower, Title, Toggle 네 가지 모드로 한 번에 바꿉니다.

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

표기 형식을 한 번에 통일

도면의 영문 부재명, 약어, 주석 표기가 섞였을 때 선택한 문자를 같은 규칙으로 정리합니다.

네 가지 변환 모드

  • Upper는 모두 대문자, Lower는 모두 소문자로 바꿉니다.
  • Title은 단어의 첫 영문자를 대문자로 바꿉니다.
  • Toggle은 각 영문자의 현재 대소문자를 반대로 바꿉니다.
HOW TO USE

사용 순서

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

    APPLOAD로 text-case.lsp를 로드합니다.

  2. 2

    TCASE를 입력합니다.

  3. 3

    Upper, Lower, Title, toGgle 중 하나를 선택합니다.

  4. 4

    변환할 TEXT 또는 MTEXT를 선택합니다.

SOURCE

코드 전문

명령 TCASE

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

.lsp 다운로드
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: TCASE
;; 기능: 선택한 TEXT 및 MTEXT의 영문 대소문자 일괄 변환
;; 출처: https://www.autocats.co.kr/lisp/text-case
;; 버전: 1.0 (2026-07-27)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 + UNDO 그룹, 잠긴 레이어 건너뜀
;;; ------------------------------------------------------------

(vl-load-com)

(defun autocats-tcase-letter-p (char)
  (/= (strcase char) (strcase char T)))

(defun autocats-tcase-toggle (value / idx char result)
  (setq idx 1 result "")
  (while (<= idx (strlen value))
    (setq char (substr value idx 1)
          result
          (strcat result
            (if (autocats-tcase-letter-p char)
              (if (= char (strcase char))
                (strcase char T)
                (strcase char))
              char))
          idx (1+ idx)))
  result)

(defun autocats-tcase-title (value / idx char word-start result)
  (setq idx 1 word-start T result "")
  (while (<= idx (strlen value))
    (setq char (substr value idx 1))
    (cond
      ((autocats-tcase-letter-p char)
       (setq result (strcat result (strcase char (not word-start)))
             word-start nil))
      ((wcmatch char "#")
       (setq result (strcat result char)
             word-start nil))
      (T
       (setq result (strcat result char)
             word-start T)))
    (setq idx (1+ idx)))
  result)

(defun autocats-tcase-convert (value mode)
  (cond
    ((= mode "U") (strcase value))
    ((= mode "L") (strcase value T))
    ((= mode "T") (autocats-tcase-title value))
    ((= mode "G") (autocats-tcase-toggle value))
    (T nil)))

(defun autocats-tcase-locked-p (ent / row)
  (setq row (tblsearch "LAYER" (cdr (assoc 8 (entget ent)))))
  (and row (= 4 (logand 4 (cdr (assoc 70 row))))))

(defun autocats-tcase-apply (ent mode / data converted updated)
  (setq data (entget ent))
  (if (assoc 1 data)
    (progn
      (setq converted
            (mapcar
              '(lambda (pair)
                 (if (member (car pair) '(1 3))
                   (cons (car pair)
                     (autocats-tcase-convert (cdr pair) mode))
                   pair))
              data)
            updated (entmod converted))
      (if updated (progn (entupd ent) T) nil))
    nil))

(defun c:TCASE (/ *error* doc undo-open mode ss idx ent changed skipped)
  (defun *error* (msg)
    (if undo-open
      (progn (vla-EndUndoMark doc) (setq undo-open nil)))
    (if (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*,*취소*")))
      (princ (strcat "\n[TCASE] 중단: " msg)))
    (princ))

  (initget "Upper Lower Title toGgle")
  (setq mode (getkword "\n[TCASE] 변환 [Upper/Lower/Title/toGgle] <Upper>: "))
  (setq mode
        (cond
          ((or (null mode) (= mode "Upper")) "U")
          ((= mode "Lower") "L")
          ((= mode "Title") "T")
          (T "G")))
  (princ "\n[TCASE] 변환할 TEXT 또는 MTEXT를 선택하세요.")
  (setq ss (ssget '((0 . "TEXT,MTEXT"))))
  (if ss
    (progn
      (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
            idx 0 changed 0 skipped 0)
      (vla-StartUndoMark doc)
      (setq undo-open T)
      (while (< idx (sslength ss))
        (setq ent (ssname ss idx))
        (if (or (autocats-tcase-locked-p ent)
                (not (autocats-tcase-apply ent mode)))
          (setq skipped (1+ skipped))
          (setq changed (1+ changed)))
        (setq idx (1+ idx)))
      (vla-EndUndoMark doc)
      (setq undo-open nil)
      (princ (strcat "\n[TCASE] 완료: " (itoa changed)
                     "개 변경 / " (itoa skipped) "개 건너뜀")))
    (princ "\n[TCASE] 선택된 문자가 없습니다."))
  (princ))

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

호환 CAD

AutoCAD 2021AutoCAD 2026

위 환경에서 확인했습니다. 목록에 없는 CAD는 샘플 도면에서 먼저 결과를 대조한 뒤, CAD 종류·버전과 함께 네이버 카페에 알려주세요.

ONE-CLICK ALTERNATIVE

이 기능, CATS Pro에는 버튼으로 있습니다

PG_TXTCASE / CATS_PG_TXTCASECATS Pro에서는 패널과 통합된 문자 정리 흐름으로 같은 기능을 실행합니다.

CATS Pro는 계속 무료입니다. 리습 로드 없이 버튼 클릭으로 같은 작업을 처리할 수 있습니다.

WORKS WELL WITH

함께 쓰면 좋은 CATS 명령

전체 명령 보기
PG_TXTCASE / CATS_PG_TXTCASECATS Pro에서 선택 문자의 대소문자를 네 가지 모드로 일괄 변환합니다.
FAQ

자주 묻는 질문

한글이나 숫자도 바뀌나요?

영문 알파벳만 변환하며 한글, 숫자, 기호는 그대로 유지합니다.

잠긴 레이어의 문자도 변경하나요?

잠긴 레이어의 객체는 안전을 위해 건너뜁니다.

WORKFLOW PRODUCTS

업무 분야에 맞는 전용 자동화도 확인해 보세요.

공통 CAD 작업은 CATS Pro로, 분야별 도면과 산출 업무는 전용 제품으로 이어갈 수 있습니다.

FREE LISP + FREE ADD-IN

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

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