|
|
发表于 2010-9-1 20:47:27
|
显示全部楼层
来自: 中国辽宁
参考下面代码- ; K# `/ k, I9 B4 S8 u
- Sub A()
) S" u/ J$ t9 |. {( F - Dim E As AcadEntity, BR As AcadBlockReference, B As Boolean
" B1 T- g0 A _1 L! u7 U - For Each E In ThisDrawing.ModelSpace! t8 Y* K6 ], t% s& C8 W
- If E.ObjectName = "AcDbBlockReference" Then
* p( `) i8 b$ Z1 a! I - Set BR = E2 i" M% g$ W" G! n0 p& C$ J$ b- Q
- If BR.Name = "属性块" Then
) b7 l$ Y9 G7 v* [9 ^1 m5 ^% P7 f) o - B = True
& z+ B: i+ L1 f7 V, C9 E) ?: i* r - Exit For$ Q4 V2 w+ v. V3 D4 O
- End If0 u, o' u, Y1 C+ L
- End If
3 J. M4 |1 y. _+ ^6 Y- A - Next
1 i& Z+ M+ T& A - If B Then
' e. E( w+ s7 I, M8 C% N - MsgBox "存在"4 {$ j' a" g+ j/ z' @
- Else( S0 f# \7 k: P9 K
- MsgBox "不存在"
; A! W# A# e a$ }, Z0 I - End If
! o! n ^$ A( f; g2 p7 x7 b - End Sub
5 ?: v" U! X( H4 d% b9 {9 R. s3 o( F
复制代码 "For Each XX In ThisDrawing.ModelSpace....Next"是循环遍历模型空间所有图元对象,而你的循环变量声明为块参照对象.假如模型空间只有块参照一种对象,那你的代码就不会出错.如果模型空间中存在多种图元对象,那当然会出现"类型不匹配"错误了.所以,遍历模型空间要使用"AcadEntity"型变量或者"Object"甚至是"Variant".6 J, z- F+ L1 p& T( T- T0 b
上面的代码中用"AcadEntity"型变量做循环变量遍历模型空间,检查每个图元的"ObjectName"属性,当发现"AcDbBlockReference"(块参照)图元时,再进一步检查是否是所要查找的块参照. |
|