여기서 많은 도움을 받고 있습니다.
치수 고정에 관하여 좋은 리습(볼록2 님 자료)을 발견하여 잘 활용하고 있는데.
문제는 소수점아래 숫자가 삭제되어 실치수가 1mm정도 차이가 난다는 것입니다.
소수점 1자리짜리 표시되도록 하려면 리습중 어디를 수정해야 하나요? 감사합니다.
아래는 리습내용
(defun rtd (a)
(/ (* a 180.0) pi)
)
(defun c:d2()
(setq ent (ssget ‘((0 . “DIMENSION”))))
(setq n 0)
(repeat (sslength ent)
(setq e1 (entget (ssname ent n)))
;기존(setq lengt (rtos (cdr (assoc 42 e1))))
;여기부터 수정
;각도,지름,반지름치수인 경우만 생각했습니다.
(cond ((member (cons 100 “AcDb3PointAngularDimension”) e1)
(setq a1 (rtd (cdr (assoc 42 e1))))
(setq a1_fix (fix a1))
(if (< (- a1 a1_fix) 0.5)
(setq a2 a1_fix)
(setq a2 (+ a1_fix 1))
)
(setq lengt (strcat (rtos a2) “%%d” ))
);각도치수인 경우, 소숫점 뒷자리 제거, 각도값 반올림 함.
((member (cons 100 “AcDbDiametricDimension”) e1)
(setq lengt (strcat “%%c” (rtos (fix (cdr (assoc 42 e1))))))
);지름치수인 경우, 소숫점 뒷자리제거, 반올림 안함.
((member (cons 100 “AcDbRadialDimension”) e1)
(setq lengt (strcat “R” (rtos (fix (cdr (assoc 42 e1))))))
);반지름치수인 경우, 소숫점 뒷자리제거, 반올림 안함.
((not nil)
(setq lengt (rtos (fix (cdr (assoc 42 e1)))))
);각도,지름,반지름 아닌경우 , 소숫점 뒷자리 제거, 반올림 안함.
)
;여기까지 수정
(setq n-len (subst (cons 1 lengt) (assoc 1 e1) e1))
(entmod n-len)
(setq n (1+ n))
)
)
(defun c:t2()
(setq ent (ssget ‘((0 . “DIMENSION”))))
(setq n 0)
(repeat (sslength ent)
(setq e1 (entget (ssname ent n)))
(setq lengt (rtos (cdr (assoc 42 e1))))
(if (/= lengt “”)
(progn
(setq n-len (subst (cons 1 “”) (assoc 1 e1) e1))
(entmod n-len)
(setq n (1+ n))
)
)
)
)
;;d2t : 치수를 텍스트로 고정 시킵니다.(그림을 scale해도 치수는 바뀌지 않습니다)
;;t2d : 고정시킨 치수를 다시 치수로 바꿉니다
;;텍스트로 고정해도 속성은 dim입니다
;;버그발생시 연락 주세요 himchany@hanmail.net
상큼메론90님 아주 잘되네요.~~~ 감사합니다. ^^