仅具有偶数属性的块
大家好,我发现了一个lisp,它可以选择具有属性范围的块。
效果很好,但我只想选择属性值为偶数的块,如1002、1004、1006、1008等
(defun filter_set (blk tag lo hi / ss olst)
(vl-load-com)
(if (setq ss (ssget "_X" (list (cons 0 "INSERT") (cons 2 blk) (cons 66 1))))
(foreach blk (mapcar 'cadr (ssnamex ss))
(foreach att (vlax-invoke (vlax-ename->vla-object blk) 'getattributes)
(and (eq tag (vla-get-tagstring att))
(not (<= lo (atof (vla-get-textstring att)) hi))
(ssdel blk ss)
)
)
)
)
ss
)
(sssetfirst nil (filter_set "U00025" "TEXT1" 1101 11012))
这是在查看属性“TEXT1”时,它抓取1102、1104和1106的块(都在您的范围内,甚至是) 见第10篇
哈哈,我的意思是阅读第4篇文章。我想我应该说我的帖子在上面更新了。很高兴分类了!
如果要查看多个属性的范围,可以使用以下内容:
(defun filter\u set(blk tags lo hi/iseven ss v)(defun iseven(x)(zerop(rem x 2)))(vl load com)(if(setq ss(ssget“\u x”(list(cons 0“INSERT”)(cons 2 blk)(cons 66 1))(foreach blk(mapcar’cadr(ssnamex ss))(foreach att(vlax invoke(vlax ename->vla object blk)’getattributes)(和(member(vla get tagstring att)标记)(或(非( ronjonp
yes and no.
it selects still all the blocks in range 1101 -1106 but it selects the even blocks (same blockname) in an other range.
I think (not (iseven v)) has effect on other blocks outside the range.
(defun filter_set (blk tag lo hi / iseven ss v) (defun iseven (x) (zerop (rem x 2))) (vl-load-com) (if (setq ss (ssget "_X" (list (cons 0 "INSERT") (cons 2 blk) (cons 66 1)))) (foreach blk (mapcar 'cadr (ssnamex ss)) (foreach att (vlax-invoke (vlax-ename->vla-object blk) 'getattributes) (and (eq tag (vla-get-tagstring att)) (not (
Please see post #4.
still selecting all in range but odd blocks outside the range.
Sorry .. can't replicate that. Did you download my initial code again ( post #2 )?
Using this drawing
test2.dwg Yeb....works fine.In post 6 you said: Please see post #4.
That didnt work post2 works fine.
ronjonp Many thanks
PmxCAD
页:
[1]
2