Solitechcadsolu 发表于 2022-7-5 15:04:33

选择所有对象的代码

大家好,我需要帮助完成以下代码。
 
 
基本上,我需要选择对象的代码,在选择对象后,将层“obj2”转换为“obj1”层,“dim”转换为“0”层
 
 
(定义c:autolayerchange()
(if(setq ss(ssget))
(尖头(setq i(1-(sslength ss)))
(虽然(
(setq e(ssname ss i)
x(cdr(assoc 8(entget e)))
i(1-i)
) ; 它正在返回对象层名称
(foreach x“obj2”转换为层“obj1”)
(foreach x“dim”转换为层“0”)
))))
我被红色标记的文本卡住了。谢谢你的帮助

satishrajdev 发表于 2022-7-5 15:09:16

像这样的?
 
(defun c:test ( / e i l ss)
(if (setq ss (ssget))                     ; <- add your ssget filter here
   (repeat (setq i (sslength ss))
   (setq e (entget (ssname ss (setq i (1- i)))))
   (setq l (cdr (assoc 8 e)))
   (cond ((eq l "obj2") (entmod (subst (cons 8 "obj1") (assoc 8 e) e)))
    ((eq l "dim") (entmod (subst (cons 8 "0") (assoc 8 e) e)))
   )
   )
)
(princ)
)

ziele_o2k 发表于 2022-7-5 15:11:26

我添加了层选择过滤器,但它不工作。。。

Solitechcadsolu 发表于 2022-7-5 15:16:37

另一个:
(defun c:autolayerchange ( / _in _ss _obj)
(if
   (setq _ss (ssget (list (cons 8 "obj2,dim"))));; <- change your ssget filter
   (repeat (setq _in (sslength _ss))
   (setq _obj (vlax-ename->vla-object (ssname _ss (setq _in (1- _in))))); get
   (if (= (vla-get-layer _obj) "obj2")
       (vla-put-layer _obj "obj1")
       (vla-put-layer _obj "0")
   )
   )
)
)

Grrr 发表于 2022-7-5 15:19:53

你想选择什么对象?将您的代码张贴在此处,以便我们检查

satishrajdev 发表于 2022-7-5 15:20:49

(定义c:测试(/e i l ss)
(if(setq ss(ssget(列表(cons 8“dim,obj2”))));
(重复(setq i(sslength ss))
(setq e(entget(ssname ss(setq i(1-i Ю)Ю))))
(setq l(cdr(assoc 8 e)))
(cond((eq l“obj2”)(entmod(subst(cons 8“obj1”)(assoc 8 e)e)))
((等式l“dim”)(entmod(subst(cons 8“0”)(assoc 8 e)e)))
)
)
)
(普林斯)
)
 
 
它不起作用。。。
 
 
ziele共享的代码正在工作,但它正在将两个层转换为它应该转换的“0”层(obj2到obj1,dim到0)

Solitechcadsolu 发表于 2022-7-5 15:25:01

 
 
为我工作谢谢你。。。但是需要理解你的代码

Solitechcadsolu 发表于 2022-7-5 15:27:42

 
这段代码在我这边运行得很好。请正确检查。
 
我还检查了zilele的代码,这也很好。有点不对劲,你的结局是什么

satishrajdev 发表于 2022-7-5 15:32:45

 
 
 
很抱歉,我的电脑无法使用。。我试了很多次。。。如果你能帮我。。。

Solitechcadsolu 发表于 2022-7-5 15:35:22

您好,Grrr,
我认为您需要从选择集中排除视口对象,因为您已经使用了entmod函数。除此之外,您不需要搜索是否找到或存在目标层,因为cons函数可以使用默认值创建目标层名称。
页: [1] 2
查看完整版本: 选择所有对象的代码