[VBA]选择集
我通过SelectAtPoint选择对象,可为什么选不到块.Sub test()<BR> Dim sset1 As AcadSelectionSet<BR> Dim sset2 As AcadSelectionSet<BR> Dim i As Integer<BR> Dim lineObj As AcadLine<BR> Dim point As Variant<BR> Dim sPoint As Variant<BR> Dim ePoint As Variant<BR> <BR> For i = 0 To ThisDrawing.SelectionSets.Count - 1<BR> If ThisDrawing.SelectionSets(i).Name = "SS1" Or ThisDrawing.SelectionSets(i).Name = "SS2" Then<BR> ThisDrawing.SelectionSets(i).Delete<BR> End If<BR> Next i<BR> point = ThisDrawing.Utility.GetPoint(, "请选择")<BR> Set sset1 = ThisDrawing.SelectionSets.Add("SS1")<BR> sset1.SelectAtPoint point<BR> <BR> Dim entry As AcadEntity<BR> For Each entry In sset1<BR> If entry.ObjectName = "AcDbLine" Then<BR> Set lineObj = entry<BR> sPoint = lineObj.StartPoint<BR> ePoint = lineObj.EndPoint<BR> End If<BR> Next entry<BR> <BR> Set sset2 = ThisDrawing.SelectionSets.Add("SS2")<BR> sset2.SelectAtPoint sPoint<BR> For Each entry In sset2<BR> MsgBox entry.ObjectName<BR> Next entry<BR>End Sub
我是想选择通过一点的线,然后通过线的起点选择通过起点的块,可是确选不到块,谁能告诉我为什么?
调试图和程序都在附件里. SelectAtPoint只能返回一个对象,不管在那个点上的entity有多少。
从你的程序上看,第一次选择了直线,第二次通过直线的端点选择的还是那条直线,所有选不到块了。
我想你可以在端点取到以后,先把那条线删除,选到块以后再addline startpoint,endpoint tiger8888发表于2004-11-29 12:43:00static/image/common/back.gifSelectAtPoint只能返回一个对象,不管在那个点上的entity有多少。我想你可以在端点取到以后,先把那条线删除,选到块以后再addline startpoint,endpoint删掉以后还是选不到块,真是郁闷.
用窗口选择试试 因为搞测量的点,点都比较密,用框选不太好. 框选加过滤器,你要选的是块,而不是点呀 是我搞错了,中午我只看了帖子,没作试验就贸然回答了。晚上刚才进cad一试,真的不行 ,也不知为什么就是选不上。
没办法,可能只好按4楼的方法来解决问题了。 建议更改捕捉方式为只选最近点,然后用GetPoint取得一个点。<BR>再用Select acSelectionSetCrossing , Pnt , Pnt<BR>来选择对象。 谢谢各位老师的帮忙,采用框选可以选到,尽管不那么理想,不过还行.
TO <A name=72483><FONT color=#990000><B>lzh741206</B></FONT></A> 老师,是我没说清楚,我所说的点,就是那个块,因为测量点号用CAD的点表示看不清,所以采用的是用作好的块代替点.
TO <A name=72547><FONT color=#990000><B>mccad</B></FONT></A> 老师 你所说的"建议更改捕捉方式为只选最近点",在哪改.
谢谢各位! 8楼的办法很巧妙,我这里已经可以顺利选择到块了。
又学一招阿。
关于更改捕捉方式,我想应该在选直线前就改osmode为512,最后在出错代码和程序结束时再改回原始值。
页:
[1]