xxxtttxxx 发表于 2007-8-13 17:31:00

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

本帖最后由 作者 于 2007-8-13 17:42:45 编辑 <br /><br /> <p>下载了&lt;AutoCAD2004的二次开发(VB版)及在海工模型试验数据中的应用&gt;书中的例子学习,</p><p>发现其中选择集都用到了timer控件,代码附在下面。其实不用timer控件其实也可以进行选择和处理的啊。</p><p>问题是,为什么要用timer控件?有什么优点?请懂的兄弟帮忙解答!</p><p></p><p>我曾经写过一个处理块的程序,当块对象很多的时候,有时候会有个别块没有被处理。</p><p>再运行一次程序就处理完了,<font color="#ff0000">timer是否为了保证对所有对象的充分完全处理</font>?</p><p>///////////////////////////////////////////</p><p></p><p>Private Sub Command3_Click()<br/>Dim newstr As String<br/>If Not boo Then<br/>&nbsp; MsgBox "请先生成autocad程序对象", vbOKOnly, "autocad程序对象?"<br/>&nbsp; Exit Sub<br/>&nbsp; End If<br/>newstr = "测量控制点图层上的对象查询" + Chr(13) + Chr(10)<br/>newstr = newstr + "编号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对象句柄" + Chr(13) + Chr(10)<br/>Text1.Text = newstr<br/>Text1.SelStart = Len(Text1.Text)<br/>If obj_ModelSpace.Count &lt;&gt; 0 Then<br/>&nbsp;&nbsp;&nbsp; total = 0<br/>&nbsp;&nbsp;&nbsp; num = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '计数从0开始<br/>&nbsp;&nbsp;&nbsp; sum = obj_ModelSpace.Count '获得模型空间上的图形对象的数量<br/>&nbsp;&nbsp;&nbsp; Text2.Text = Str(sum)<br/>&nbsp;&nbsp;&nbsp; <font color="#ff0000">Timer2.Enabled = True</font> '利用时间控件的事件开始获取图形对象<br/>&nbsp;&nbsp;&nbsp; Else<br/>&nbsp;&nbsp;&nbsp; MsgBox "当前模型空间上没有对象存在!", vbOKOnly, "工程1!"<br/>&nbsp;&nbsp;&nbsp; End If<br/>End Sub</p><p>////////////////////////////////////////////////////////////////<br/>Private Sub Timer2_Timer()<br/>Dim obj_entity As Object<br/><font color="#ff0000">Timer2.Enabled = False</font><br/>Set obj_entity = obj_ModelSpace.Item(num)<br/>If obj_entity.layer = "测量控制点" Then&nbsp;&nbsp;&nbsp; '判断,只列出在"测量控制点"图层上的对象<br/>&nbsp; total = total + 1<br/>&nbsp; Text1.SelText = Str(num) + "&nbsp;&nbsp; " + obj_entity.EntityName + "&nbsp;&nbsp; " + obj_entity.Handle + Chr(13) + Chr(10)<br/>&nbsp; End If<br/>num = num + 1&nbsp;&nbsp;&nbsp; '每运行一次,编号加1<br/>Text2.Text = Str(sum - num)<br/>If num = sum Then '如果计数等于对象总数即停止<br/>&nbsp;Text2.Text = Str(total)<br/>&nbsp;Exit Sub<br/>&nbsp;End If<br/><font color="#ff0000">Timer2.Enabled = True</font> '如果前面计数不等于对象总数,则时间控件再启动。这样就能获得下一个图形对象<br/>End Sub</p>

mccad 发表于 2007-8-15 06:57:00

那是例子,可能是为了让用户看到一步一步的过程,所以才用了计时器。

xxxtttxxx 发表于 2007-8-15 18:08:00

谢明总解答。
页: [1]
查看完整版本: 百思不得其解--VB开发时的选择集相关问题