明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1796|回复: 8

[VBA]关于图层删除的问题

[复制链接]
发表于 2006-8-4 09:57:00 | 显示全部楼层 |阅读模式

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

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

发表于 2006-8-4 11:58:00 | 显示全部楼层
建立选择集,用选择集的delete属性
 楼主| 发表于 2006-8-4 14:51:00 | 显示全部楼层
怎么建立要删除图层的选择集呢?
发表于 2006-8-4 15:57:00 | 显示全部楼层
本帖最后由 作者 于 2006-8-4 23:30:47 编辑

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

 楼主| 发表于 2006-8-4 20:35:00 | 显示全部楼层

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

发表于 2006-8-4 23:32:00 | 显示全部楼层
应该是选择集的Erase属性,已该.
 楼主| 发表于 2006-8-5 09:18:00 | 显示全部楼层
谢谢楼上的,按照你的指示,我已经实现了。万分感谢!那再请教一下,用Delete可以实现什么效果?
发表于 2006-8-8 08:51:00 | 显示全部楼层
wyj7485发表于2006-8-4 23:32:00应该是选择集的Erase属性,已该.
我在使用选择集的Erase方法时[U]有时[/U]会出错,必须要改为循环一个一个删除才可以(foreach obj in ssel),这是为什么呢?
发表于 2006-8-8 11:43:00 | 显示全部楼层
jxh2003zfr发表于2006-8-8 8:51:00我在使用选择集的Erase方法时有时

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 00:25 , Processed in 0.171199 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表