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 objCoordinateSystem As SolidEdgePart.CoordinateSystem
        Dim objSourceAssemblyDocument As SolidEdgeAssembly.AssemblyDocument
        Dim objSourceSolidEdgeDocument As SolidEdgeFramework.SolidEdgeDocument
        Dim objMirrorAsmRefPlane As SolidEdgeAssembly.AsmRefPlane = objAssemblyCopy.MirrorPlane
        Try
            OleMessageFilter.Register()
            objApplication = Marshal.GetActiveObject("SolidEdge.Application")
            objAssemblyDocument = objApplication.ActiveDocument
            objAssemblyCopies = objAssemblyDocument.AssemblyCopies
            objAssemblyCopy = objAssemblyCopies.Item("Assembly Copy_1")
            objCoordinateSystem = objAssemblyCopy.CoordinateSystem
            Console.Write("Add new components on update: ")
            Console.WriteLine(objAssemblyCopy.AddNewComponentsOnUpdate)
            Console.Write("IsFrozen: ")
            Console.WriteLine(objAssemblyCopy.IsFrozen)
            Console.Write("Is Out of Date: ")
            Console.WriteLine(objAssemblyCopy.IsOutOfDate)
            Console.Write("IncludeAssemblyFeatures: ")
            Console.WriteLine(objAssemblyCopy.IncludeAssemblyFeatures)
            Console.Write("Coordinate System: : ")
            Console.WriteLine(objCoordinateSystem.DisplayName)
            Console.Write("Source Document Name: ")
            Console.WriteLine(objAssemblyCopy.SourceFilename)
            Console.Write("Source Document Display Name: ")
            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
            objMirrorAsmRefPlane = objAssemblyCopy.MirrorPlane
            If (objMirrorAsmRefPlane Is Nothing) Then
                Console.WriteLine("No mirror plane")
            Else
                Console.Write("Mirror plane: ")
                Console.WriteLine(objMirrorAsmRefPlane.Name)
            End If
            If (objAssemblyCopy.AssemblyCopyType = SolidEdgeAssembly.AssemblyCopyTypeConstants.seAssemblyCopyTypeDefault) Then
                Console.WriteLine("Copy Type: Default")
            ElseIf (objAssemblyCopy.AssemblyCopyType = SolidEdgeAssembly.AssemblyCopyTypeConstants.seAssemblyCopyTypeMirror) Then
                Console.WriteLine("Copy Type: Mirror")
            Else
                Console.WriteLine("Copy Type: MultiPart")
            End If
            If (objAssemblyCopy.Status = SolidEdgeAssembly.AssemblyCopyStatusConstants.seAssemblyCopyStatusOK) Then
                Console.WriteLine("Copy is OK")
            Else
                Console.WriteLine("Copy has a problem")
            End If
            Dim inArray As Array = Array.CreateInstance(GetType(System.Object), 2)
            Dim outArray As Array = Array.CreateInstance(GetType(SolidEdgeAssembly.Occurrence), 2)
            Dim fileArray As Array = Array.CreateInstance(GetType(System.Object), 2)
            Dim ActionArray As Array = Array.CreateInstance(GetType(SolidEdgeConstants.AssemblyCopyActionConstants), 2)
            Dim AdjustArray As Array = Array.CreateInstance(GetType(SolidEdgeConstants.AssemblyCopyPlaneConstants), 2)
            Dim EnumArray As Array = Array.CreateInstance(GetType(SolidEdgeConstants.AssemblyCopyUserConstants), 2)
            objAssemblyCopy.GetDefinition(inArray, outArray, ActionArray, AdjustArray, EnumArray)
            Dim x As Integer = 1
            For x = 0 To inArray.Length - 1 Step 1
                Dim occ As SolidEdgeAssembly.Occurrence = inArray(x)
                Console.Write(occ.Name)
                Console.Write("  input: ")
                If Not (outArray(x) Is Nothing) Then
                    occ = outArray(x)
                    Console.Write(occ.Name)
                Else
                    Console.Write(" Excluded")
                End If
                If (ActionArray(x) = SolidEdgeConstants.AssemblyCopyActionConstants.seAssemblyCopyActionInclude) Then
                    Console.Write("  Included  ")
                ElseIf (ActionArray(x) = SolidEdgeConstants.AssemblyCopyActionConstants.seAssemblyCopyActionMirror) Then
                    Console.Write("  Mirrored  ")
                ElseIf (ActionArray(x) = SolidEdgeConstants.AssemblyCopyActionConstants.seAssemblyCopyActionRotate) Then
                    Console.Write("  Rotated  ")
                ElseIf (ActionArray(x) = SolidEdgeConstants.AssemblyCopyActionConstants.seAssemblyCopyActionPending) Then
                    Console.Write("  Pending  ")
                Else
                    Console.Write("  Excluded  ")
                End If
                If (EnumArray(x) = SolidEdgeConstants.AssemblyCopyUserConstants.seAssemblyCopyDefault) Then
                    Console.Write("  Default  ")
                Else
                    Console.Write("  Modified  ")
                End If
                Console.WriteLine(AdjustArray(x))
            Next
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    End Sub
End Module