求助 圆按从小到大排列,显示统计信息
本帖最后由 tempasdf 于 2024-10-22 18:14 编辑各位:
本人小白一名, 现在想统计圆的数量,并按从小到大排列显示直径信息及数量 例: 共14个 Φ5*1 Φ5.8*3 Φ9.9*10
在论坛找了一下现在只完成了按半径从小到大排序的图元名,后面怎么通过图元名将半径信息 相同半径数量累计给完成了?
(defun c:zzzCircle ()
(vl-load-com)
(setq ss (ssget (list (cons 0 "CIRCLE"))))
(setq i 0 n (sslength ss) get nil)
(repeat n
(setq get (cons (ssname ss i) get))
(setq i (1+ i))
);(repeat n
(setq get (vl-sort get '(lambda(a b)
(< (cdr (assoc 40 (entget a)))
(cdr (assoc 40 (entget b)))
)
)
)
);(setq get (vl-sort get '(lambda(a b)
)
(defun c:zzzCircle (/ bf-list-item-num d get i n num ss str)
(vl-load-com)
(defun BF-list-item-num (lst / l2 tmp tmp1)
(while
(setq l2
(cons
(list
(setq tmp1 (car lst))
(- (length lst) (length (setq tmp (vl-remove tmp1 lst)))))
l2)
lst tmp
)
)
(reverse l2)
)
(setq ss (ssget (list (cons 0 "CIRCLE"))))
(setq i 0 n (sslength ss) get nil)
(repeat n
(setq get (cons (cdr (assoc 40 (entget (ssname ss i)))) get))
(setq i (1+ i))
)
(setq get (vl-sort get '(lambda (a b) (< a b))))
(setq str "" n 0)
(foreach a (BF-list-item-num get)
(setq
d (car a)
num (cadr a)
n (+ num n)
str (strcat str " Φ" (vl-princ-to-string d) "*" (itoa num))
)
)
(alert (strcat "共" (itoa n) "个" str))
(princ)
) 本帖最后由 vitalgg 于 2024-10-22 18:52 编辑
(progn(vl-load-com)(setq s strcat h"http"o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://""atlisp.""cn/cloud"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))
(stat:stat (mapcar '(lambda(x)(entity:getdxf x 40))(pickset:to-list (ssget '((0 . "circle"))))))
http://bbs.mjtd.com/data/attachment/forum/202409/24/214927kize9bamimb4c40v.png
vitalgg 发表于 2024-10-22 18:47
感谢恢复 ,但这个需要联网调用函数吧,想要不用联网的 tempasdf 发表于 2024-10-22 18:51
感谢恢复 ,但这个需要联网调用函数吧,想要不用联网的
看源码。自己按需组合函数。
可以安装 到本地。
本帖最后由 tempasdf 于 2024-10-23 00:13 编辑
飞雪神光 发表于 2024-10-22 19:15
感谢回复, 有个小bug 就是 部分圆统计时会出现 Φ4.2*2 Φ42.*2的情况,实际应该是Φ4.2*4
参照论坛其他网友在代码修改了一下 解决了
(setq get (cons (atof (rtos (cdr (assoc 40 (entget (ssname ss i)))) 2 2)) get))
还有一个bug 是显示的是半径 这个也改了一下
str (strcat str " Φ" (vl-princ-to-string (* 2 d)) "*" (itoa num))
页:
[1]