flytoday 发表于 2012-4-13 23:22:57

求大师修改下选择对象关闭该图层

;关闭对象所在图层
(defun c:DYTC ()
(setq ss (ssget))
(setq cnt (sslength ss))
(setq cnt1 (- 1 cnt))
(setq c 0)
(while (<= c cnt1)
    (setq en (ssname ss c))
    (setq lay (cdr (assoc 8 (entget en))))
    (if (= lay (getvar "clayer"))
      (command "-layer" "off" lay "y" "")
      (progn
(command "-layer" "off" lay "")
      )
    )
    (setq c (+ 1 c))
)
(princ)
)

这段代码只能选择1个对象然后会关闭该对象的图层,,,,,就是要一个一个的选择...

1----我想修改后 能选择多个对象然后关闭对象相应的图层...
2----修改后当输入命令在未选择对象的情况下   ,,,,开启被该命令关闭的图层对应图层......

麻烦大师了谢谢......................


yjr111 发表于 2012-4-13 23:22:58

(defun c:DYTC (/ ss c en lay)
(if (setq ss (ssget))
    (progn;;;关闭
      (setq c 0)
      (while (< c (sslength ss))
        (setq en (ssname ss c))
        (setq lay (cdr (assoc 8 (entget en))))
        (if (not (member lay laylst))
          (setq laylst (cons lay laylst))
        )
        (if (= lay (getvar "clayer"))
          (command "-layer" "off" lay "y" "")
          (command "-layer" "off" lay "")
        )
        (setq c (+ 1 c))
      )
    )
    (progn;;;开启
      (setq c 0)
      (repeat (length laylst)
        (command "-layer" "on" (nth c laylst) "")
        (setq c (1+ c))
      )
    )
)
(princ)
)

flytoday 发表于 2012-4-13 23:55:16

严哥出手不一般….太感谢了了..谢谢…

e2002 发表于 2012-4-14 07:46:43

Layerp 命令用于你的第二个要求。

vlisp2012 发表于 2012-4-14 09:05:36

layfrz.可以满足第一个要求啊!
页: [1]
查看完整版本: 求大师修改下选择对象关闭该图层