|
发表于 2010-9-1 21:07:20
|
显示全部楼层
有个问题:你是要查找名为"属性块"的块参照,还是要查找带有属性的块参照?
1 p/ o* L0 \$ o( R如果是前者,上面的代码就可以了.如果是后者,要用下面的代码- , W, t# _: a6 K# g4 ~% V' Y/ ~- b
- Sub A()& w& y$ D) o% G6 g+ `3 G
- Dim E As AcadEntity, BR As AcadBlockReference, B As Boolean, Atts As Variant9 X. ~) R2 m8 a% r
- For Each E In ThisDrawing.ModelSpace
+ ]% A/ u1 T: R: n7 T) M& l, ?. j0 O - If E.ObjectName = "AcDbBlockReference" Then. Y0 G) ]7 W1 g# `1 g
- Set BR = E: K+ H: F$ `. A$ }" B: H, n, w' Z
- Atts = BR.GetAttributes* W$ e% g; R$ W6 v! N8 n+ M! r
- If UBound(Atts) >= 0 Then
1 l5 Y5 |* h9 X: k/ u3 ]4 c - B = True
5 H% k0 @1 G) t, ?$ K - Exit For% J- o# k0 o2 r, v
- End If
1 X- k) u& D, J) d1 F% G - End If- n( P# z9 v) o1 g1 o
- Next- u$ ^0 g# h! U4 M9 e/ ~
- If B Then% Z( F/ G$ B: K0 `6 D. k# H0 [9 U
- MsgBox "存在"
" t W: _- j A9 } - Else( W- \6 T, T: U5 b3 J" W
- MsgBox "不存在"
# \4 h5 R7 B+ G- d; @ - End If: e, U6 Q; ]) s* C- a% m, X- z
- End Sub
) E9 e0 X0 g l0 Y$ Q" Q0 Y
复制代码 先声明一个变体变量,用块参照对象的"GetAttributes"方法获得块参照对象的属性数组并存放在这个变体变量中,再检查这个数组的下标,如果是-1则说明数组为空,该块参照对象没有属性;如果数组下标大于或等于0,则说明该块参照有属性. |
|