本帖最后由 永不言弃 于 2019-8-23 09:21 编辑

- [code=lisp](defun c:bb (/ th ss obj pt pt2 textobj)
- (vl-load-com)
- (setq th (getdist "\n字高<100>:"))
- (if (not th)
- (setq th 100)
- )
- (setq ss (ssget '((0 . "HATCH")))
- i -1
- )
- (if ss
- (progn
- (repeat (sslength ss)
- (setq obj (vlax-ename->vla-object (ssname ss (setq i (1+ i)))))
- (vla-GetBoundingBox obj 'minpt 'maxpt)
- (setq pt (mapcar '(lambda (x) (/ x 2.0))
- (mapcar '+
- (vlax-safearray->list minpt)
- (vlax-safearray->list maxpt)
- )
- )
- pt2 (vlax-make-safearray vlax-vbDouble '(0 . 2))
- textobj (vla-addtext
- (vla-get-Modelspace
- (vla-get-activeDocument (vlax-get-acad-object))
- )
- (strcat "S"
- (itoa i)
- "="
- (rtos (/ (vla-get-area obj) 1000000) 2 3)
- "㎡"
- )
- (vlax-3d-point pt)
- th
- )
- )
- (vlax-safearray-fill pt2 pt)
- (vla-put-Alignment textobj 10)
- (vla-put-TextAlignmentPoint textobj pt2)
- )
- )
- )
- (princ)
- )
[/code]
|