yulijin608 发表于 2004-11-29 11:57:00

[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


我是想选择通过一点的线,然后通过线的起点选择通过起点的块,可是确选不到块,谁能告诉我为什么?


调试图和程序都在附件里.

tiger8888 发表于 2004-11-29 12:43:00

SelectAtPoint只能返回一个对象,不管在那个点上的entity有多少。


从你的程序上看,第一次选择了直线,第二次通过直线的端点选择的还是那条直线,所有选不到块了。


我想你可以在端点取到以后,先把那条线删除,选到块以后再addline startpoint,endpoint

yulijin608 发表于 2004-11-29 13:36:00

tiger8888发表于2004-11-29 12:43:00static/image/common/back.gifSelectAtPoint只能返回一个对象,不管在那个点上的entity有多少。我想你可以在端点取到以后,先把那条线删除,选到块以后再addline startpoint,endpoint删掉以后还是选不到块,真是郁闷.

雪山飞狐_lzh 发表于 2004-11-29 16:20:00

用窗口选择试试

yulijin608 发表于 2004-11-29 19:47:00

因为搞测量的点,点都比较密,用框选不太好.

雪山飞狐_lzh 发表于 2004-11-29 19:50:00

框选加过滤器,你要选的是块,而不是点呀

tiger8888 发表于 2004-11-29 22:57:00

是我搞错了,中午我只看了帖子,没作试验就贸然回答了。晚上刚才进cad一试,真的不行 ,也不知为什么就是选不上。


没办法,可能只好按4楼的方法来解决问题了。

mccad 发表于 2004-11-30 07:52:00

建议更改捕捉方式为只选最近点,然后用GetPoint取得一个点。<BR>再用Select acSelectionSetCrossing , Pnt , Pnt<BR>来选择对象。

yulijin608 发表于 2004-11-30 09:06:00

谢谢各位老师的帮忙,采用框选可以选到,尽管不那么理想,不过还行.


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>        老师 你所说的"建议更改捕捉方式为只选最近点",在哪改.


谢谢各位!

tiger8888 发表于 2004-11-30 12:28:00

8楼的办法很巧妙,我这里已经可以顺利选择到块了。


又学一招阿。


关于更改捕捉方式,我想应该在选直线前就改osmode为512,最后在出错代码和程序结束时再改回原始值。
页: [1]
查看完整版本: [VBA]选择集