supercorn 发表于 2004-10-1 13:28:00

有关窗口刷新问题

本帖最后由 作者 于 2004-10-1 14:59:52 编辑 <br /><br /> 为什么执行以下代码,绘图窗口不是立刻刷新为图层刷新后的效果。而是要等Form窗体关闭后才刷新?



Private Sub CommandButton3_Click()<BR>       On Error Resume Next<BR>       For I = 0 To ThisDrawing.ModelSpace.Count<BR>                       If ThisDrawing.ModelSpace(I).Layer = "ABC" Then<BR>                                       ThisDrawing.ModelSpace(I).Delete<BR>                       End If<BR>       Next<BR>       ThisDrawing.Layers.Item("ABC").Delete<BR>End Sub

zfbj 发表于 2004-10-1 15:26:00

在代码的最后加上 ThisDrawing.Regen acActiveViewport
<P class=constant>原因在于你使用的是模态对话框,AutoCAD只有在你的对话框消失之后进行一次自动刷新,为了实时刷新就必须强制其进行。

alin 发表于 2004-10-1 17:25:00

楼主的代码即使加上regen一句也删不干净,下面则可以,不知为何?Private Sub CommandButton3_Click()
   On Error Resume Next
   For Each OBJ In ThisDrawing.ModelSpace
   If OBJ.Layer = "ABC" Then
       OBJ.Erase
   End If
   Next
   ThisDrawing.Layers.Item("ABC").Delete
   ThisDrawing.Regen acActiveViewport
End Sub

雪山飞狐_lzh 发表于 2004-10-1 17:45:00

本帖最后由 作者 于 2004-10-1 18:54:22 编辑 <br /><br /> 为什么要历遍?



这样就可以了


Sub ttt()


On Error Resume Next<BR><BR>Dim ss As AcadSelectionSet<BR>ThisDrawing.SelectionSets("*TEST*").Delete<BR>Set ss = ThisDrawing.SelectionSets.Add("*TEST*")<BR>Dim ft(0) As Integer, fd(0)<BR>ft(0) = 8: fd(0) = "ABC"<BR>ss.Erase<BR>End Sub<BR>

alin 发表于 2004-10-1 17:58:00

谢谢,那为什么楼主的代码在我的机器上会删不掉?还有要得到模型空间的对象是


Thisdrawing.Modelspace(I)呢,还是Thisdrawing.Modelspace.Item(i)?

雪山飞狐_lzh 发表于 2004-10-1 18:02:00

两个是一回事,因为Item是Thisdrawing.Modelspace的默认属性


试试For I = 0 To ThisDrawing.ModelSpace.Count - 1

alin 发表于 2004-10-1 18:30:00

早试过了,还是不行

zhu1 发表于 2005-1-15 12:46:00

我不得不说,众人的智慧是无穷的


谢谢你们了
页: [1]
查看完整版本: 有关窗口刷新问题