多块面积之和
<p><br/>(defun c:aream (/ olderr oldcmdecho errexit undox restore ss1 nr en tot_area)<br/> (defun errexit (s)<br/> (restore)<br/> )</p><p> (defun undox ()<br/> (command "._undo" "_E")<br/> (setvar "cmdecho" oldcmdecho)<br/> (setq *error* olderr)<br/> (princ)<br/> )</p><p> (setq olderr *error*<br/> restore undox<br/> *error* errexit<br/> )<br/> (setq oldcmdecho (getvar "cmdecho"))<br/> (setvar "cmdecho" 0)<br/> (command "._UNDO" "_BE")<br/> (if (setq ss1 (ssget '((-4 . "<OR")<br/> (0 . "POLYLINE")<br/> (0 . "LWPOLYLINE")<br/> (0 . "CIRCLE")<br/> (0 . "ELLIPSE")<br/> (0 . "SPLINE")<br/> (0 . "REGION")<br/> (-4 . "OR>")<br/> )<br/> )<br/> )<br/> (progn<br/> (setq nr 0)<br/> (setq tot_area 0.0)<br/> (setq en (ssname ss1 nr))<br/> (while en<br/> (command "._area" "_O" en)<br/> (setq tot_area (+ tot_area (getvar "area")))<br/> (setq nr (1+ nr))<br/> (setq en (ssname ss1 nr))<br/> )<br/> (princ "\nTotal Area = ")<br/> (princ tot_area)<br/> )<br/> )<br/> (restore)<br/>)</p>
页:
[1]