jcmtxgt 发表于 2024-5-26 13:38:06

请高手帮忙,编一个按图层拆分图形的代码

本帖最后由 jcmtxgt 于 2024-5-26 13:50 编辑

工作中经常会遇到,把一个图形里面的图层移开来进行操作,图层多的比较繁复。
能不能实现一个功能,框选之后直接按图层拆分,把各个图层的实体分别移开,并且在图的右上角留下一个直线作为基准点,方便操作后再移回原位。
在明经找的一段代码,不知道对编程是否有帮助,先行谢过
根据图层名称拆分选择集SS
(defun K:SSplit4Lay (SS / EntLst en Tmp LayLst Lay LayEnts)
(defun LM:ss->ent (SS / i Lst)
    (if SS
      (repeat (setq i (sslength SS))
      (setq Lst (cons (ssname SS (setq i (1- i))) Lst))
      )
    )
);б by Lee Mac
(setq EntLst (LM:ss->ent SS))
(foreach en EntLst
    (setq Tmp (cdr (assoc 8 (entget en))))
    (if (not (member Tmp LayLst))
      (setq LayLst (cons Tmp LayLst))
    )
);
(foreach Lay LayLst
    (setq Tmp '())
    (foreach en EntLst
      (if (eq (strcase Lay) (strcase (cdr (assoc 8 (entget en)))))
      (setq Tmp (cons en Tmp))
      )
    )
    (setq LayEnts (cons (cons Lay Tmp) LayEnts))
)
(reverse LayEnts)
)






о
(K:SSplit4Lay SS) => (("Lay1" en1 en2 ... en_i) ("Lay2" en4 en5 en6 ...en_j)....)



xtjd 发表于 2024-7-2 11:07:05

上图档说明
页: [1]
查看完整版本: 请高手帮忙,编一个按图层拆分图形的代码