' 探针 5: ReferenceSet 相关类型/成员
Option Strict Off
Imports System
Imports System.IO
Imports System.Text
Imports NXOpen
Imports NXOpen.UF

Module ProbeApi5
    Function FindType(n As String) As System.Type
        Dim t As System.Type = GetType(Session).Assembly.GetType(n, False)
        If t IsNot Nothing Then Return t
        For Each a As System.Reflection.Assembly In AppDomain.CurrentDomain.GetAssemblies()
            t = a.GetType(n, False)
            If t IsNot Nothing Then Return t
        Next
        Return Nothing
    End Function

    Sub Main()
        Dim sb As New StringBuilder()
        Dim asm As System.Reflection.Assembly = GetType(Session).Assembly
        sb.AppendLine("=== 含 ReferenceSet 的类型 ===")
        For Each t As System.Type In asm.GetTypes()
            If t.FullName.IndexOf("ReferenceSet", StringComparison.OrdinalIgnoreCase) >= 0 Then sb.AppendLine("T: " & t.FullName)
        Next
        sb.AppendLine("=== Part 成员 (Reference) ===")
        For Each mi As System.Reflection.MemberInfo In GetType(Part).GetMembers()
            If mi.Name.IndexOf("Reference", StringComparison.OrdinalIgnoreCase) >= 0 Then sb.AppendLine("P: " & mi.MemberType & " " & mi.Name)
        Next
        sb.AppendLine("=== BasePart 成员 (Reference) ===")
        For Each mi As System.Reflection.MemberInfo In GetType(BasePart).GetMembers()
            If mi.Name.IndexOf("Reference", StringComparison.OrdinalIgnoreCase) >= 0 Then sb.AppendLine("B: " & mi.MemberType & " " & mi.Name)
        Next
        Dim rsT As System.Type = FindType("NXOpen.ReferenceSet")
        If rsT IsNot Nothing Then
            sb.AppendLine("=== NXOpen.ReferenceSet 方法 ===")
            For Each mi As System.Reflection.MethodInfo In rsT.GetMethods()
                If mi.DeclaringType Is rsT Then sb.AppendLine("RS: " & mi.Name)
            Next
        End If
        Dim rscT As System.Type = FindType("NXOpen.Assemblies.ReferenceSetCollection")
        If rscT IsNot Nothing Then
            sb.AppendLine("=== Assemblies.ReferenceSetCollection 方法 ===")
            For Each mi As System.Reflection.MethodInfo In rscT.GetMethods()
                If mi.DeclaringType Is rscT Then sb.AppendLine("RSC: " & mi.Name)
            Next
        End If
        File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), "probe5.txt"), sb.ToString(), Encoding.UTF8)
    End Sub
End Module
