My point exactly. I prefer using the attached's DimArea (though that places the field into an existing text). To only use text (no fields), perhaps something like this:(vl-load-com)
(setq *AreaSettings*
'(("Prefix" . "AREA: ")
("Suffix" . " m²")
("Source" . "sq mm")
("Target" . "sq m")
("Format" 2 2)
)
)
(defun c:PlaceArea (/ en area pt eo space Area->Text AddText)
(setq space (apply (if (or (= (getvar 'TileMode) 1) (> (getvar 'CVport) 1))
'vla-get-ModelSpace
'vla-get-PaperSpace
)
(list (vla-get-ActiveDocument (vlax-get-acad-object)))
)
)
(defun Area->Text (area /)
(strcat (cdr (assoc "Prefix" *AreaSettings*))
(apply 'rtos
(cons
(cvunit area (cdr (assoc "Source" *AreaSettings*)) (cdr (assoc "Target" *AreaSettings*)))
(cdr (assoc "Format" *AreaSettings*))
)
)
(cdr (assoc "Suffix" *AreaSettings*))
)
)
(defun AddText (area pt /)
(vla-AddText space (Area->Text area) (vlax-3D-point pt) (getvar 'TextSize))
)
(while (setq en (entsel "\nPick entity for source of area (Enter to exit): "))
(if (setq area (vlax-curve-getArea (car en)))
(if (setq pt (getpoint "\nPick point for placing text: "))
(if (vl-catch-all-error-p (setq eo (vl-catch-all-apply 'AddText (list area pt))))
(prompt (strcat "\nError placing text: " (vl-catch-all-error-message eo)))
(progn
(vla-put-Layer eo (getvar 'CLayer))
(vla-put-StyleName eo (getvar 'TextStyle))
(prompt "\nArea text placed.")
)
)
(prompt "\nInvalid point, restarting.")
)
(prompt "\nThat entity doesn't have an area. Try again.")
)
)
(princ)
)