|
发表于 2010-9-1 20:47:27
|
显示全部楼层
来自: 中国辽宁
参考下面代码
, s, n& i9 E. A3 { W8 K) }# _, I- Sub A()
) X+ y, X9 H4 p - Dim E As AcadEntity, BR As AcadBlockReference, B As Boolean9 \2 { g& q4 v6 o
- For Each E In ThisDrawing.ModelSpace/ J% l' i# ^) v) X
- If E.ObjectName = "AcDbBlockReference" Then* c' I6 h/ g& M d+ x/ k$ {
- Set BR = E- H+ Y$ m# P8 p5 \
- If BR.Name = "属性块" Then/ k5 h7 j. i3 n/ B* p$ `
- B = True( [9 [8 C% [/ S' z( w% V
- Exit For
9 q: h1 W: Z) K8 Y+ v0 z8 b - End If
$ s; G! h8 `5 R$ a& Z6 `. L - End If
1 u4 i0 {0 A7 F - Next1 [( |+ D+ p- E8 j- z1 W/ V# ]7 W
- If B Then/ o0 v, d' v |+ J9 S4 G
- MsgBox "存在"' t) V' H9 x# d2 f) [' h& O
- Else- b* ?5 E1 Y/ S( F( z
- MsgBox "不存在"
2 Y8 R! N! a# Y- @. P4 a - End If
/ G. A1 x" K3 Z3 ~' W( i: H7 K+ j# v - End Sub
% B/ F. R6 r L7 s- g( ^
复制代码 "For Each XX In ThisDrawing.ModelSpace....Next"是循环遍历模型空间所有图元对象,而你的循环变量声明为块参照对象.假如模型空间只有块参照一种对象,那你的代码就不会出错.如果模型空间中存在多种图元对象,那当然会出现"类型不匹配"错误了.所以,遍历模型空间要使用"AcadEntity"型变量或者"Object"甚至是"Variant".
" r! T& o7 h0 g* ?+ J* \1 U, x8 b上面的代码中用"AcadEntity"型变量做循环变量遍历模型空间,检查每个图元的"ObjectName"属性,当发现"AcDbBlockReference"(块参照)图元时,再进一步检查是否是所要查找的块参照. |
|