Imports System.Runtime.InteropServices
Public Class SimplifiedAssembly
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim objApplication As SolidEdgeFramework.Application = Nothing
        Dim objAsmDoc As SolidEdgeAssembly.AssemblyDocument = Nothing
        Dim objSimpls As SolidEdgeAssembly.SimplifiedAssemblies = Nothing
        Dim objSimpl As SolidEdgeAssembly.SimplifiedAssembly = Nothing
        Dim arrayExcludeOccs(0 To 4) As Object
        Dim arrayIncludeOccs(0 To 4) As Object
        Dim copyType As [Enum] = Nothing
        Dim arrayRetExcludeOccs(0 To 4) As Object
        Dim arrayRetIncludeOccs(0 To 4) As Object
        Dim RetExcludeLen As Long
        Dim RetIncludeLen As Long
        Dim RetRangeRation As Double
        Dim isSimplifiedAsm As Boolean
        Dim objType As Type = Nothing
        Try
            ' Create/get the application with specific settings
            objApplication = Marshal.GetActiveObject("SolidEdge.Application")
            If objApplication Is Nothing Then
                ' Get the type from the Solid Edge ProgID
                objType = Type.GetTypeFromProgID("SolidEdge.Application")
                ' Start Solid Edge
                objApplication = Activator.CreateInstance(objType)
                ' Make Solid Edge visible
                objApplication.Visible = True
            End If
            'Get reference to active document
            objAsmDoc = objApplication.ActiveDocument
            'If assembly is simplified return the collection of simplified assemblies
            objSimpls = objAsmDoc.SimplifiedAssemblies
            'Get the first item in the collection
            objSimpl = objSimpls.Item(1)
            isSimplifiedAsm = objAsmDoc.IsAssemblySimplified
            If isSimplifiedAsm Then
                Call objAsmDoc.DeleteSimplifiedAssembly()
                isSimplifiedAsm = objAsmDoc.IsAssemblySimplified
            End If
            'simplified asssembly testing
            arrayExcludeOccs(0) = objAsmDoc.Occurrences.Item(2)
            arrayExcludeOccs(1) = objAsmDoc.Occurrences.Item(4)
            arrayIncludeOccs(0) = objAsmDoc.Occurrences.Item(1)
            'Add Visible faces
            objSimpl = objSimpls.AddVisible(2, arrayExcludeOccs, 0, 1, arrayIncludeOccs, 0)
            arrayExcludeOccs(0) = Nothing
            arrayExcludeOccs(1) = Nothing
            arrayIncludeOccs(0) = Nothing
            Call objSimpl.GetVisibleFaceInputs(RetExcludeLen, arrayRetExcludeOccs, RetRangeRation, RetIncludeLen, arrayRetIncludeOccs, copyType)
            
            arrayRetExcludeOccs(0) = Nothing
            arrayRetExcludeOccs(1) = Nothing
            arrayRetIncludeOccs(0) = Nothing
            Call objSimpl.UpdateSimplifiedAssembly()
            objSimpl.ActivateSimplifiedAssembly = False
            Call objSimpl.DeleteSimplifiedAssembly()
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub
End Class