选择所有对象的代码
大家好,我需要帮助完成以下代码。基本上,我需要选择对象的代码,在选择对象后,将层“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”)
))))
我被红色标记的文本卡住了。谢谢你的帮助 像这样的?
(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)
) 我添加了层选择过滤器,但它不工作。。。 另一个:
(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")
)
)
)
) 你想选择什么对象?将您的代码张贴在此处,以便我们检查 (定义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)
为我工作谢谢你。。。但是需要理解你的代码
这段代码在我这边运行得很好。请正确检查。
我还检查了zilele的代码,这也很好。有点不对劲,你的结局是什么
很抱歉,我的电脑无法使用。。我试了很多次。。。如果你能帮我。。。 您好,Grrr,
我认为您需要从选择集中排除视口对象,因为您已经使用了entmod函数。除此之外,您不需要搜索是否找到或存在目标层,因为cons函数可以使用默认值创建目标层名称。
页:
[1]
2