안녕하세요 리습 만드록있는 초보입니다.
최근 치수를 측정하는 리습을 만들었는데, 여러 객체를 선택해서 치수를 측정하는방법이 어려워 블럭을 만든 후 치수를 측정하는 프로그램을 만들었습니다.
FILLET이 적용된 부분은 FIILET을 마우스 휠로 확대를 한 후 치수 리습을 상용하면 정확한 치수가 표시됩니다.
하지만 신기하게 도면을 마우스휠로 축소시킨 후 치수 리습을 사용하면 사진과같이 원 호의 4분점에 치수가 찍혀버립니다. 무슨 문제일가요? 리습 코드 올리겠습니다.
(defun c:dd ()
(prompt “n select objects. “)
(setq MI (ssget))
(setq d (rtos (getvar “cdate”) 1 15))
(setq d1 (substr d 1 15))
(setq p1 “0,0”) ;; 블록의 기준점을 0,0으로 잡음
(command “block” d1 “o” “c” p1 MI “”)
(prompt “n select objects. “)
(setq obj (ssget)) ; 사용자로부터 개체 선택
(setq entname (ssname obj 0))
(setq vlentname (vlax-ename->vla-object entname))
(vla-getboundingbox vlentname ‘minpoint ‘maxpoint)
; Safearray를 리스트로 변환
(setq p1 (vlax-safearray->list minpoint))
(setq p2 (vlax-safearray->list maxpoint))
; (setq objxmin (car p1))
; (setq objxmax (car p2))
; (setq objymin (cadr p1))
; (setq objymax (cadr p2))
(setq xdimpos (list (car p2) (- (cadr p1) 20)))
(setq ydimpos (list (-(car p1) 20) (cadr p2)))
(command “dimlinear” p1 (list (car p2) (cadr p1)) xdimpos)
(command “dimlinear” p1 (list (car p1) (cadr p2)) ydimpos)
(princ)
)
도움주시면 감사합니다.