错误
嘿,伙计们,我Lisp程序的时候出错了(defun c:Test(/ activedoc newsset ssets ssnm)
(vl-load-com)
(setq activedoc(vla-get-activedocument (vlax-get-acad-object)))
(setq ssets(vla-get-selectionsets activedoc))
(setq newsset(vla-add ssets "ss1"))
(vla-selectonscreen newsset)
(setq cntr 0)
(repeat (vla-get-count newsset)
(setq iteam(vla-item newsset cntr))
(setq check(vlax-property-available-p item "Color" t))
(if check
(vlax-put-property item "color" 4 )
)
(setq cntr(1+ cntr))
)
)
; error: Automation Error. The named selection set exists 噢我自己找到了解决办法
(vla-delete(vla-item ssets "ss1")) (defun c:Test (/ activedoc newsset ssets ssnm)
(vl-load-com)
(setq activedoc (vla-get-activedocument (vlax-get-acad-object)))
(setq ssets (vla-get-selectionsets activedoc))
(if (not (vl-catch-all-error-p
(setq exs (vl-catch-all-apply
'vla-item
(list ssets "ss1")
) ;_ end of vl-catch-all-apply
) ;_ end of setq
) ;_ end of vl-catch-all-error-p
) ;_ end of not
(vla-delete exs)
) ;_ end of if
(setq newsset (vla-add ssets "ss1"))
(vla-selectonscreen newsset)
(setq cntr 0)
(repeat (vla-get-count newsset)
(setq item (vla-item newsset cntr))
(setq check (vlax-property-available-p item "Color" t))
(if check
(vlax-put-property item "color" 4)
) ;_ end of if
(setq cntr (1+ cntr))
) ;_ end of repeat
)
注:iteam to item pBe公司
谢谢你更新代码
哎呀。。。那是我的错
不客气,很高兴有帮助 我建议如下:
(defun c:test ( / ssc sso )
(setq ssc (vla-get-selectionsets (vla-get-activedocument (vlax-get-acad-object))))
(if (vl-catch-all-error-p (setq sso (vl-catch-all-apply 'vla-item (list ssc "ss1"))))
(setq sso (vla-add ssc "ss1"))
(vla-clear sso)
)
(vla-selectonscreen sso)
(vlax-for obj sso (vla-put-color obj accyan))
(vla-delete sso)
(princ)
)
(vl-load-com) 坦克u lee
代码的储罐。。它看起来比我的简单
不客气,甘尼什。
我的代码中需要注意的几点:ActiveX SelectionSet对象是一个集合,因此可以使用vlax for函数进行迭代,而不是使用vla item在集合中的每个索引处检索项。此外,请始终记住在完成时删除SelectionSet对象(使用vla delete),以免使SelectionSets集合膨胀。
最后,无需测试颜色特性的可用性,因为所有图形对象都具有此特性,但是,您可能仍需要考虑锁定图层上的对象,该特性将是只读的。
页:
[1]