FWIW -
Code:
(vl-load-com)
(defun c:FOO (/ *error* acDoc height luprec origin oSpace area total
insertionPoint oMText
)
(defun *error* (msg)
(if acDoc
(vla-endundomark acDoc)
)
(if total
(prompt (strcat "\nTotal area: "
(rtos (setq total (apply '+ total)) 2 luprec)
" SF | "
(rtos (/ total 9.0) 2 luprec)
" SY | "
(rtos (/ total 43560.0) 2 luprec)
" AC "
)
)
)
(cond ((not msg)) ; Normal exit
((member msg '("Function cancelled" "quit / exit abort"))) ; <esc> or (quit)
((princ (strcat "\n** Error: " msg " ** "))) ; Fatal error, display it
)
(princ)
)
(if (ssget '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1)))
(progn
(vla-startundomark
(setq acDoc (vla-get-activedocument (vlax-get-acad-object)))
)
(setq height (/ 1. (getvar 'cannoscalevalue)))
(setq luprec (getvar 'luprec))
(setq origin (vlax-3d-point '(0 0 0)))
(setq oSpace
(vlax-get acDoc
(if (= 1 (getvar 'cvport))
'paperspace
'modelspace
)
)
)
(vlax-for x (vla-get-activeselectionset acDoc)
(setq total (cons (setq area (vla-get-area x)) total))
(vla-getboundingbox x 'mn 'mx)
(setq insertionPoint
(vlax-3d-point
(mapcar '*
(mapcar '+
(vlax-safearray->list mn)
(vlax-safearray->list mx)
)
'(0.5 0.5 0.5)
)
)
)
(setq oMText
(vla-addmtext
oSpace
origin
0.0
(rtos area 2 luprec)
)
)
(vla-put-attachmentpoint oMText acmiddlecenter)
(vla-move oMText origin insertionPoint)
(vla-put-height oMText height)
)
)
)
(*error* nil)
)