明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1815|回复: 7

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

[复制链接]
发表于 2003-7-21 19:49:00 | 显示全部楼层 |阅读模式
我用本站提供的BuildFilter函数建立如下选择集程序——程序要求选择"text","mtet"和标注文本,并把选择的对象存在一变量中。
但是程序无法运行,请教各位如何修改?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-7-21 20:18:00 | 显示全部楼层
  1. Public SSetObj As AcadSelectionSet
  2. Public EntObj As AcadEntity
  3. Private Sub www()
  4.     Dim fType As Variant
  5.     Dim fData As Variant
  6.       
  7.     On Error Resume Next
  8.     Set SSetObj = ThisDrawing.SelectionSets("test")
  9.     If Err.Number <> 0 Then
  10.         Err.Clear
  11.         Set SSetObj = ThisDrawing.SelectionSets.Add("test")
  12.     End If
  13.     SSetObj.Clear
  14.     BuildFilter fType, fData, [b]-4, "<or", [/b]0, "text", 0, "mtext",  _
  15.             0, "AcDbAlignedDimension", 0, "AcDbRotatedDimension",[b] -4, "or>"[/b]
  16.     SSetObj.SelectOnScreen fType, fData
  17.     Dim bl
  18.     bl = EntObj.TextString
  19.    
  20. End Sub

  21. Public Sub BuildFilter(typeArray, dataArray, ParamArray gCodes())
  22.     Dim fType() As Integer, fData()
  23.     Dim index As Long, i As Long
  24.      
  25.     index = LBound(gCodes) - 1
  26.          
  27.     For i = LBound(gCodes) To UBound(gCodes) Step 2
  28.         index = index + 1
  29.         ReDim Preserve fType(0 To index)
  30.         ReDim Preserve fData(0 To index)
  31.         fType(index) = CInt(gCodes(i))
  32.         fData(index) = gCodes(i + 1)
  33.     Next
  34.     typeArray = fType: dataArray = fData
  35. End Sub
 楼主| 发表于 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“为什么不可以
发表于 2003-8-2 00:21:00 | 显示全部楼层
不好意思,我没有注意到。
至于TextOverride,如果标注文字未被修改过,则该属性为NULL(空字符串)。
如果你需要标注的默认值,可使用Measurement 属性来得到。
[WEB]http://www.mjtd.com/object/acad2004/idh_measurement.htm[/WEB]
 楼主| 发表于 2003-8-4 12:37:00 | 显示全部楼层
为什么我把标注尺寸分解一次之后,就不可以用TextOverride或Measurement属性提取标注文本了。
请问?怎样才能提取分解一次之后标注文本?
发表于 2003-8-4 12:44:00 | 显示全部楼层
标注尺寸分解后,文字部分就成为了MTEXT对象了,你可以参照该类型对象的属性来获取文本内容。
 楼主| 发表于 2003-8-4 12:53:00 | 显示全部楼层
本帖最后由 作者 于 2003-8-4 18:04:42 编辑

对不起,这我已经能做到了,用mtext对象的textstring属性即可。我把问题贴错了。
我是问:用"100, "BlockReference"过滤方法选择“块文字“时用“XRefDatabase“属性为什么不能获得文本内容。
该属性的帮助内容说“该属性仅仅在块的IsXRef 属性等于TRUE时才有效“
请问“IsXRef” 属性什么情况下等于true
发表于 2003-8-10 10:27:00 | 显示全部楼层
BuildFilter fType, fData, -4, "<or", 0, "text", 0, "mtext",  _
            0, "AcDbAlignedDimension", 0, "AcDbRotatedDimension", -4, "or>"
中"AcDbAlignedDimension", 0, "AcDbRotatedDimension" 的判断条件好象无效?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 14:39 , Processed in 0.189594 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表