lpetrovi 发表于 2022-7-6 06:33:33

关闭所有层,除了

有没有办法将“-layer”命令合并到lisp例程中,以完成关闭所有层的任务,除了某个5层之外,该5层始终是我想要保留的相同层?
 
我目前正在使用它关闭除当前层之外的所有层,但不知道如何修改代码以始终保持相同的5层。。
 

(defun C:loff ( / clayer expert)
(setq clayer (getvar "clayer") expert (getvar "expert"))
(setvar "expert" 1)
(command "._layer" "_off" "*" "_on" clayer "")
(setvar "expert" expert)
(princ)
)

lpetrovi 发表于 2022-7-6 06:38:59

有没有办法将“-layer”命令合并到lisp例程中,以完成关闭所有层的任务,除了某个5层之外,该5层始终是我想要保留的相同层?
 
例如,我想关闭除以下层之外的所有层:
Storm_排水沟
建筑物
暖通空调
洒水器
停车场
 
 
我目前正在使用此LISP关闭除当前层之外的所有层,但不知道如何修改代码以始终保持这5层不变。。
 

(defun C:loff ( / clayer expert)
(setq clayer (getvar "clayer") expert (getvar "expert"))
(setvar "expert" 1)
(command "._layer" "_off" "*" "_on" clayer "")
(setvar "expert" expert)
(princ)
)

alanjt 发表于 2022-7-6 06:43:18

 
在上面写着clayer的地方,你可以把它添加到“LAYER1,LAYER2,LAYER3,LAYER4,LAYER5”。
 
层#是您希望留在上面的每个层的名称。

SLW210 发表于 2022-7-6 06:47:28

我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
 
请阅读代码发布指南,并将代码放在代码标签中。

lpetrovi 发表于 2022-7-6 06:50:29

非常感谢。

SLW210 发表于 2022-7-6 06:55:13

我将另一个线程中的帖子添加到这个帖子中。

lpetrovi 发表于 2022-7-6 06:57:06

 
 
再次感谢您在这方面的帮助!我可以打开的层数有限制吗?因为当我离开160层时,我在命令行中不断得到以下错误:
 
; error: bad argument value:AutoCAD command: #<SUBR @000000002cafd6b0 COND>

Lee Mac 发表于 2022-7-6 07:01:33

尽管在这种情况下,您收到的错误消息似乎有些奇怪,但传递给命令的字符串的长度很可能有限制。
 
试试这个:
根据需要更改突出显示列表中的层。

alanjt 发表于 2022-7-6 07:05:06

 
李的代码的另一个优点是,它可以透明地执行,并且运行速度比使用命令快得多。
我从来没有注意到在向LAYER命令输入字符串时的局限性,但我必须承认,在编写快速宏时,我输入的字符串从来没有超过通配符。如果有什么东西像你想要的那样,我绝对不会使用命令来写。

Tharwat 发表于 2022-7-6 07:08:24

如果图形中不存在任何图层,则所有图层都将关闭。
 

(defun c:Test (/ l e c)
;;;--- Tharwat 23. May. 2013 ---;;;
(while (setq l (tblnext "LAYER" (not l)))
   (setq c (assoc 62 (setq e (entget (tblobjname "LAYER" (cdr (assoc 2 l)))))
          )
   )
   (if (member (strcase (cdr (assoc 2 l)))
               (mapcar 'strcase
                     '("Storm_Drains" "Building" "HVAC" "Sprinkler"
                         "Parking_Lot"
                        )
               )
       )
   (if (minusp (cdr c))
       (entmod (subst (cons 62 (- (cdr c))) c e))
   )
   (if (not (minusp (cdr c)))
       (entmod (subst (cons 62 (- (cdr c))) c e))
   )
   )
)
(princ)
)
页: [1] 2
查看完整版本: 关闭所有层,除了