明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2875|回复: 29

一键控制选定的几个特定的图层的开启及关闭

[复制链接]
发表于 2021-6-28 21:57 | 显示全部楼层 |阅读模式
1明经币
意思是,我第一次可以把需要一键能关闭和开启的图层选择好了,然后,以后只需要按快捷键就可以快速的同时打开和关闭已经选好的这几个图层,当然最好是能随时增减需要一键控制的图层。谢谢大神了

最佳答案

查看完整内容

;;图层反向开关 LST图层列表 如果开则关,关则开 ;;code by edata @mjtd.com 2014-8-4 (defun sk_layon&off2(lst / obj) (vlax-for obj (vla-get-layers(vla-get-activedocument(vlax-get-acad-object))) (if (member (strcase (vla-get-name obj)) (mapcar 'strcase lst)) (if (= (vla-get-layeron obj) :vlax-true) (vla-put-layeron obj :vlax-false) (vla-put-layeron obj :vlax-true) ...
发表于 2021-6-28 21:57 | 显示全部楼层
;;图层反向开关 LST图层列表 如果开则关,关则开
;;code by edata @mjtd.com 2014-8-4
(defun sk_layon&off2(lst / obj)
  (vlax-for obj (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
    (if (member (strcase (vla-get-name obj)) (mapcar 'strcase lst))
      (if (= (vla-get-layeron obj) :vlax-true)
        (vla-put-layeron obj :vlax-false)
        (vla-put-layeron obj :vlax-true)
        )
      )
    )  
  )
;;图层开关 LST图层列表 on&off=T为开 nil为关
;;code by edata @mjtd.com 2014-8-4
(defun sk_layon2(lst on&off / obj)
  (vlax-for obj (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
    (if (member (strcase (vla-get-name obj)) (mapcar 'strcase lst))
      (if on&off (vla-put-layeron obj :vlax-true) (vla-put-layeron obj :vlax-false))
      )
    )  
  )
(defun c:tt()
  (setq lst'("0" "layer1" "layer2" "layer3" "layer4" "layer5" "layer6" "layer7" "layer8" "layer9" "layer10" "layer11" "layer12"))
  (sk_layon2 lst nil)
  )
http://bbs.mjtd.com/forum.php?mo ... 3%2B%2B%BF%AA%B9%D8
回复

使用道具 举报

发表于 2021-6-28 23:40 | 显示全部楼层
tigcat 发表于 2021-6-28 23:38
;;图层反向开关 LST图层列表 如果开则关,关则开
;;code by edata @mjtd.com 2014-8-4
(defun sk_layon&o ...

把双引号里的名称”0“、”layer"……换成你想操作的图层名,如果图层开着的,按命令tt则会关,如果关着的,按命令则会开。E版代码,非常精简高效。
回复

使用道具 举报

 楼主| 发表于 2021-6-29 17:07 | 显示全部楼层
tigcat 发表于 2021-6-28 23:40
把双引号里的名称”0“、”layer"……换成你想操作的图层名,如果图层开着的,按命令tt则会关,如果关着 ...

谢谢你,图层名能不能选择,而不是手动改,选择的意思是在CAD操作界面点选或框选相应的图层,再次感谢你
回复

使用道具 举报

 楼主| 发表于 2021-6-29 22:28 | 显示全部楼层
tigcat 发表于 2021-6-28 23:38
;;图层反向开关 LST图层列表 如果开则关,关则开
;;code by edata @mjtd.com 2014-8-4
(defun sk_layon&o ...

你好,大神,我试了一下,设置好图层后,只能一键关闭,不能一键打开呢
回复

使用道具 举报

发表于 2021-6-29 22:44 | 显示全部楼层
dasha321 发表于 2021-6-29 22:28
你好,大神,我试了一下,设置好图层后,只能一键关闭,不能一键打开呢

defun c:t2t()
  (setq lst'("WALL_STR" "DOTE"))
  (sk_layon&off2 lst)
  )

c:后面随便改你自己快捷键,图层名自己填一下。我想帮你试着写点取获取图层名,没弄好
回复

使用道具 举报

 楼主| 发表于 2021-6-29 22:59 | 显示全部楼层
tigcat 发表于 2021-6-29 22:44
defun c:t2t()
  (setq lst'("WALL_STR" "DOTE"))
  (sk_layon&off2 lst)

那也谢谢你,大神,真的感谢
回复

使用道具 举报

 楼主| 发表于 2021-6-29 23:10 | 显示全部楼层
tigcat 发表于 2021-6-29 22:44
defun c:t2t()
  (setq lst'("WALL_STR" "DOTE"))
  (sk_layon&off2 lst)

如果有时间,你能帮忙把点选的给弄一下吗,这样的话就更好了,万分感谢了,大神
回复

使用道具 举报

 楼主| 发表于 2021-6-29 23:24 | 显示全部楼层
tigcat 发表于 2021-6-29 22:44
defun c:t2t()
  (setq lst'("WALL_STR" "DOTE"))
  (sk_layon&off2 lst)

另外,大神,打开选定的这几个图层的同时,能不能实现同时关闭这几个图层之后的所有图层啊,这个功能
回复

使用道具 举报

发表于 2021-6-29 23:39 | 显示全部楼层
;;图层反向开关 LST图层列表 如果开则关,关则开
;;code by edata @mjtd.com 2014-8-4
(defun sk_layon&off2(lst / obj)
  (vlax-for obj (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
    (if (member (strcase (vla-get-name obj)) (mapcar 'strcase lst))
      (if (= (vla-get-layeron obj) :vlax-true)
        (vla-put-layeron obj :vlax-false)
        (vla-put-layeron obj :vlax-true)
        )
      )
    )  
  )
;;图层开关 LST图层列表 on&off=T为开 nil为关
;;code by edata @mjtd.com 2014-8-4
(defun sk_layon2(lst on&off / obj)
  (vlax-for obj (vla-get-layers(vla-get-activedocument(vlax-get-acad-object)))
    (if (member (strcase (vla-get-name obj)) (mapcar 'strcase lst))
      (if on&off (vla-put-layeron obj :vlax-true) (vla-put-layeron obj :vlax-false))
      )
    )  
  )

(defun c:tt (/ lst_a)
  (setq lst_a nil)
  (while (setq en (nentsel
                    "\请选择关闭图层的物体<不选择自动操作上次操作的图层>:"
                  )
         )
   
    (setq ent (entget (car en)))
    (setq ent_8 (cdr(assoc 8 ent)))
    (if        (not (member ent_8 lst_a))
         (setq lst_a (cons ent_8 lst_a))        
    )
    (setq lst lst_a)
  )
;;;  (setq lst lst_a)
;;;  (setq lst'("0" "layer1" "layer2" "layer3" "layer4" "layer5" "layer6" "layer7" "layer8" "layer9" "layer10" "layer11" "layer12"))
  (sk_layon&off2 lst)
  (prin1)
)
(prompt "\n版权归E版所有,修改仅为交流")
(prompt "\ncode by edata @mjtd.com 2014-8-4")
(prin1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 08:26 , Processed in 0.336723 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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