邹锋 发表于 2014-10-10 21:16:28

发一个统计块数量的源码

本帖最后由 邹锋 于 2014-10-10 21:17 编辑

(defun c:bk(/ npl mpl ss n na i)
(setq ss (ssget '((0 . "INSERT"))))
(setq n 0)
(repeat (sslength ss)
    (setq npl (cons (cdr (assoc '2 (entget (ssname ss n)))) npl))
    (setq n (1+ n))
    )
(while npl
    (setq i 0)
    (setq na (car npl))
    (mapcar'(lambda (y) (if (= na y)
                          (progn
                              (setq i (1+ i))
                              )
                          )
                )
             npl
             )
    (setq npl (vl-remove na npl))
    (setq mpl (cons (list na (rtos i 2 0)) mpl))
    )
(princ mpl)
(princ)
)
返回块名字与个数

taoyi0727 发表于 2018-5-14 17:30:32

看看我这个怎么样 我也是才学的

;选块名
(defun c:xkm ()
        (setq xh 0)
        (while xh
                (setq km (entsel "\n请选择要过滤的块"))
                (if (= km nil)
                        (princ "\n请重新选择")
                        (if (= (cdr (assoc 0 (entget (car km)))) "INSERT")
                                (progn
                                        (setq km (assoc 2 (entget (car km))))
                                        (setq xh nil)
                                )
                        )
                )
        )
        (setq ss (ssget (list km (cons 0 "INSERT"))))
        (sssetfirst nil ss)
        (princ (strcat "\n已选择" (rtos (sslength ss) 2 4) "个对象"))
        (princ)
)

chj20055647 发表于 2018-1-1 10:27:48

试一下,整是自己想要的功能

395969 发表于 2019-7-6 15:43:03

这个好用谢谢分享

maiko 发表于 2014-10-11 07:43:08

顶顶源码

彳余 发表于 2014-10-11 07:57:23

顶顶源码

war32 发表于 2014-10-11 08:23:52

顶源码

yoyoho 发表于 2014-10-11 08:58:16

感谢 邹锋 分享程序!

叮咚 发表于 2014-10-11 11:02:12

为什么要写这么复杂?练习复杂的函数?
(defun c:bk(/ en mpl ss n nn m xx)
(setq ss (ssget '((0 . "INSERT"))))
(or ss (setq ss (ssadd)))
(setq n 0 nn (sslength ss) mpl '())
(while (< n nn)
        (setq en (ssname ss n) data (entget en))
(setq n (1+ n))
        (setq name (cdr (assoc 2 data)))
        (setq xx (assoc name mpl))
        (if xx
        (setq m (cdr xx) m (1+ m) mpl (subst (cons name m) xx mpl))
        (setq mpl (cons (cons name 1) mpl))
        )
)
(if mpl (princ mpl)(princ "/nNothing!"))
(princ)
)

伪书虫86 发表于 2014-10-11 11:20:32

叮咚 发表于 2014-10-11 11:02 static/image/common/back.gif
为什么要写这么复杂?练习复杂的函数?

请教下,第三行干嘛用的?

vectra 发表于 2014-10-11 11:42:20

只是为了后续语句在空选时不报错

434939575 发表于 2014-10-11 16:47:58

我是来学习的,谢谢分享

zhongys 发表于 2014-10-11 22:57:02

本帖最后由 zhongys 于 2014-10-11 23:04 编辑

请教邹大大
若将这一句(setq mpl (cons (list na (rtos i 2 0)) mpl))改成过滤重名块怎么改。
我改了一下
    (setq mpl (cons (strcat na) mpl))
    )
    (setq mpl (cons "2 ." mpl))
得出结果不对,如下
(2 . screw_m10_h screw_m10_l epin_ejp_9 epin_ejp_7 epin_ejp_6 epin_ejp_4)
希望得出结果如下
(2 .“ screw_m10_h,screw_m10_l,epin_ejp_9,epin_ejp_7,epin_ejp_6,epin_ejp_4”)
用于把选择的重名块去除
页: [1] 2 3
查看完整版本: 发一个统计块数量的源码