在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中运行的话,可以得到我想要的结果!
Re
我找到了部分的原因:如果把语句Sel.Select(AcSelect.acSelectionSetAll, , , FilterType, FilterData)
改为:
Sel.Select(AcSelect.acSelectionSetAll)
就可以得到实体类型了,但得到是全部实体的类型,而不是特定层内的实体类型。所以,应该是过滤器设置失效的原因了。那过滤器在这里应该怎么设置呢? 注意VB与VB.Net的数据类型的对应
VB的Integer对应.Net下的Short 本帖最后由 作者 于 2006-12-5 15:56:45 编辑 <br /><br /> <P>牛人就是牛人!</P>
页:
[1]