mayuezxl 发表于 2006-8-4 09:57:00

[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
这个程序是先遍历整个图形空间,当碰到要删除图层中的对象时,删除该对象,然后删除图层。可是当图形空间中对象很多时(超过一百多万),要等很久才能删除图层。请问如何才能直接删除要删除图层中的对象,而不是遍历整个图形空间。谢谢各位高手的帮忙!

wyj7485 发表于 2006-8-4 11:58:00

建立选择集,用选择集的delete属性

mayuezxl 发表于 2006-8-4 14:51:00

怎么建立要删除图层的选择集呢?

wyj7485 发表于 2006-8-4 15:57:00


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不能为当前层

mayuezxl 发表于 2006-8-4 20:35:00

按照你的方法,我没法删除指定图层中的对象啊

wyj7485 发表于 2006-8-4 23:32:00

应该是选择集的Erase属性,已该.

mayuezxl 发表于 2006-8-5 09:18:00

谢谢楼上的,按照你的指示,我已经实现了。万分感谢!那再请教一下,用Delete可以实现什么效果?

jxh2003zfr 发表于 2006-8-8 08:51:00


我在使用选择集的Erase方法时有时会出错,必须要改为循环一个一个删除才可以(foreach obj in ssel),这是为什么呢?
页: [1]
查看完整版本: [VBA]关于图层删除的问题