xiaoming_x 发表于 2005-3-8 17:19:00

在VB.NET中关于选择集使用的一个问题!

以下是在VB.NET中关于选择集使用的一段程序,用意是想得到CAD某一图层中全部实体类型,程序代码为:


Dim acadapp As AcadApplication


Dim Sels As AcadSelectionSets<BR>Sels = acadapp.ActiveDocument.SelectionSets


Dim Sel As AcadSelectionSet<BR>Dim mspaceObj As AcadObject<BR>Dim FilterType(0) As Integer<BR>Dim FilterData(0) As Object<BR>Dim LayCount As Integer<BR>Dim LayName As String


LayCount = acadapp.ActiveDocument.Layers.Count


For I = 1 To LayCount - 1<BR>                                                                                       LayName = acadapp.ActiveDocument.Layers.Item(I).Name<BR>                                                                                       If StrComp(LayName, "YD-R2", 1) = 0 Then<BR>                                                                                                                       Sel = Sels.Add(LayName)<BR>                                                                                                                       FilterType(0) = 8<BR>                                                                                                                       FilterData(0) = LayName


                                                                                                                       Sel.Select(AcSelect.acSelectionSetAll, , , FilterType, FilterData)       '该语句得到得到的实体数总为0,不知道为什么?<BR>                                                                                                                                For Each mspaceObj In Sel<BR>                                                                                                                                                       MsgBox(mspaceObj.ObjectName)<BR>                                                                                                                       Next


                                                                                                                       Sel.Delete()<BR>                                                                                       End If<BR>                                                       Next I


请各位帮我找找原因,好吗?以上这段代码在VBA中运行的话,可以得到我想要的结果!

xiaoming_x 发表于 2005-3-8 18:13:00

Re

我找到了部分的原因:如果把语句


Sel.Select(AcSelect.acSelectionSetAll, , , FilterType, FilterData)


改为:


Sel.Select(AcSelect.acSelectionSetAll)


就可以得到实体类型了,但得到是全部实体的类型,而不是特定层内的实体类型。所以,应该是过滤器设置失效的原因了。那过滤器在这里应该怎么设置呢?

雪山飞狐_lzh 发表于 2005-3-8 20:00:00

注意VB与VB.Net的数据类型的对应


VB的Integer对应.Net下的Short

clbweq 发表于 2006-12-4 19:58:00

本帖最后由 作者 于 2006-12-5 15:56:45 编辑 <br /><br /> <P>牛人就是牛人!</P>
页: [1]
查看完整版本: 在VB.NET中关于选择集使用的一个问题!