Imports System.IO
Imports System.Runtime.InteropServices
Module Example
    <STAThread()> _
    Sub Main()
        Dim objApplication As SolidEdgeFramework.Application = Nothing
        Dim objAssemblyDocument As SolidEdgeAssembly.AssemblyDocument = Nothing
        Dim objAssemblyCopies As SolidEdgeAssembly.AssemblyCopies = Nothing
        Dim objAssemblyCopy As SolidEdgeAssembly.AssemblyCopy = Nothing
        Dim objSourceAssemblyDocument As SolidEdgeAssembly.AssemblyDocument
        Dim objSourceSolidEdgeDocument As SolidEdgeFramework.SolidEdgeDocument
        Try
            OleMessageFilter.Register()
            objApplication = Marshal.GetActiveObject("SolidEdge.Application")
            objAssemblyDocument = objApplication.ActiveDocument
            objAssemblyCopies = objAssemblyDocument.AssemblyCopies
            objAssemblyCopy = objAssemblyCopies.Item("Assembly Copy_1")
            If Not (objAssemblyCopy.AssemblyCopyType = SolidEdgeAssembly.AssemblyCopyTypeConstants.seAssemblyCopyTypeMultiBodyPart) Then
                objSourceAssemblyDocument = objAssemblyCopy.SourceDocument
                Console.WriteLine(objSourceAssemblyDocument.DisplayName)
            Else
                objSourceSolidEdgeDocument = objAssemblyCopy.SourceDocument
                Console.WriteLine(objSourceSolidEdgeDocument.FullName)
            End If
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    End Sub
End Module