전체적으로 스케일에 변화를 주면 전체적으로 변하니 하나하나 변경하는 방법을 시도 해 보았습니다
; ■척도 수정(스케일문자선택->외곽선택 = 1/외곽스케일)
(defun C:dss (/ s ss p1 p2 wx dims newtext o olsf )
(setvar "cmdecho" 1)
(setq s (entsel "\n수정할 문자 선택 :"))
(if (and s (or (= "TEXT" (cdr (assoc 0 (entget (car s)))))(= "MTEXT" (cdr (assoc 0 (entget (car s)))))))
(progn
(setq ss (ssget ":S"(list '(0 . "*POLYLINE,INSERT"))))
(vl-load-com)
(foreach en (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(vla-GetBoundingBox (vlax-ename->vla-object en) 'min 'max)
(setq P1 (vlax-safearray->list min))
(setq P2 (vlax-safearray->list max)))
(setq wx (- (car P2) (car P1)) ) ;가로폭
(setq dims (fix(+ (/ wx 272) 0.5)) );치수스케일 반올림
(setq newtext (strcat "1/"(rtos (/ wx 272)))
oldent (entget (car s)))
(entmod (subst (cons 1 newtext) (assoc 1 oldent) oldent))(princ)
)
(alert "TEXT 또는 MTEXT를 선택하세요"))
(setvar "ltscale" (* 5 dims)) ;라인스케일
(command "ZOOM" "O" SS "");
(setq ss(ssget "W" p2 p1 '((0 . "dimension"))))
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(setq o(vlax-ename->vla-object e))
(vla-put-scalefactor o dims)
)
(princ)
)
첫댓글 잘 작동합니다. 정말 감사합니다.