嘿伙计们,
我自己刚刚发现了动态块的可见性状态,非常有趣,可能非常有用。
我只是在定制一张客户图纸,供我们办公室使用,我只是想了解如何在多个图形中批量切换块的可见性状态。
上面的例程看起来应该可以做到这一点,但不幸的是,当我运行它时,结果是“**未选择任何内容**”。
如果我从选择集中删除块名过滤器,例程似乎运行良好。
我的工作代码是…
- (defun c:test1 ( / ss dynProps val)
- (vl-load-com)
- (if (setq ss (ssget "_x" '((0 . "INSERT"))))
- (progn
- (vla-startundomark
- (cond (*activeDoc*)
- ((setq *activeDoc*
- (vla-get-activedocument
- (vlax-get-acad-object))))))
- (vlax-for x (setq ss (vla-get-activeselectionset *activeDoc*))
- (if (and (= :vlax-true (vla-get-isdynamicblock x))
- (vl-string-search
- "4057_STICKER"
- (strcase (vla-get-effectivename x)))
- (setq dynProps (car (vlax-invoke
- x
- 'getdynamicblockproperties)))
- (vl-position
- (cond (val) ((setq val "For Client Review")))
- (vlax-get dynProps 'allowedvalues)))
- (vlax-put-property dynProps 'value val)))
- (vla-endundomark *activeDoc*)
- (vla-delete ss))
- (prompt "\n** Nothing selected ** "))
- (princ))
但我不明白为什么它没有检测到我的名为“4057_贴纸”的块。这和匿名的名字有关吗?
谢谢你的帮助。 |