현재 각도를 기준으로 일괄 회전
0도로 통일하는 명령이 아니라 각 문자에 입력 각도를 더합니다. 서로 다른 방향의 주석을 모두 90도씩 돌릴 때 유용합니다.
지원 대상
- TEXT·MTEXT·ATTRIB을 지원합니다.
- 양수는 반시계, 음수는 시계 방향으로 적용됩니다.
- 잠긴 레이어는 건너뛰며 U 한 번으로 되돌릴 수 있습니다.
사용 순서
- 1
APPLOAD로 text-rotate.lsp를 로드합니다.
- 2
TROTATE를 입력합니다.
- 3
현재 각도에 더할 도 단위 각도를 입력합니다.
- 4
회전할 문자를 선택하고 Enter를 누릅니다.
코드 전문
다운로드 파일은 아래 코드와 100% 동일합니다. 붙여넣기보다 파일 다운로드 후 APPLOAD 로드를 권장합니다.
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: TROTATE
;; 기능: 선택한 TEXT/MTEXT/ATTRIB의 현재 각도에 입력 각도를 더해 회전
;; 출처: https://www.autocats.co.kr/lisp/text-rotate
;; 버전: 1.0 (2026-07-23)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 + UNDO 그룹, 잠긴 레이어 건너뜀
;;; ------------------------------------------------------------
(vl-load-com)
(defun autocats-trotate-locked-p (ent / row)
(setq row (tblsearch "LAYER" (cdr (assoc 8 (entget ent)))))
(and row (= 4 (logand 4 (cdr (assoc 70 row))))))
(defun autocats-trotate-apply (ent radians / data target updated)
(setq data (entget ent)
target (assoc 50 data))
(if target
(setq updated
(entmod
(subst (cons 50 (+ (cdr target) radians)) target data)))
(setq updated (entmod (append data (list (cons 50 radians))))))
(if updated (progn (entupd ent) T) nil))
(defun c:TROTATE (/ *error* doc undo-open degrees radians 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[TROTATE] 중단: " msg)))
(princ))
(setq degrees (getreal "\n[TROTATE] 현재 각도에 더할 회전각(도) <0>: "))
(if (null degrees) (setq degrees 0.0))
(setq radians (* pi (/ degrees 180.0)))
(princ "\n[TROTATE] 회전할 TEXT/MTEXT/ATTRIB을 선택하세요.")
(setq ss (ssget '((0 . "TEXT,MTEXT,ATTRIB"))))
(if ss
(progn
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object))
changed 0 skipped 0 idx 0)
(vla-StartUndoMark doc)
(setq undo-open T)
(while (< idx (sslength ss))
(setq ent (ssname ss idx))
(if (or (autocats-trotate-locked-p ent)
(not (autocats-trotate-apply ent radians)))
(setq skipped (1+ skipped))
(setq changed (1+ changed)))
(setq idx (1+ idx)))
(vla-EndUndoMark doc)
(setq undo-open nil)
(princ (strcat "\n[TROTATE] 완료: " (itoa changed)
"개 회전 / " (itoa skipped) "개 건너뜀")))
(princ "\n[TROTATE] 선택된 문자가 없습니다."))
(princ))
(princ "\n[AutoCATS] TROTATE 로드 완료 - 명령행에 TROTATE 를 입력하세요.")
(princ)
호환 CAD
위 환경에서 확인했습니다. 목록에 없는 CAD는 샘플 도면에서 먼저 결과를 대조한 뒤, CAD 종류·버전과 함께 네이버 카페에 알려주세요.
이 기능, CATS Pro에는 버튼으로 있습니다
TRD / CATS_TRDCATS Pro 리본에서 문자 회전 작업을 바로 실행할 수 있습니다.CATS Pro는 계속 무료입니다. 리습 로드 없이 버튼 클릭으로 같은 작업을 처리할 수 있습니다.
함께 쓰면 좋은 CATS 명령
자주 묻는 질문
모든 문자를 같은 각도로 맞추나요?
아닙니다. 각 문자의 기존 각도에 입력한 각도를 더합니다.
시계 방향 회전도 가능한가요?
예. -90처럼 음수 각도를 입력하세요.