lxb9721 发表于 2019-3-21 12:30:07

怎么计算框内数据的平均值和最大最小值呢?

(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)
);
;

xyp1964 发表于 2019-3-21 14:19:56

(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)
)

yoyoho 发表于 2019-3-21 23:35:49

谢谢! xyp1964 分享程序!!!!!!
页: [1]
查看完整版本: 怎么计算框内数据的平均值和最大最小值呢?