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