明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1179|回复: 3

【K:RevLay】图层对调

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

图层对调,不知道各位坛友是否还有更好的写法?
  1. ;图层对调 by kucha - 202305
  2. (defun K:RevLay (OriLay / TGTLay SS i en obj Lay)
  3.   (if (setq SS (ssget))
  4.     (repeat (setq i (sslength SS))
  5.       (setq en  (ssname SS (setq i (1- i)))
  6.             obj (vlax-ename->vla-object en)
  7.             Lay (cdr (Assoc 8 (Entget en)))
  8.       )
  9.       (if
  10.           (setq TgtLay (car
  11.                         (vl-remove-if-not
  12.                           '(lambda (x)
  13.                               (or
  14.                                 (eq (strcase Lay) (strcase (car x)))
  15.                                 (eq (strcase Lay) (strcase (cadr x)))
  16.                               )
  17.                             )
  18.                           OriLay
  19.                         )
  20.                       )
  21.           );返回对应的图层列表
  22.           (Vla-Put-Layer obj
  23.             (if (eq (strcase Lay) (strcase (car TgtLay)))
  24.               (cadr TgtLay)
  25.               (car TgtLay)
  26.             )
  27.           );图层对调
  28.       )
  29.     )
  30.   )
  31.   (princ "\n→图层已经对调") (princ)
  32. )


  1. ;用法:
  2. (K:RevLay '(("A" "B") ("C" "D") ("E" "F")))


发表于 2023-5-6 16:45:32 | 显示全部楼层
把图层名对调是否可行。
发表于 2023-5-24 11:36:29 | 显示全部楼层
本帖最后由 moshouhot 于 2023-5-24 16:22 编辑

代码不错,参考写了个转移图层的命令。

  1. (defun K:MoveEntitiesToLayer (srcLayer tgtLayer)
  2.   (setq ss (ssget "_X" (list (cons 8 (strcase srcLayer)))))
  3.   (if (and ss (> (sslength ss) 0))
  4.     (progn
  5.       (sssetfirst nil ss)
  6.       (while (setq en (ssname ss 0))
  7.         (setq obj (vlax-ename->vla-object en))
  8.         (vla-put-layer obj tgtLayer)
  9.         (ssdel en ss)
  10.       )
  11.       (princ (strcat "Entities on " srcLayer " layer moved to " tgtLayer " layer."))
  12.     )
  13.     (princ (strcat "No entities found on " srcLayer " layer or source layer does not exist."))
  14.   )
  15.   (princ)
  16. )
  1. (defun K:MoveObjToLayer (srcLayer tgtLayer objName)
  2.   (setq srcLayer (strcase srcLayer) tgtLayer (strcase tgtLayer))
  3.   (setq ss (ssget "_X" (list (cons 8 srcLayer) (cons 0 objName))))
  4.   (if (and ss (> (sslength ss) 0))
  5.     (progn
  6.       (sssetfirst nil ss)
  7.       (while (setq en (ssname ss 0))
  8.         (setq obj (vlax-ename->vla-object en))
  9.         (vla-put-layer obj tgtLayer)
  10.         (ssdel en ss)
  11.       )
  12.       (sssetfirst nil ss) ; 取消选择集
  13.       (princ (strcat "Entities on " srcLayer " layer with object type " objName " moved to " tgtLayer " layer."))
  14.     )
  15.     (princ (strcat "No entities found on " srcLayer " layer with object type " objName " or source layer does not exist."))
  16.   )
  17.   (princ)
  18. )

发表于 2023-5-31 19:59:41 | 显示全部楼层
感谢大佬分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 05:25 , Processed in 0.149453 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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