希望实现通过快捷键打开/关闭任意图层。
自己改了个程序,出现个问题:
如果要关闭的图层是当前图层,则无法关闭程序如下
(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程序贴上。
cad关闭当前图层LISP?
答案:1 悬赏:50 手机版
解决时间 2021-02-08 06:08
- 提问者网友:低吟詩仙的傷
- 2021-02-07 16:57
最佳答案
- 五星知识达人网友:持酒劝斜阳
- 2021-02-07 17:12
(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)
)
(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)
)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯