tiger8888 发表于 2004-10-31 20:44:00

[求助]关于选择集,请大侠帮忙阿

我创建选择集后,想删除选择集中的一个项目,所移去的项目仍然存在,只是不在选择集中。可试了几次都不行。


假设ssget为选择集,我先用ssget(0).delete删除第一个项目,我本以为选择集会重新排列,可当我下次用到ssget(0)时,程序就出错。


后来,我用ssget.removeitems的方法,可不知如何用阿。这个方法好像要知道要删除项目的名字,我又怎么知道项目的名字呢。


acad2004的帮助看了半天,也没什么帮助,请大侠帮我

王咣生 发表于 2004-10-31 21:45:00

回复

参考:


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 &gt; 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: " &amp; Err.Number &amp; " -- "; Err.Description<BR>                       Resume ERR_END<BR>                       <BR>ERR_END:<BR>End Function<BR>

tiger8888 发表于 2004-10-31 22:08:00

版主真是谢谢你了,我弄了一晚上。看了你的帖子,才解决了问题,真心谢谢你。
页: [1]
查看完整版本: [求助]关于选择集,请大侠帮忙阿