您可以这样更改代码。
- (defun c:test( / Layer sslst numlst num)
- (defun ss->EnLst (ss / retu)
- (setq retu (apply 'append (ssnamex ss)))
- (setq retu (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) retu))
- )
- (setq K (getint "\n SUM<1>,Quadrature<2>,Maximum <3>,Minimum<4>"))
- (setq sslst (ss->EnLst (ssget (list (cons 0 "*TEXT,DIMENSION") (cons 1 "~*[~`--9]*")))))
- (setq numlst (mapcar '(lambda(x)
- (if (= "DIMENSION" (cdr (assoc 0 (entget x))))
- (cdr (assoc 42 (entget x)))
- (atof (cdr (assoc 1 (entget x)))))) sslst))
- (cond
- ((= K 1)(setq num (apply '+ numlst)))
- ((= K 2)(setq num (apply '* numlst)))
- ((= K 3)(setq num (apply 'max numlst)))
- ((= K 4)(setq num (apply 'min numlst)))
- (T (setq num (apply '+ numlst)))
- )
- (princ num)
- (princ)
- )
对于多行文字,只会影响简单的格式。 |