感觉是组码不对,附半成品:
(defun c:gg()
(setq ss ( ssget '( (-4 . "<and")(0 . "hatch") (2 . "solid") (-4 . "and>") ) ) )
(if (= ss nil) (exit))
(setq len (sslength ss) i 0 k 0)
(while (< i len)
(progn
(setq en (ssname ss i))
(command "._AREA" "O" en)
(setq en (getvar "area"))
(setq en (/ en 1000000.0))
(setq k (+ en k))
(setq i (1+ i))
) ;end while progn
) ;end while
(setq k (rtos k 2 3))
(command "text" pause 2500 0 k )
(princ)
)
(if (setq ss (ssget '((2 . "SOLID"))))
(progn
(setq Area 0)
(while (setq name (ssname ss 0))
(setq Area (+ Area (vla-get-Area (vlax-ename->vla-object name))))
(ssdel name ss)
)
(/ Area 1000000)
)
)