bsirhell 发表于 2006-7-2 09:45:00

[求助]计算选择集中某个字符个数的问题:

<P>计算选择集中某个字符个数的问题:</P>
<P>以下是我的代码:</P>
<P>Public Sub count()</P>
<P>&nbsp;&nbsp;&nbsp; On Error Resume Next<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; Dim objtext As AcadText<BR>&nbsp;&nbsp;&nbsp; Dim height As Double<BR>&nbsp;&nbsp;&nbsp; Dim width As Double<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Dim SSet As AcadSelectionSet<BR>&nbsp;&nbsp;&nbsp; If Not IsNull(ThisDrawing.SelectionSets.Item("this")) Then<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set SSet = ThisDrawing.SelectionSets.Item("this")<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSet.Delete<BR>&nbsp;&nbsp;&nbsp; End If<BR>&nbsp;&nbsp;&nbsp; Set SSet = ThisDrawing.SelectionSets.Add("this")<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Dim filterType(0) As Integer<BR>&nbsp;&nbsp;&nbsp; Dim filterData(0) As Variant<BR>&nbsp;&nbsp;&nbsp; filterType(0) = 0<BR>&nbsp;&nbsp;&nbsp; filterData(0) = "Text"<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; SSet.SelectOnScreen filterType, filterData<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; Dim pt1(0 To 2) As Double<BR>&nbsp;&nbsp;&nbsp; Dim pt2(0 To 2) As Double<BR>&nbsp;&nbsp;&nbsp; pt1(0) = 0: pt1(1) = 0: pt1(2) = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp; pt2(0) = 0: pt2(1) = 180: pt2(2) = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp; Dim n As Integer<BR>&nbsp;&nbsp;&nbsp;&nbsp; n = 0<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; For Each objtext In SSet<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; If objtext.TextString = "T" Then n = n + 1<BR>&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; AddLine pt1, pt2<BR>&nbsp;&nbsp;&nbsp; MsgBox "一共有" &amp; n &amp; "个字符", vbOKOnly<BR>&nbsp; EXIT FOR<BR>&nbsp;&nbsp;&nbsp; Next<BR>&nbsp;<BR>End Sub</P>
<P>运行得到的结果却与想象中的相差较远,</P>
<P>我本想输出选择集中“T”的数量,(例如T是选择集中任一字符),而输出结果为0,</P>
<P>请问上面的函数该如何修正?</P>
<P>是否要用LEN函数来统计字符数量?</P>

雪山飞狐_lzh 发表于 2006-7-2 11:03:00

<P>你是想只查找“T”,还是包含“T”的</P>
<P>“aT”这样的要计算在内么?</P>

bsirhell 发表于 2006-7-2 17:43:00

我只查“T”,而且文字是单独出现在图档中的单个文字 ,不需要“AT”这样的!当然图档中还有另外的单个文字要统计,比如还有“R”,“X”等!

雪山飞狐_lzh 发表于 2006-7-2 18:58:00

Public Sub count()
    On Error Resume Next
      
    Dim SSet As AcadSelectionSet
    ThisDrawing.SelectionSets("this").Delete
    Set SSet = ThisDrawing.SelectionSets.Add("this")
   
    Dim filterType(1) As Integer
    Dim filterData(1) As Variant
    filterType(0) = 0
    filterData(0) = "Text"
    filterType(1) = 1
    filterData(1) = "T"
   
    SSet.SelectOnScreen filterType, filterData
         
    MsgBox "一共有" & SSet.count & "个字符", vbOKOnly

End Sub

bsirhell 发表于 2006-7-3 09:01:00

谢谢,如果另外的单个文字要统计,比如还有“R”,“X”,该如改上面的代码?
页: [1]
查看完整版本: [求助]计算选择集中某个字符个数的问题: