cad关闭当前图层LISP?

希望实现通过快捷键打开/关闭任意图层。
自己改了个程序,出现个问题:
如果要关闭的图层是当前图层,则无法关闭程序如下
(defun c:G11()
(setq cmd(getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "layer" "off" "11" "" )
(setvar "cmdecho" cmd)
(prin1)
)
然后我将(command "layer" "off" "11" "" )
改为(command "layer" "off" "11" "Y" "" )
此时又出现了新的问题:
在关闭非当前图层时,会出现-layer的对话列表,需要再敲一次回车/空格。
请问如何解决?是否可以读取当前图层,然后按不同情况执行command layer?
最好可以将LISP程序贴上。

(princ "\n当前图层的打开与关闭")
(defun c:abc()
  (setq layname (getvar "clayer"))
  (setq layen (tblobjname "layer" layname))
  (setq data (entget layen))
  (setq dxf62 (cdr (assoc 62 data)))
  (if (minusp dxf62)
    (progn
      (princ "\n打开当前层")
      (setq data (entmod (subst (cons 62 (- dxf62))(assoc 62 data) data)))
    )
    (progn
      (princ "\n关闭当前层")
      (setq data (entmod (subst (cons 62 (- dxf62))(assoc 62 data) data)))
    )
  )
  (setvar "cmdecho" 0)
  (command "redraw")
  (setvar "cmdecho" 1)
  (princ)
)

温馨提示:答案为网友推荐,仅供参考
相似回答