[VBA]关于图层删除的问题
<P>Private Sub CommandButton3_Click()<BR>Dim s<BR>s = MsgBox("你正在删除所写数字及所在层吗?", vbOKCancel, "提示")<BR>If s = vbOK Then<BR> Dim L As AcadLayer<BR> Set L = ThisDrawing.Layers("wzl")<BR> ThisDrawing.ActiveLayer = ThisDrawing.Layers("0")<BR> Dim E As AcadEntity<BR> For Each E In ThisDrawing.ModelSpace<BR> If E.Layer = "wzl" Then<BR> E.Delete<BR> End If<BR> Next<BR> L.Delete<BR> ThisDrawing.Regen acActiveViewport<BR>End If<BR>End Sub</P><P>这个程序是先遍历整个图形空间,当碰到要删除图层中的对象时,删除该对象,然后删除图层。可是当图形空间中对象很多时(超过一百多万),要等很久才能删除图层。请问如何才能直接删除要删除图层中的对象,而不是遍历整个图形空间。谢谢各位高手的帮忙!</P> 建立选择集,用选择集的delete属性 怎么建立要删除图层的选择集呢? 本帖最后由 作者 于 2006-8-4 23:30:47 编辑 <br /><br /> <P>Sub test()</P>
<P>On Error Resume Next</P>
<P>Dim FilterType(0) As Integer<BR>Dim FilterData(0) As Variant</P>
<P>Dim Myset As AcadSelectionSet</P>
<P>FilterType(0) = 8: FilterData(0) = LayerName</P>
<P>ThisDrawing.SelectionSets.Item("Myset").Delete<BR>Set Myset = ThisDrawing.SelectionSets.Add("Myset")<BR>Myset.Select acSelectionSetAll, , , FilterType, FilterData</P>
<P>Myset.Erase</P>
<P>End Sub</P>
<P>,LayerName不能为当前层</P> <P>按照你的方法,我没法删除指定图层中的对象啊</P> 应该是选择集的Erase属性,已该. 谢谢楼上的,按照你的指示,我已经实现了。万分感谢!那再请教一下,用Delete可以实现什么效果? wyj7485发表于2006-8-4 23:32:00static/image/common/back.gif应该是选择集的Erase属性,已该.
我在使用选择集的Erase方法时有时会出错,必须要改为循环一个一个删除才可以(foreach obj in ssel),这是为什么呢?<BR> jxh2003zfr发表于2006-8-8 8:51:00static/image/common/back.gif我在使用选择集的Erase方法时有时
<BR>
页:
[1]