블록 축척을 한 번에 교정
잘못 삽입되거나 축별 비율이 섞인 블록을 선택해 X, Y, Z 축척을 빠르게 통일합니다.
외부참조 보호
- Y와 Z를 생략하면 X와 같은 값을 사용합니다.
- 0 축척은 허용하지 않습니다.
- Xref와 잠긴 레이어의 블록은 건너뜁니다.
사용 순서
- 1
APPLOAD로 block-scale.lsp를 로드합니다.
- 2
BSCALE을 입력합니다.
- 3
X, Y, Z 축척값을 차례로 입력합니다.
- 4
변경할 일반 블록을 선택합니다.
코드 전문
다운로드 파일은 아래 코드와 100% 동일합니다. 붙여넣기보다 파일 다운로드 후 APPLOAD 로드를 권장합니다.
;;; ------------------------------------------------------------
;;; AutoCATS 리습 자료실
;; 명령: BSCALE
;; 기능: 선택한 일반 블록 참조의 X, Y, Z 축척 일괄 변경
;; 출처: https://www.autocats.co.kr/lisp/block-scale
;; 버전: 1.0 (2026-07-27)
;; 라이선스: 자유 사용·수정, 재배포 시 출처(autocats.co.kr) 표기
;; 안전: *error* 핸들러 + UNDO 그룹, Xref 및 잠긴 레이어 건너뜀
;;; ------------------------------------------------------------
(vl-load-com)
(defun autocats-bscale-locked-p (ent / row)
(setq row (tblsearch "LAYER" (cdr (assoc 8 (entget ent)))))
(and row (= 4 (logand 4 (cdr (assoc 70 row))))))
(defun autocats-bscale-xref-p (ent / name row flags)
(setq name (cdr (assoc 2 (entget ent)))
row (tblsearch "BLOCK" name)
flags (if row (cdr (assoc 70 row)) 0))
(/= 0 (logand flags 12)))
(defun autocats-bscale-replace (code value data)
(if (assoc code data)
(subst (cons code value) (assoc code data) data)
(append data (list (cons code value)))))
(defun autocats-bscale-apply (ent x y z / data updated)
(setq data (entget ent)
data (autocats-bscale-replace 41 x data)
data (autocats-bscale-replace 42 y data)
data (autocats-bscale-replace 43 z data)
updated (entmod data))
(if updated (progn (entupd ent) T) nil))
(defun c:BSCALE (/ *error* doc undo-open x y z 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[BSCALE] 중단: " msg)))
(princ))
(initget 2)
(setq x (getreal "\n[BSCALE] X 축척 <1>: "))
(if (null x) (setq x 1.0))
(initget 2)
(setq y (getreal (strcat "\n[BSCALE] Y 축척 <" (rtos x 2 4) ">: ")))
(if (null y) (setq y x))
(initget 2)
(setq z (getreal (strcat "\n[BSCALE] Z 축척 <" (rtos x 2 4) ">: ")))
(if (null z) (setq z x))
(princ "\n[BSCALE] 축척을 변경할 블록을 선택하세요.")
(setq ss (ssget '((0 . "INSERT"))))
(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-bscale-locked-p ent)
(autocats-bscale-xref-p ent)
(not (autocats-bscale-apply ent x y z)))
(setq skipped (1+ skipped))
(setq changed (1+ changed)))
(setq idx (1+ idx)))
(vla-EndUndoMark doc)
(setq undo-open nil)
(princ (strcat "\n[BSCALE] 완료: " (itoa changed)
"개 변경 / " (itoa skipped) "개 건너뜀")))
(princ "\n[BSCALE] 선택된 블록이 없습니다."))
(princ))
(princ "\n[AutoCATS] BSCALE 로드 완료 - 명령행에 BSCALE 를 입력하세요.")
(princ)
호환 CAD
위 환경에서 확인했습니다. 목록에 없는 CAD는 샘플 도면에서 먼저 결과를 대조한 뒤, CAD 종류·버전과 함께 네이버 카페에 알려주세요.
이 기능, CATS Pro에는 버튼으로 있습니다
PG_BLKSCALE / CATS_PG_BLKSCALECATS Pro에서는 블록 관리 흐름에서 축척과 관련 속성을 함께 확인할 수 있습니다.CATS Pro는 계속 무료입니다. 리습 로드 없이 버튼 클릭으로 같은 작업을 처리할 수 있습니다.
함께 쓰면 좋은 CATS 명령
자주 묻는 질문
음수 축척도 사용할 수 있나요?
0이 아닌 음수 축척도 입력할 수 있어 축 반전 상태를 지정할 수 있습니다.
외부참조도 변경되나요?
외부참조는 도면 연결 상태를 보호하기 위해 건너뜁니다.