표기 형식을 한 번에 통일
도면의 영문 부재명, 약어, 주석 표기가 섞였을 때 선택한 문자를 같은 규칙으로 정리합니다.
네 가지 변환 모드
- Upper는 모두 대문자, Lower는 모두 소문자로 바꿉니다.
- Title은 단어의 첫 영문자를 대문자로 바꿉니다.
- Toggle은 각 영문자의 현재 대소문자를 반대로 바꿉니다.
사용 순서
- 1
APPLOAD로 text-case.lsp를 로드합니다.
- 2
TCASE를 입력합니다.
- 3
Upper, Lower, Title, toGgle 중 하나를 선택합니다.
- 4
변환할 TEXT 또는 MTEXT를 선택합니다.
코드 전문
다운로드 파일은 아래 코드와 100% 동일합니다. 붙여넣기보다 파일 다운로드 후 APPLOAD 로드를 권장합니다.
;;; ------------------------------------------------------------
;;; 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)
호환 CAD
위 환경에서 확인했습니다. 목록에 없는 CAD는 샘플 도면에서 먼저 결과를 대조한 뒤, CAD 종류·버전과 함께 네이버 카페에 알려주세요.
이 기능, CATS Pro에는 버튼으로 있습니다
PG_TXTCASE / CATS_PG_TXTCASECATS Pro에서는 패널과 통합된 문자 정리 흐름으로 같은 기능을 실행합니다.CATS Pro는 계속 무료입니다. 리습 로드 없이 버튼 클릭으로 같은 작업을 처리할 수 있습니다.
함께 쓰면 좋은 CATS 명령
자주 묻는 질문
한글이나 숫자도 바뀌나요?
영문 알파벳만 변환하며 한글, 숫자, 기호는 그대로 유지합니다.
잠긴 레이어의 문자도 변경하나요?
잠긴 레이어의 객체는 안전을 위해 건너뜁니다.