本帖最后由 ZZXXQQ 于 2013-2-4 07:45 编辑
如果需要直圈点面积,可以:
 - (defun c:aaw ()
- (setq atext(entsel "\n选取写入面积的文字:"))
- (setq elist (entget (car atext)))
- (setq mc(cdr(assoc 1 elist)))
- (command "_.area")
- (while (> (getvar "CMDACTIVE") 0) (command PAUSE))
- (setq area (/ (getvar "area") 1000000.0))
- (setq new (strcat mc "(" (rtos area 2 3) ")"))
- (setq atext (subst (cons 1 new) (assoc 1 elist) elist))
- (entmod atext)
- (prin1)
- )
如果文字是封闭区域内,可以:
 - (defun c:aaw ()
- (setq atext(entsel "\n选取写入面积的文字:"))
- (setq elist (entget (car atext)))
- (setq mc(cdr(assoc 1 elist)))
- (setq s1 (entlast) ss (ssadd))
- (setq pt (cdr(assoc 10 elist)))
- (command "BPOLY" pt "")
- (while (setq s1 (entnext s1)) (setq ss (ssadd s1 ss)))
- (if (= (sslength ss) 1) (progn
- (command "_.area" "o" ss)
- (setq area (/ (getvar "area") 1000000.0))
- (setq new (strcat mc "(" (rtos area 2 3) ")"))
- (setq atext (subst (cons 1 new) (assoc 1 elist) elist))
- (entmod atext)
- ))
- (prin1)
- )
|