〆看_淡点 发表于 2022-10-18 21:25:33

选择一个物体,识别图层单独打开,并且同时开启另外几个图层。

假设,
1,2,3,4,5 是一个组

A,B,C,D,E是一个组

6,7,8,9,0,是一个组
F,G,H,I,J,K,是一个组

我输入命令,鼠标选中一个直线,或者其他任何图元,
选中的这个图元是图层1, 那么就开启   1,2,3,4,5 这个一个组

只要选中的 图元是1,2,3,4,5 这个一个组中的任何一个图层, 都会开启这个组的图层,单都开启这一组的图层。其他层关闭,

同理,要是选中的A,B,C,D,E 这个组中的任何一个,也就打开这一个组的图层。 单都开启这一组的图层。其他层关闭,

同理,要是选中的 6,7,8,9,0, 这个组中的任何一个,也就打开这一个组的图层。 单都开启这一组的图层。其他层关闭,

ssyfeng 发表于 2022-10-18 21:25:34

本帖最后由 ssyfeng 于 2022-10-19 11:14 编辑

看看这个是不是你需要效果:

xtjd 发表于 2022-10-19 10:49:38

(defun c:test(/ en lay1 lay2 lays)
(vl-load-com)
(setq lays(list
                      '("1" "2" "3" "4" "5")
                      '("6" "7" "8" "9" "0")
                      '("A" "B" "C" "D" "E")
                      '("F" "G" "H" "I" "J" "K")
                )
)
(if(setq en(entsel))
(progn
   (setq lay1(cdr(assoc 8(entget(car en)))))
   (if(setq lay2(vl-remove-if-not '(lambda(x)(member lay1 x))lays))
    (command ".layer" "s" lay1 "t" "*" "off" "*" "y" "on" (apply 'strcat(mapcar '(lambda(x)(strcat x ","))(car lay2))) "" )
   )
)
)
(prin1)
)

〆看_淡点 发表于 2022-10-19 19:10:26

2个都可以使用,很好用,简短的这个,复制了好多次才能使用,不知道是什么原因经常提示有问题,但是还是搞好了,不知道是不是复制了其他的。 ,。

〆看_淡点 发表于 2022-10-19 19:23:42

ssyfeng 发表于 2022-10-18 21:25
看看这个是不是你需要效果:

是这个效果,要是要关闭这个图层组,是怎么弄?

〆看_淡点 发表于 2022-10-19 20:10:55

xtjd 发表于 2022-10-19 10:49


是这个效果,要是要关闭这个图层组,是怎么弄?现在这个是打开, 要是要关闭选中的任何一个图层,就关闭这个图层组。

ssyfeng 发表于 2022-10-20 08:44:26

把这两个掉换一下

xtjd 发表于 2022-10-20 09:24:35

〆看_淡点 发表于 2022-10-19 20:10
是这个效果,要是要关闭这个图层组,是怎么弄?现在这个是打开, 要是要关闭选中的任何一个图层,就关 ...


〆看_淡点 发表于 2022-10-21 14:17:44

xtjd 发表于 2022-10-20 09:24


感谢感谢,要的就是这样的,

qwertyuiop[] 发表于 2023-2-13 21:07:29

:victory:感谢感谢,要的就是这样的,我也需要这样的
页: [1] 2
查看完整版本: 选择一个物体,识别图层单独打开,并且同时开启另外几个图层。