对楼主来说,应该不难,用如下程序是否满足楼主要求
(defun c:mjpl(/ ACADDOC ACADSPC OBJAREA OBJLLPOINT OBJRUPOINT SELECTIONSET TEXTBASEPOINT TEXTHEIGHT TEXTINDEX TEXTOBJ)
(setq ss (ssget "x"'((0 . "LINE,LWPOLYLINE,ARC"))))
(command "PEDITACCEPT" "1")
(if ss
(command ".pedit" "m" ss "" "j" "0" "w" "0" "" "PEDITACCEPT" "0")
(command ".pedit" "m" "p" "" "j" "0" "w" "0" "" "PEDITACCEPT" "0")
)
(vl-load-com)
(setq AcadDoc (vla-get-activedocument (vlax-get-acad-object)))
(if (= (getvar "TILEMODE") 1)(setq AcadSpc (vla-get-modelspace AcadDoc))(setq AcadSpc (vla-get-paperspace AcadDoc)))
(setvar"dimzin"0);;保留小数位数时如果位数不足可以补零
(setq TextHeight (getdist "n输入标注文字高度:")
TextIndex 1
)
(ssget '((0 . "LWPOLYLINE")))
(mkla "面积计算" 3)
(setq Selectionset (vla-get-activeselectionset AcadDoc))
(if (and TextHeight Selectionset TextIndex)
(vlax-for Obj Selectionset
(setq ObjArea (vla-get-area obj)
)
(vla-GetBoundingBox Obj 'ObjLlPoint 'ObjRuPoint)
(setq TextBasePoint (mapcar '(lambda(x y) (/ (+ x y) 2)) (vlax-safearray->list ObjLlPoint)(vlax-safearray->list ObjRuPoint))
TextObj (vla-addtext AcadSpc (strcat "S"(itoa TextIndex)"=" (rtos (/ ObjArea 1)2 3) "㎡") (vlax-3d-point TextBasePoint) TextHeight)
)
(vla-put-alignment TextObj acAlignmentCenter)
(vla-put-TextAlignmentPoint TextObj (vlax-3d-point TextBasePoint))
(setq TextIndex (1+ TextIndex))
)
)
)