(defun c:test (/ _getattvalue en in ss val)
;; RJP - Simple get attribute value sub .. no error checking
(defun _getattvalue (block tag)
(vl-some
'(lambda (att) (cond ((= (strcase tag) (vla-get-tagstring att)) (vla-get-textstring att))))
(vlax-invoke block 'getattributes)
)
)
;; RJP - added (66 . 1) to filter ( attributed blocks )
(if (setq
ss (ssget "_C" '(7.244 2.071) '(16.665 10.003) '((0 . "INSERT") (8 . "FTG-Iso") (66 . 1)))
)
(foreach en (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
(if (and ;; If we have a value, and it does not match the filter then remove item from selection
(setq val (_getattvalue (vlax-ename->vla-object en) "Description"))
(wcmatch val "AAA,BBB,CCC")
)
(ssdel en ss)
)
)
)
;; Highlight selection
(sssetfirst nil ss)
(princ)
)
@ronjonp,看看这里
哎呀。。固定的
在你的第一篇帖子中没有提到属性。。。
块描述通常指:
我也有同样的想法。有时我希望有一个要求,张贴一个样本dwg。。。。 第三,我同意让我困惑的是,我承认可能从未在块中添加过描述,只是恰当地命名了它。
Re VL和其他人一样寻找错误的单词,谢谢ronjonp。也不需要从列表中删除,因为请求是更改层,如果匹配aaa、bbb、ccc,则更改。
啊!对不起,伙计们,把事情弄得如此混乱。它出现在QPROP窗口中,所以我(当然是错误的)认为这是自然描述。我应该进一步调查,并明确表示这是一个称为“描述”的属性。
好的一面是,我还在学习,我不会放弃。你们是最棒的。
格雷格
罗恩·琼普,谢谢你的密码。
我运行了它,它运行到完成,但无论描述内容如何,所有项目都保持选中状态。
我把这段代码放在“setq val”语句之后,看看它被设置成了什么。。。
我得到了这个错误,它停止了执行:;错误:错误的参数类型:stringp nil
我认为“val”变量将返回字符串。是这样吗?
格雷格 将(wcmatch val“AAA,BBB,CCC”)更改为(非(wcmatch val“AAA,BBB,CCC”))。
我改变了这一点,结果是一样的,选择了该层的每个块(在这个文件中有27个)。我甚至试过一个项目(比如“AAA”),但结果没有差别。
我想知道为什么忽略块参照属性?
格雷格
页:
1
[2]