再往前走一点。。。(Lisp程序,只是把它扔在一起。)
- (defun c:roomsize (/ ent vLst xlst ylst xrange yrange area)
- (if (and (setq ent (car (entsel "\nSelect Wall...")))
- (eq "LWPOLYLINE" (cdadr (entget ent))))
- (progn
- (setvar "CMDECHO" 0)
- (setq vLst (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget ent)))
- xlst (mapcar '(lambda (y) (car y)) vLst)
- ylst (mapcar '(lambda (z) (cadr z)) vLst)
- xrange (- (apply 'max xlst) (apply 'min xlst))
- yrange (- (apply 'max ylst) (apply 'min ylst)))
- (command "_area" "_Object" ent) (setq area (getvar "AREA"))
- (alert (strcat (rtos xrange) " x " (rtos yrange)
- "\n" (rtos xrange 3) " x " (rtos yrange 3)
- "\n" (rtos area) " SQ.MT.\n" (rtos area 3) " SQ.FT.")))
- (princ "\n<!> No Wall Selected or This isn't an LWPOLYLINE <!>"))
- (setvar "CMDECHO" 1)
- (princ))
|