(defun c:sea (/ sel np cp ar)
(vl-load-com)
(setq sel (mapcar ‘vlax-ename->vla-object (vl-remove-if ‘listp (mapcar ‘cadr (ssnamex (ssget ‘((0 . “hatch”))))))))
;; 텍스트 크기를 고정으로 하고싶으면 여기부터
(if (not ts)
(setq ts 10))
(setq np (getdist (strcat “n 문자높이 지정 [” (vl-princ-to-string ts) “]:”)))
(if (= np nil)
(setq np ts)
(setq ts (rtos np 2 1)))
;;여기까지 주석처리….
(foreach x sel
(vla-getboundingbox x ‘p1 ‘p2)
(setq cp (mapcar ‘(lambda (a b) (/ (+ a b) 2)) (vlax-safearray->list p1) (vlax-safearray->list p2))
ar (vl-princ-to-string (rtos(vlax-get x ‘area) 2 2)))
(entmakex (list (cons 0 “TEXT”)
(cons 100 “AcDbEntity”)
(cons 100 “AcDbText”)
(cons 6 “Continuous”)
(cons 10 cp)
(cons 40 (* (atof ts) (getvar ‘ltscale)));;(atof ts)를 텍스트 크기로 바꿔주면 됩니다.
(cons 1 ar)
(cons 62 1)
(cons 72 1)
(cons 73 2)
(cons 11 cp))))
(princ)
)
;;여기까지 주석처리…. ar (vl-princ-to-string (rtos(* (vlax-get x ‘area) 0.000001) 2 2))) 1000배튀겨질떄
ar (vl-princ-to-string (rtos(vlax-get x ‘area) 2 2))) 일반 도면
해치면적을 그대로 나타내주는리습인데
문자가 지금 해치 가운데에만 나오는데 제가 점을 지정하고싶습니다
부탁드리겠습니다.
(setq cp (mapcar ‘(lambda (a b) (/ (+ a b) 2)) (vlax-safearray->list p1) (vlax-safearray->list p2))
이부분을 지워버리시고 그 위치에 (setq cp(getpoint “nSpecify Text point:”)) 이문자 넣으시면 되는데 다중 선택했을때 일일이 문자위치를 지정하는 상황이 이해가 안되네요
감사합니다 말씀들어보니 그렇네요 합계낸걸 해야하겠네요….ㅜㅜ