77077 发表于 2014-10-19 00:04:40

ssget一次选择后分组

用ssget获取圆 多段线和直线的代码如下
(setq ss1 (ssget '((0 . "LINE"))))
(setq ss2 (ssget '((0 . "CIRCLE"))))
(setq ss3 (ssget '((0 . "LWPOLYLINE"))))
如此一来,就要出现了三次选择,觉得有点点麻烦。

如何能一次选择后按图元类型分配到三个组里面呢?
(setq ents (ss-ents (ssget ":s")));获取图元列表
(group-ents ents '("CIRCLE" "LINE" "LWPOLYLINE"));分组
至于分组后能干什么,就看自己的用途了~~~


相关函数
;选择集到图元列表
(defun ss-ents(ss / i en ents)
   (setq i 0)
   (repeat (sslength ss)
      (setq en (ssname ss i)
                  ents (cons en ents)
                  i (1+ i)
      )
    )
   ents
)
;图元列表按类型分组
(defun group-ents (ents tylst / ty s1 s2 en)
(foreach ty tylst
(setq s1 '())
(foreach en ents
    (if (= (cdr(assoc 0 (entget en))) ty)
      (setq s1 (cons en s1))
    )
)
(setq s1 (cons ty s1))
(setq s2 (cons s1 s2))
)
(reverse s2)
)

ziyouwzb 发表于 2023-7-24 08:44:15

(setq ss (ssget))
(setq ss1 (ssget "p" '((0 . "LINE"))))
(command "select" ss "")
(setq ss2 (ssget "p" '((0 . "CIRCLE"))))
(command "select" ss "")
(setq ss3 (ssget "p" '((0 . "LWPOLYLINE"))))

zhangkui9070 发表于 2023-7-5 23:07:03

好像对文字无效

479274135 发表于 2017-12-14 13:53:20

666先收藏了

77077 发表于 2014-10-19 00:07:02

本帖最后由 77077 于 2014-10-19 00:10 编辑

相关问题
http://bbs.mjtd.com/thread-84990-1-1.html


命令: (setq ents (ss-ents (ssget ":s")))
(<图元名: 7efbd430> <图元名: 7efbd438> <图元名: 7efbd440> <图元名: 7efbd448> <图元名: 7efbd450> <图元名: 7efbd458> <图元名: 7efbd460> <图元名: 7efbd468> <图元名: 7efbd470>)

命令: (group-ents ents '("CIRCLE" "LINE" "LWPOLYLINE"))
(("CIRCLE" <图元名: 7efbd458> <图元名: 7efbd450> <图元名: 7efbd448>)
        ("LINE" <图元名: 7efbd440> <图元名: 7efbd438> <图元名: 7efbd430>)
        ("LWPOLYLINE" <图元名: 7efbd470> <图元名: 7efbd468> <图元名: 7efbd460>)
)

434939575 发表于 2014-10-19 14:23:04

比较实用.支持!

fan_zh 发表于 2014-10-20 10:23:36

学习了,mark

易云网络 发表于 2014-10-25 23:50:26

这个很实用

小师傅 发表于 2015-5-5 13:22:56

按图层信息分组要怎么写呢

xyp1964 发表于 2015-5-5 13:35:54

小师傅 发表于 2015-5-5 13:22 static/image/common/back.gif
按图层信息分组要怎么写呢;; 需要e派工具箱(XCAD)的支持
(defun c:tt ()
(if (setq ss (ssget))
    (setq lst (xyp-count1 (mapcar '(lambda (x) (list (xyp-DXF 8 x) x)) (xyp-ss2list ss))))
)
(princ)
)

小师傅 发表于 2015-5-6 11:25:14

xyp1964 发表于 2015-5-5 13:35 static/image/common/back.gif


谢谢院长的及时回复
页: [1] 2
查看完整版本: ssget一次选择后分组