Artek 发表于 2022-7-5 22:57:44

多个选择片段nee

你好,
 
 
有人能帮我在普通autolisp中将其更改为多选吗?提前谢谢你。
 
 
(setq entlist (entget (car (entsel "\nSelect an object: "))))
(setq nlay (cdr (assoc 8 entlist)))
(command "-layer" "off" "Layer-Name*" "on" nlay "")

ymg3 发表于 2022-7-5 23:26:39

试试这个,不要测试:
 

(setq ss (ssget))
(repeat (setq i (sslength ss))
(setq entlist (entget (ssname ss (setq i (1- i))))
    nlay (cdr (assoc 8 entlist))
)
(command "-layer" "off" "Layer-Name*" "on" nlay "")
)

 
不理解“图层名*”的来源,
但多重选择应该有效。
 
将所有图层名称放在一个列表中也是一个好主意
只处理唯一的一个。
 
ymg公司

hmsilva 发表于 2022-7-5 23:42:12

 
 
 
我同意ymg,我也不理解“层名称*”。。。
如果您的目标是将tha层与选定对象隔离,那么这样做可能会奏效
 

(defun c:demo (/ ent i lay laylst lays ss)
(if (setq ss (ssget))
   (progn
   (repeat (setq i (sslength ss))
   (setq ent (entget (ssname ss (setq i (1- i))))
         lay (cdr (assoc 8 ent))
   )
   (if (not (member lay laylst))
   (setq laylst (cons lay laylst))
   )
   )
   (setq lays "")
   (foreach l laylst
   (if (/= l (last laylst))
   (setq lays (strcat lays l ","))
   (setq lays (strcat lays l))
   )
   )
   (setvar 'CLAYER (car laylst))
   (command "-layer" "off" "*" "" "on" lays "")
   )
)
(princ)
)
HTH
亨里克

Artek 发表于 2022-7-5 23:44:13

非常感谢ymg3和HTH的投入。顺便说一句,“图层名”只是一个过滤器-很抱歉显示了这一点。我得到了完成其余代码所需的内容,再次感谢。

SLW210 发表于 2022-7-6 00:08:00

请阅读代码发布指南并编辑您的帖子以使用代码标签。
页: [1]
查看完整版本: 多个选择片段nee