明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2132|回复: 6

又一个关于选择集的问题

[复制链接]
发表于 2005-12-24 18:50:00 | 显示全部楼层 |阅读模式

上次发了关于选择集中删除元素的问题,得到了各位高手的指点,收益颇多。但是我在实际编制过程中发现一个问题,就是从选择集中删除的元素数组,似乎元素的个数不能太大我试验的结果似乎只能达到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) = "<or"  
    FilterType(1) = 0
    FilterData(1) = "LINE"
    FilterType(2) = 0
    FilterData(2) = "LWPOLYLINE"
    FilterType(3) = -4
    FilterData(3) = "or>"  
    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.Length <100) Then
     i = i + 1
    End If
   Next
ReDim pn1(i - 1) As AcadEntity
   i = 0
    For Each element In SSet
      If (element.Length > 200) Or (element.Length <100) Then
         Set pn1(i) = element
         i = i + 1
 else
 element.color=acred
      End If
   Next
SSet.RemoveItems pn1
  SSet.Update
    msgbox "筛选剩余的元素数量:"& SSet.Count
SSet.Delete
end sub

这个程序试从图形中选择出所有直线和多线,然后从中删除长度大于200和小于100的元素。这样当 需要删除的对象删除的元素个数多到一定程度就会出问题。我初步设想可能是数组元素的限制问题。

请各位帮我看看能不能够在建立选择集的时候就直接只选择长度100~200之间的线???在此先行感谢了。。。

发表于 2005-12-26 14:59:00 | 显示全部楼层

弱弱地问一下,不能一个个的删除么?

发表于 2005-12-27 08:00:00 | 显示全部楼层

建立选择集后你直接把长度100~200之间的线放在数组里

 楼主| 发表于 2005-12-27 15:15:00 | 显示全部楼层

2楼的方法显然不适合。

我将 变量i改成了  long类型就可以满足要求。。。

3楼的方法也不错。具体我要实现的功能(不光是上面程序)来说3楼的方法最后,因为符合我的条件的元素数量比不符合我田间的元素数量少了好几个数量级。。所以我使用3楼的方法。

再次感谢2位兄弟

发表于 2005-12-27 16:32:00 | 显示全部楼层

楼主遇到的情况我也遇到过。

有一次遇到个很大的选择集,又无法用filter。结果removeitems的时候就发现选择集过大的时候会有错误。

最后我只好新建一个选择集,把自己想保存的item都拷贝过去,然后把原来的选择集删掉了事。

 

感觉这个错误最多地发生在:选择集很大,且removeitems的数组里元素也很多地情况。

 

 楼主| 发表于 2005-12-29 21:35:00 | 显示全部楼层

感谢楼上给我的回复。我还以为只有我才会这么背呢。。。  同时谢谢你的方法

发表于 2011-2-16 13:21:44 | 显示全部楼层
楼主的 有些句子给了我很大启发谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 20:53 , Processed in 0.185411 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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