明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1054|回复: 3

【K:SSplit4Lay 】根据图层名称拆分选择集SS

[复制链接]
发表于 2023-4-23 00:09:58 | 显示全部楼层 |阅读模式
本帖最后由 kucha007 于 2023-4-23 09:52 编辑

  1. ;根据图层名称拆分选择集SS
  2. (defun K:SSplit4Lay (SS / EntLst en Tmp LayLst Lay LayEnts)
  3.   (defun LM:ss->ent (SS / i Lst)
  4.     (if SS
  5.       (repeat (setq i (sslength SS))
  6.         (setq Lst (cons (ssname SS (setq i (1- i))) Lst))
  7.       )
  8.     )
  9.   );将选择集转换为实体列表 by Lee Mac
  10.   (setq EntLst (LM:ss->ent SS))
  11.   (foreach en EntLst
  12.     (setq Tmp (cdr (assoc 8 (entget en))))
  13.     (if (not (member Tmp LayLst))
  14.       (setq LayLst (cons Tmp LayLst))
  15.     )
  16.   );获取选择集包含的图层名称
  17.   (foreach Lay LayLst
  18.     (setq Tmp '())
  19.     (foreach en EntLst
  20.       (if (eq (strcase Lay) (strcase (cdr (assoc 8 (entget en)))))
  21.         (setq Tmp (cons en Tmp))
  22.       )
  23.     )
  24.     (setq LayEnts (cons (cons Lay Tmp) LayEnts))
  25.   )
  26.   (reverse LayEnts)
  27. )






大概是这种感觉:
  1. (K:SSplit4Lay SS) => (("Lay1" en1 en2 ... en_i) ("Lay2" en4 en5 en6 ...en_j)....)
复制代码


发表于 2023-4-23 09:30:41 | 显示全部楼层
  1. (defun group-by-layer (ss)
  2.   ;; 选择集转列表
  3.   (setq ents (pickset:to-list ss))
  4.   ;; 按 图层名排序
  5.   (setq ents (vl-sort ents '(lambda (x y) (< (entity:getdxf x 8)
  6.                                           (entity:getdxf y 8)))))
  7.   ;; 按图层名分组
  8.   (list:group-by ents
  9.      '(lambda (x y) (= (entity:getdxf x 8)
  10.                        (entity:getdxf y 8))))
  11. )

点评

超赞!  发表于 2023-4-23 09:49
发表于 2024-8-29 07:31:52 来自手机 | 显示全部楼层
感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 03:52 , Processed in 0.183113 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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