明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1421|回复: 2

百思不得其解--VB开发时的选择集相关问题

[复制链接]
发表于 2007-8-13 17:31:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-8-13 17:42:45 编辑

下载了<AutoCAD2004的二次开发(VB版)及在海工模型试验数据中的应用>书中的例子学习,

发现其中选择集都用到了timer控件,代码附在下面。其实不用timer控件其实也可以进行选择和处理的啊。

问题是,为什么要用timer控件?有什么优点?请懂的兄弟帮忙解答!

我曾经写过一个处理块的程序,当块对象很多的时候,有时候会有个别块没有被处理。

再运行一次程序就处理完了,timer是否为了保证对所有对象的充分完全处理

///////////////////////////////////////////

Private Sub Command3_Click()
Dim newstr As String
If Not boo Then
  MsgBox "请先生成autocad程序对象", vbOKOnly, "autocad程序对象?"
  Exit Sub
  End If
newstr = "测量控制点图层上的对象查询" + Chr(13) + Chr(10)
newstr = newstr + "编号       对象名称       对象句柄" + Chr(13) + Chr(10)
Text1.Text = newstr
Text1.SelStart = Len(Text1.Text)
If obj_ModelSpace.Count <> 0 Then
    total = 0
    num = 0                '计数从0开始
    sum = obj_ModelSpace.Count '获得模型空间上的图形对象的数量
    Text2.Text = Str(sum)
    Timer2.Enabled = True '利用时间控件的事件开始获取图形对象
    Else
    MsgBox "当前模型空间上没有对象存在!", vbOKOnly, "工程1!"
    End If
End Sub

////////////////////////////////////////////////////////////////
Private Sub Timer2_Timer()
Dim obj_entity As Object
Timer2.Enabled = False
Set obj_entity = obj_ModelSpace.Item(num)
If obj_entity.layer = "测量控制点" Then    '判断,只列出在"测量控制点"图层上的对象
  total = total + 1
  Text1.SelText = Str(num) + "   " + obj_entity.EntityName + "   " + obj_entity.Handle + Chr(13) + Chr(10)
  End If
num = num + 1    '每运行一次,编号加1
Text2.Text = Str(sum - num)
If num = sum Then '如果计数等于对象总数即停止
 Text2.Text = Str(total)
 Exit Sub
 End If
Timer2.Enabled = True '如果前面计数不等于对象总数,则时间控件再启动。这样就能获得下一个图形对象
End Sub

发表于 2007-8-15 06:57:00 | 显示全部楼层
那是例子,可能是为了让用户看到一步一步的过程,所以才用了计时器。
 楼主| 发表于 2007-8-15 18:08:00 | 显示全部楼层
谢明总解答。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-3-11 15:47 , Processed in 0.186317 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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