又一个关于选择集的问题
上次发了关于选择集中删除元素的问题,得到了各位高手的指点,收益颇多。但是我在实际编制过程中发现一个问题,就是从选择集中删除的元素数组,似乎元素的个数不能太大我试验的结果似乎只能达到20000左右,再大了不是死机就是计算错误。看看下面的例子Public Sub test()
ThisDrawing.Application.ZoomExtents
On Error Resume Next
Dim SSet As AcadSelectionSet
If Not IsNull(ThisDrawing.SelectionSets.Item("ttt")) Then
Set SSet = ThisDrawing.SelectionSets.Item("ttt")
SSet.Delete
End If
Set SSet = ThisDrawing.SelectionSets.Add("Example")
Dim FilterType(0 To 3) As Integer
Dim FilterData(0 To 3) As Variant
FilterType(0) = -4
FilterData(0) = ""
SSet.Select acSelectionSetAll, , , FilterType, FilterData
msgbox "筛选前的元素数量:"& SSet.Count
Dim element As AcadEntity
Dim i As Integer
Dim pn1() As AcadEntity
i = 0
For Each element In SSet
If (element.Length > 200) Or (element.Length200) Or (element.Length
这个程序试从图形中选择出所有直线和多线,然后从中删除长度大于200和小于100的元素。这样当 需要删除的对象删除的元素个数多到一定程度就会出问题。我初步设想可能是数组元素的限制问题。
请各位帮我看看能不能够在建立选择集的时候就直接只选择长度100~200之间的线???在此先行感谢了。。。
弱弱地问一下,不能一个个的删除么?
建立选择集后你直接把长度100~200之间的线放在数组里
2楼的方法显然不适合。
我将 变量i改成了long类型就可以满足要求。。。
3楼的方法也不错。具体我要实现的功能(不光是上面程序)来说3楼的方法最后,因为符合我的条件的元素数量比不符合我田间的元素数量少了好几个数量级。。所以我使用3楼的方法。
再次感谢2位兄弟
楼主遇到的情况我也遇到过。
有一次遇到个很大的选择集,又无法用filter。结果removeitems的时候就发现选择集过大的时候会有错误。
最后我只好新建一个选择集,把自己想保存的item都拷贝过去,然后把原来的选择集删掉了事。
感觉这个错误最多地发生在:选择集很大,且removeitems的数组里元素也很多地情况。
感谢楼上给我的回复。我还以为只有我才会这么背呢。。。同时谢谢你的方法
楼主的 有些句子给了我很大启发谢谢
页:
[1]