明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2685|回复: 11

[讨论] ssget一次选择后分组

[复制链接]
发表于 2014-10-19 00:04 | 显示全部楼层 |阅读模式
用ssget获取圆 多段线和直线的代码如下

  1. (setq ss1 (ssget '((0 . "LINE"))))
  2. (setq ss2 (ssget '((0 . "CIRCLE"))))
  3. (setq ss3 (ssget '((0 . "LWPOLYLINE"))))
如此一来,就要出现了三次选择,觉得有点点麻烦。

如何能一次选择后按图元类型分配到三个组里面呢?

  1. (setq ents (ss-ents (ssget ":s")));获取图元列表
  2. (group-ents ents '("CIRCLE" "LINE" "LWPOLYLINE"));分组
至于分组后能干什么,就看自己的用途了~~~


相关函数

  1. ;选择集到图元列表
  2. (defun ss-ents(ss / i en ents)
  3.    (setq i 0)
  4.    (repeat (sslength ss)
  5.       (setq en (ssname ss i)
  6.                   ents (cons en ents)
  7.                   i (1+ i)
  8.       )
  9.     )
  10.    ents
  11. )
  12. ;图元列表按类型分组
  13. (defun group-ents (ents tylst / ty s1 s2 en)
  14. (foreach ty tylst
  15.   (setq s1 '())
  16.   (foreach en ents
  17.     (if (= (cdr(assoc 0 (entget en))) ty)
  18.         (setq s1 (cons en s1))
  19.     )
  20.   )
  21. (setq s1 (cons ty s1))
  22. (setq s2 (cons s1 s2))
  23. )
  24. (reverse s2)
  25. )
"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

  • · 学习|主题: 95, 订阅: 7
发表于 2023-7-24 08:44 | 显示全部楼层
(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"))))
发表于 2023-7-5 23:07 | 显示全部楼层
好像对文字无效
发表于 2017-12-14 13:53 | 显示全部楼层
666先收藏了
 楼主| 发表于 2014-10-19 00:07 | 显示全部楼层
本帖最后由 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>)
)
发表于 2014-10-19 14:23 | 显示全部楼层
比较实用.支持!
发表于 2014-10-20 10:23 | 显示全部楼层
学习了,mark
发表于 2014-10-25 23:50 | 显示全部楼层
这个很实用
发表于 2015-5-5 13:22 | 显示全部楼层
按图层信息分组要怎么写呢
发表于 2015-5-5 13:35 | 显示全部楼层
小师傅 发表于 2015-5-5 13:22
按图层信息分组要怎么写呢
  1. ;; 需要e派工具箱(XCAD)的支持
  2. (defun c:tt ()
  3.   (if (setq ss (ssget))
  4.     (setq lst (xyp-count1 (mapcar '(lambda (x) (list (xyp-DXF 8 x) x)) (xyp-ss2list ss))))
  5.   )
  6.   (princ)
  7. )
发表于 2015-5-6 11:25 | 显示全部楼层
xyp1964 发表于 2015-5-5 13:35

谢谢院长的及时回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 12:17 , Processed in 0.272608 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表