|
|
发表于 2010-9-1 20:47:27
|
显示全部楼层
来自: 中国辽宁
参考下面代码- + q: g3 x( t% F+ [
- Sub A() a* d0 g* P2 R, O/ Y0 ~( o6 ?
- Dim E As AcadEntity, BR As AcadBlockReference, B As Boolean
3 p4 h1 _5 o" L: \6 T/ i, o1 a" A - For Each E In ThisDrawing.ModelSpace- T2 g7 u7 U) X& @
- If E.ObjectName = "AcDbBlockReference" Then; M0 P: G+ b5 V) c3 `! x7 H0 L
- Set BR = E9 b: H! M# {' B8 o* M$ E7 ?' N# m X
- If BR.Name = "属性块" Then
4 H, ~: P0 U. a* y: @ - B = True
( P9 j/ f/ v, w/ Z - Exit For3 p1 Y# n& c* e6 D
- End If
2 `/ v5 [# T% T% Y' a+ W7 t - End If9 k s) ^& {& v/ f
- Next* \! N T! o% W0 a
- If B Then
) ~+ A/ q; h1 r4 |' G8 t - MsgBox "存在"1 \; N5 n5 {& J3 x
- Else* @- `& X- k( q* _: C5 i
- MsgBox "不存在"
4 }! e! W$ |' G/ O$ V) C% s - End If" y0 n8 g6 s/ N+ o5 F8 E6 n, ^
- End Sub
6 W. a; F& K8 |
复制代码 "For Each XX In ThisDrawing.ModelSpace....Next"是循环遍历模型空间所有图元对象,而你的循环变量声明为块参照对象.假如模型空间只有块参照一种对象,那你的代码就不会出错.如果模型空间中存在多种图元对象,那当然会出现"类型不匹配"错误了.所以,遍历模型空间要使用"AcadEntity"型变量或者"Object"甚至是"Variant".
( P8 K, v( ]% {! @. A% [( h# |* q上面的代码中用"AcadEntity"型变量做循环变量遍历模型空间,检查每个图元的"ObjectName"属性,当发现"AcDbBlockReference"(块参照)图元时,再进一步检查是否是所要查找的块参照. |
|