[求助]怎样利用SelectOnScreen方法的过滤机制
我用本站提供的BuildFilter函数建立如下选择集程序——程序要求选择"text","mtet"和标注文本,并把选择的对象存在一变量中。但是程序无法运行,请教各位如何修改?
Public SSetObj As AcadSelectionSet
Public EntObj As AcadEntity
Private Sub www()
Dim fType As Variant
Dim fData As Variant
On Error Resume Next
Set SSetObj = ThisDrawing.SelectionSets("test")
If Err.Number <> 0 Then
Err.Clear
Set SSetObj = ThisDrawing.SelectionSets.Add("test")
End If
SSetObj.Clear
BuildFilter fType, fData, -4, "<or", 0, "text", 0, "mtext",_
0, "AcDbAlignedDimension", 0, "AcDbRotatedDimension", -4, "or>"
SSetObj.SelectOnScreen fType, fData
Dim bl
bl = EntObj.TextString
End Sub
Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
Dim fType() As Integer, fData()
Dim index As Long, i As Long
index = LBound(gCodes) - 1
For i = LBound(gCodes) To UBound(gCodes) Step 2
index = index + 1
ReDim Preserve fType(0 To index)
ReDim Preserve fData(0 To index)
fType(index) = CInt(gCodes(i))
fData(index) = gCodes(i + 1)
Next
typeArray = fType: dataArray = fData
End Sub BuildFilter fType, fData, -4, "<or", 0, "text", 0, "mtext",_
0, "AcDbAlignedDimension", 0, "AcDbRotatedDimension", -4, "or>"
一句应该改为这样吧BuildFilter fType, fData, -4, "<or", 0, "text", 0, "mtext", 0, "dimension", -4, "or>"
但是如何提取标注内容呢?用“ EntObj.TextOverride“为什么不可以 不好意思,我没有注意到。
至于TextOverride,如果标注文字未被修改过,则该属性为NULL(空字符串)。
如果你需要标注的默认值,可使用Measurement 属性来得到。
http://www.mjtd.com/object/acad2004/idh_measurement.htm 为什么我把标注尺寸分解一次之后,就不可以用TextOverride或Measurement属性提取标注文本了。
请问?怎样才能提取分解一次之后标注文本? 标注尺寸分解后,文字部分就成为了MTEXT对象了,你可以参照该类型对象的属性来获取文本内容。 本帖最后由 作者 于 2003-8-4 18:04:42 编辑
对不起,这我已经能做到了,用mtext对象的textstring属性即可。我把问题贴错了。
我是问:用"100, "BlockReference"过滤方法选择“块文字“时用“XRefDatabase“属性为什么不能获得文本内容。
该属性的帮助内容说“该属性仅仅在块的IsXRef 属性等于TRUE时才有效“
请问“IsXRef” 属性什么情况下等于true BuildFilter fType, fData, -4, "<or", 0, "text", 0, "mtext",_
0, "AcDbAlignedDimension", 0, "AcDbRotatedDimension", -4, "or>"
中"AcDbAlignedDimension", 0, "AcDbRotatedDimension" 的判断条件好象无效?
页:
[1]