dasha321 发表于 2021-6-28 21:57:40

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

意思是,我第一次可以把需要一键能关闭和开启的图层选择好了,然后,以后只需要按快捷键就可以快速的同时打开和关闭已经选好的这几个图层,当然最好是能随时增减需要一键控制的图层。谢谢大神了

tigcat 发表于 2021-6-28 21:57:41

;;图层反向开关 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?mod=viewthread&tid=173685&highlight=%CD%BC%B2%E3%2B%2B%BF%AA%B9%D8

tigcat 发表于 2021-6-28 23:40:31

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

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

dasha321 发表于 2021-6-29 17:07:04

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

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

dasha321 发表于 2021-6-29 22:28:00

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

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

tigcat 发表于 2021-6-29 22:44:58

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

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

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

dasha321 发表于 2021-6-29 22:59:26

tigcat 发表于 2021-6-29 22:44
defun c:t2t()
(setq lst'("WALL_STR" "DOTE"))
(sk_layon&off2 lst)


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

dasha321 发表于 2021-6-29 23:10:09

tigcat 发表于 2021-6-29 22:44
defun c:t2t()
(setq lst'("WALL_STR" "DOTE"))
(sk_layon&off2 lst)


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

dasha321 发表于 2021-6-29 23:24:22

tigcat 发表于 2021-6-29 22:44
defun c:t2t()
(setq lst'("WALL_STR" "DOTE"))
(sk_layon&off2 lst)


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

tigcat 发表于 2021-6-29 23:39:20

;;图层反向开关 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)
页: [1] 2 3
查看完整版本: 一键控制选定的几个特定的图层的开启及关闭