怎么计算框内数据的平均值和最大最小值呢?
(defun C:EE ( / #g1 &kw &ss1 ent x)(if (and
(setq ent (entsel "\n请选择封闭的多段线"))
(setq ent (car ent));图元
(setq #g1 (entget ent));属性
(= (cdr (assoc 0 #g1)) "LWPOLYLINE");分析是多段线
(= (cdr (assoc 70 #g1)) 1);判断是封闭
(setq &ss1 (mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) #g1)));多段线上的点
)
(progn
(if (setq &kw (ssget "wp" &ss1))
;框选择 包含在框内的及和框相交的被选择;如果要窗选【cp】修改为【wp】即可
(setq &kw (ssadd ent &kw))
(progn
(setq &kw (ssadd) &kw (ssadd ent &kw))
)
)
(command "erase" "all" "r" &kw "")
)
)
(princ)
);
; (defun c:tt ()
(if (and (setq s1 (car (entsel "\n请选择封闭的多段线")))
(setq ent (entget s1))
(= (cdr (assoc 0 ent)) "LWPOLYLINE") ;分析是多段线
(or (member (cdr (assoc 70 ent)) '(1 129))
(equal (vlax-curve-getStartPoint s1)
(vlax-curve-getEndPoint s1)
1e-3
)
)
(setq ptn (mapcar 'cdr
(vl-remove-if '(lambda (X) (/= (car x) 10)) ent)
)
)
(setq ss (ssget "wp" ptn '((0 . "TEXT") (1 . "~*[~`--9]*"))))
)
(setq lst(mapcar '(lambda (x) (distof (cdr (assoc 1 (entget x)))))
(mapcar 'cadr (cdr (reverse (ssnamex ss))))
)
nn (length lst)
pjz(/ (apply '+ lst) nn 1.) ;平均值
lst(vl-sort lst '<)
Nmin (car lst) ;最小值
Nmax (last lst) ;最大值
)
)
(princ)
) 谢谢! xyp1964 分享程序!!!!!!
页:
[1]