|
发表于 2010-9-1 20:47:27
|
显示全部楼层
来自: 中国辽宁
参考下面代码- K2 C! m6 V% _: T
- Sub A()
/ O( H2 F% A& A. H# ~ m - Dim E As AcadEntity, BR As AcadBlockReference, B As Boolean: u3 g& I I* \. r
- For Each E In ThisDrawing.ModelSpace
0 f1 L: Y$ V- D( [' r, K5 {& h - If E.ObjectName = "AcDbBlockReference" Then
y" W7 i6 q4 g; i- P. v( r - Set BR = E* W( }5 Q9 `. b8 C
- If BR.Name = "属性块" Then
5 ?' ^: I4 p! ^: ^1 l# z; o( B( h6 { - B = True; P% h( N5 _. L' c
- Exit For
+ B9 _' D3 h7 x& q& [/ M - End If
9 m7 W0 V5 }. m0 e - End If
5 G/ g7 X0 j {( X# a - Next
! B \, b3 M0 T! L7 L* _8 t - If B Then" F9 x9 O& g) M" W0 n5 x `8 ^
- MsgBox "存在", p5 K" z/ g* A6 o1 [- T* k
- Else L# I! W$ M1 l* N$ |1 s
- MsgBox "不存在"
, ^- W4 N, ~5 B8 e& Y2 j# I - End If, D! k8 l2 C1 i+ n3 z- Z
- End Sub) S3 W- F# F0 T! J: H( w. x, U
复制代码 "For Each XX In ThisDrawing.ModelSpace....Next"是循环遍历模型空间所有图元对象,而你的循环变量声明为块参照对象.假如模型空间只有块参照一种对象,那你的代码就不会出错.如果模型空间中存在多种图元对象,那当然会出现"类型不匹配"错误了.所以,遍历模型空间要使用"AcadEntity"型变量或者"Object"甚至是"Variant".& ~( V6 d/ [4 Z3 D; K! N! [: y
上面的代码中用"AcadEntity"型变量做循环变量遍历模型空间,检查每个图元的"ObjectName"属性,当发现"AcDbBlockReference"(块参照)图元时,再进一步检查是否是所要查找的块参照. |
|