|
发表于 2010-9-1 20:47:27
|
显示全部楼层
来自: 中国辽宁
参考下面代码- # j. d' n B: l* o/ U0 t
- Sub A()- ]' n& g& B2 `! F9 ]$ i' V
- Dim E As AcadEntity, BR As AcadBlockReference, B As Boolean0 X& I) u. T+ U" U, ?+ b
- For Each E In ThisDrawing.ModelSpace
* w* l, J" B8 z' \ - If E.ObjectName = "AcDbBlockReference" Then
: n' ^, y& H9 Y! Y, E( Y0 ~5 ]1 R! ` - Set BR = E
~ k' O$ c7 e$ r B - If BR.Name = "属性块" Then
) e3 o# _! w6 ?+ Q0 F2 w2 W - B = True, o, S9 [$ ~9 d1 m$ }% b& M" a
- Exit For
: R- m6 h: U$ k - End If3 h. o4 U* ]) A1 r) P
- End If
1 N! M) |9 x; \ - Next
" B: W! K! u& H9 V. u. l9 I: J - If B Then, U" ^7 ^2 \- T$ K. m4 s3 S f. h
- MsgBox "存在"- q( ]! G0 I# B
- Else, ~$ C) ~! c. _7 M( ^! v( K% `
- MsgBox "不存在"
% g) U2 a' c- h4 K- F+ c2 G - End If( h8 v' j8 D3 G6 R Y
- End Sub
! Q$ `! x7 L$ o# e
复制代码 "For Each XX In ThisDrawing.ModelSpace....Next"是循环遍历模型空间所有图元对象,而你的循环变量声明为块参照对象.假如模型空间只有块参照一种对象,那你的代码就不会出错.如果模型空间中存在多种图元对象,那当然会出现"类型不匹配"错误了.所以,遍历模型空间要使用"AcadEntity"型变量或者"Object"甚至是"Variant".
: h& X9 ~4 p) U: y. A! k5 e9 q$ e1 z上面的代码中用"AcadEntity"型变量做循环变量遍历模型空间,检查每个图元的"ObjectName"属性,当发现"AcDbBlockReference"(块参照)图元时,再进一步检查是否是所要查找的块参照. |
|