[求助]关于选择集,请大侠帮忙阿
我创建选择集后,想删除选择集中的一个项目,所移去的项目仍然存在,只是不在选择集中。可试了几次都不行。假设ssget为选择集,我先用ssget(0).delete删除第一个项目,我本以为选择集会重新排列,可当我下次用到ssget(0)时,程序就出错。
后来,我用ssget.removeitems的方法,可不知如何用阿。这个方法好像要知道要删除项目的名字,我又怎么知道项目的名字呢。
acad2004的帮助看了半天,也没什么帮助,请大侠帮我
回复
参考:Public Sub test()<BR> Dim ssetObj As AcadSelectionSet<BR> Set ssetObj = CreateSSet("Test")<BR> <BR> Dim mode As Integer<BR> mode = acSelectionSetAll<BR> <BR> '选择所有实体<BR> ssetObj.Select mode<BR> <BR> MsgBox ssetObj.Count<BR> <BR> '如果选择集不为空,移除第一个实体<BR> If ssetObj.Count > 0 Then<BR> Dim removeObjects(0) As AcadEntity<BR> Set removeObjects(0) = ssetObj(0)<BR> ssetObj.RemoveItems removeObjects<BR> <BR> MsgBox ssetObj.Count<BR> End If<BR> <BR> ssetObj.Clear<BR> ssetObj.Delete<BR> <BR>End Sub
<BR>'---------------------------------------------------------------------<BR>'<BR>'[函数] 创建选择集, 返回选择集对象<BR>'<BR>'---------------------------------------------------------------------
Private Function CreateSSet(ByVal name As String) As AcadSelectionSet<BR> On Error GoTo ERR_HANDLER<BR> <BR> Dim ssetObj As AcadSelectionSet<BR> Dim SSetColl As AcadSelectionSets<BR> Set SSetColl = ThisDrawing.SelectionSets<BR> <BR> Dim index As Integer<BR> Dim found As Boolean<BR> <BR> found = False
For index = 0 To SSetColl.Count - 1<BR> Set ssetObj = SSetColl.Item(index)<BR> If StrComp(ssetObj.name, name, 1) = 0 Then<BR> found = True<BR> Exit For<BR> End If<BR> Next<BR> <BR> <BR> If Not (found) Then<BR> Set ssetObj = SSetColl.Add(name)<BR> Else<BR> ssetObj.Clear<BR>' ssetObj.Delete<BR>' Set ssetObj = SSetColl.Add(name)<BR> End If<BR> <BR> Set CreateSSet = ssetObj<BR> <BR> Exit Function<BR>ERR_HANDLER:<BR> '-----------------------------------------------<BR> ' just print the error the the debug window.<BR> Debug.Print "Error in sub CreateSSet: " & Err.Number & " -- "; Err.Description<BR> Resume ERR_END<BR> <BR>ERR_END:<BR>End Function<BR> 版主真是谢谢你了,我弄了一晚上。看了你的帖子,才解决了问题,真心谢谢你。
页:
[1]