HQ_2003 发表于 2003-7-21 19:49:00

[求助]怎样利用SelectOnScreen方法的过滤机制

我用本站提供的BuildFilter函数建立如下选择集程序——程序要求选择"text","mtet"和标注文本,并把选择的对象存在一变量中。
但是程序无法运行,请教各位如何修改?

mccad 发表于 2003-7-21 20:18:00

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

HQ_2003 发表于 2003-8-1 18:55:00

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“为什么不可以

mccad 发表于 2003-8-2 00:21:00

不好意思,我没有注意到。
至于TextOverride,如果标注文字未被修改过,则该属性为NULL(空字符串)。
如果你需要标注的默认值,可使用Measurement 属性来得到。
http://www.mjtd.com/object/acad2004/idh_measurement.htm

HQ_2003 发表于 2003-8-4 12:37:00

为什么我把标注尺寸分解一次之后,就不可以用TextOverride或Measurement属性提取标注文本了。
请问?怎样才能提取分解一次之后标注文本?

mccad 发表于 2003-8-4 12:44:00

标注尺寸分解后,文字部分就成为了MTEXT对象了,你可以参照该类型对象的属性来获取文本内容。

HQ_2003 发表于 2003-8-4 12:53:00

本帖最后由 作者 于 2003-8-4 18:04:42 编辑

对不起,这我已经能做到了,用mtext对象的textstring属性即可。我把问题贴错了。
我是问:用"100, "BlockReference"过滤方法选择“块文字“时用“XRefDatabase“属性为什么不能获得文本内容。
该属性的帮助内容说“该属性仅仅在块的IsXRef 属性等于TRUE时才有效“
请问“IsXRef” 属性什么情况下等于true

liujiping 发表于 2003-8-10 10:27:00

BuildFilter fType, fData, -4, "<or", 0, "text", 0, "mtext",_
            0, "AcDbAlignedDimension", 0, "AcDbRotatedDimension", -4, "or>"
中"AcDbAlignedDimension", 0, "AcDbRotatedDimension" 的判断条件好象无效?
页: [1]
查看完整版本: [求助]怎样利用SelectOnScreen方法的过滤机制