takeanosan 发表于 2022-7-5 22:41:57

切换层

我希望切换一个有h前缀的层选择。
在网上找到这个,但它似乎只打开了一层。
有什么我错过的吗?
 
谢谢
 
 
(
defun c:test ()
(if LAYGROUPTOGGLE
(progn
   (command "_.-layer" "off" "h-*" "")
   (setq LAYGROUPTOGGLE 1)
)
(progn
   (command "_.-layer" "on" "*h-*" "")
   (setq LAYGROUPTOGGLE NIL)
)
))

Tharwat 发表于 2022-7-5 22:46:33

欢迎来到CADTutor。
 
这足以去掉以h-*
 

takeanosan 发表于 2022-7-5 22:49:04

啊,我不是想达到这个目的。
我相当尝试自动地分配和关闭这些层。
我的想法是:
-检查这些层是否打开,然后将其关闭;检查图层是否已关闭,然后将其打开
-手动创建一个变量,每次运行lisp时,该变量的值都会切换:其中,如果variable=nil,则关闭layer;变量=1,打开图层
 
非常感谢。

pBe 发表于 2022-7-5 22:51:56

切换Tharwat,这里的关键是切换我的朋友

pBe 发表于 2022-7-5 22:56:24

 
是否必须全部匹配层名称才能切换?如果其中一些关闭了,而另一些没有呢?

takeanosan 发表于 2022-7-5 22:58:15

是的,全部匹配。如果其中一些已经打开/关闭,对我来说并不重要。

takeanosan 发表于 2022-7-5 23:03:37

噢,谢谢塔瓦的热烈欢迎。
我很惊讶你注意到了

Tharwat 发表于 2022-7-5 23:07:03

试试这个。
 

(defun c:on-off (/ on_off l nm layers v e)
;;    Tharwat 22.July.2014      ;;
;; Toogle Layers that their names is    ;;
;; started with h-            ;;
(defun on_off (code ent) (entmod (subst (cons 62 code) (assoc 62 ent) ent)))
(while (setq l (tblnext "LAYER" (not l)))
   (if (wcmatch (setq nm (cdr (assoc 2 l))) "h-*")
   (setq layers (cons nm layers))
   )
)
(foreach layer layers
   (if (minusp (setq v (cdr (assoc 62 (setq e (entget (tblobjname "LAYER" layer)))))))
   (on_off (abs v) e)
   (on_off (- v) e)
   )
)
(princ)
)

takeanosan 发表于 2022-7-5 23:08:32

我似乎无法运行它,也不了解足够的代码来检查是否有任何错误。REGEN没有帮助。卸下所有其他口吃,排除任何冲突。
 
以下是我的命令列表:
 
还有什么我能帮忙的吗?

Tharwat 发表于 2022-7-5 23:13:08

 
你是怎么做的?你能解释一下步骤吗?
页: [1] 2
查看完整版本: 切换层