也许像这样。。。。
- (if (setq subSs (ssget "_c" pt1 pt2 (list (cons 0 "CIRCLE")
- (cons -4 (if flag ">=,=,*" "<=,=,*"))
- (cons 10
- (append
- (list
- (apply
- (if flag 'max 'min)
- (mapcar 'car lDat)))
- (cddr (assoc 10 (entget tCirc))))))))
- (progn
- (setq total 0.0)
- (foreach ent (setq subSs_lst (vl-sort
- (vl-remove-if 'listp
- (mapcar 'cadr
- (ssnamex subSs)))
- '(lambda (y1 y2) (< (caddr (assoc 10 (entget y1)))
- (caddr (assoc 10 (entget y2)))))))
- (setq total (+ total (vla-get-Area
- (vlax-ename->vla-object ent)))))
- (setq cLst(car
- (vl-sort
- (mapcar '(lambda (x) (cdr (assoc 10 (entget x)))) subSs_lst)
- '(lambda (x1 x2) (< (car x1) (car x2)))))
- Rad
- (car(vl-sort
- (mapcar '(lambda (x) (cdr (assoc 40 (entget x)))) subSs_lst)
- '(lambda (r1 r2) (> r1 r2)))))
- etc etc etc
|