Solid Edge Framework Type Library
AssemblyChangeEvents Object
Members 
Description
Assembly change events.
Remarks
These events are fired when an assembly feature is renamed, occurrence is renamed or component visible state is changed.
Example
Imports SolidEdgeAssembly
Imports SolidEdgeFramework
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.IO


Module Module1
    '  Event set object
    Friend WithEvents m_ChangeEventSet As SolidEdgeFramework.ISEAssemblyChangeEvents_Event

    Private objApp As Application
    Private objAsmDoc As AssemblyDocument
    Private bEventHandlerCalled As Boolean
    Private bBeforeEventHandler As Boolean
    Private objOccs As Occurrences
    Private objOcc As Occurrence
    Private objFolder As DirectoryInfo
    Private objFileInfo As FileInfo
    Sub Main()
        Try
            Console.WriteLine("Starting Solid Edge")
            'To start SolidEdge application
            objApp = Activator.CreateInstance(Type.GetTypeFromProgID("SolidEdge.Application"))
            If IsNothing(objApp) Then
                Throw New Exception("Failed to get Application object")
            End If
            objApp.Visible = True
            objFolder = GetTrainingFolder()
            objFileInfo = New FileInfo(System.IO.Path.Combine(objFolder.FullName, "carrier.asm"))
            Console.WriteLine("Opening " & objFileInfo.FullName)
            '  To open Assembly Document
            objAsmDoc = objApp.Documents.Open(objFileInfo.FullName)

            '  Instantiate the event set object.
            m_ChangeEventSet = DirectCast(objAsmDoc.AssemblyChangeEvents, SolidEdgeFramework.ISEAssemblyChangeEvents_Event)
            Console.WriteLine("Change state of any Occurrence to fire ""AssemblyChangeEvents""..")
            If IsNothing(m_ChangeEventSet) Then
                Throw New Exception("Failed to get AssemblyChangeEvents object")
            End If

            objOccs = objAsmDoc.Occurrences
            If IsNothing(objOccs) Then
                Throw New Exception("Failed to get Occurrences collection")
            End If

            objOcc = objOccs.Item(1)
            If IsNothing(objOcc) Then
                Throw New Exception("Failed to get Occurrence")
            End If

            objOcc.Visible = False  ' Events should be raised by now

            If Not bEventHandlerCalled Then
                Throw New Exception("Event handler never called. ")
            End If

        Catch ex As Exception
            Console.WriteLine(ex.Message)

        Finally
            Console.WriteLine("Press any key to exit..")
            Console.ReadKey()
            objApp.Quit()
            objApp = Nothing
            objAsmDoc = Nothing
            objOccs = Nothing
            objOcc = Nothing
            m_ChangeEventSet = Nothing
        End Try
    End Sub
    Private Sub AssemblyChangeEvents_AfterChange(theDocument As Object, occurrenceModified As Object, modifiedOccurrenceObjectType As ObjectType, changeType As AssemblyEventConstants) Handles m_ChangeEventSet.AfterChange

        '  To ensure BeforeChange event called before AfterChange
        If bBeforeEventHandler Then
            bEventHandlerCalled = True
        End If

        Dim sb As New StringBuilder()
        Dim szStr As String = ""
        Dim objAsmDocLocal As AssemblyDocument = theDocument
        Dim objOcc As Occurrence = occurrenceModified

        If (seAssemblyChangeEventsConstants.seAssemblyComponentShow = changeType) Then

            sb.AppendFormat("{0}( {1}  {2}  {3}   {4} )", _
                            "AfterChange", _
                            objAsmDocLocal.Name, objOcc.Name, _
                            objOcc.TopLevelDocument.Name, "Show")
        ElseIf (seAssemblyChangeEventsConstants.seAssemblyComponentHide = changeType) Then

            sb.AppendFormat("{0}( {1}  {2}  {3}   {4} )", _
                          "AfterChange", _
                          objAsmDocLocal.Name, objOcc.Name, _
                          objOcc.TopLevelDocument.Name, "Hide")
        End If

        '  To display Received Parameters
        Console.WriteLine(sb.ToString())
    End Sub

    Private Sub AssemblyChangeEvents_BeforeChange(theDocument As Object, occurrenceModified As Object, modifiedOccurrenceObjectType As ObjectType, changeType As AssemblyEventConstants) Handles m_ChangeEventSet.BeforeChange

        bBeforeEventHandler = True

        Dim sb As New StringBuilder()
        Dim szStr As String = ""
        Dim objAsmDocLocal As AssemblyDocument = theDocument
        Dim objOcc As Occurrence = occurrenceModified

        If (seAssemblyChangeEventsConstants.seAssemblyComponentShow = changeType) Then

            sb.AppendFormat("{0}( {1}  {2}  {3}   {4} )", _
                            "BeforeChange", _
                            objAsmDocLocal.Name, objOcc.Name, _
                            objOcc.TopLevelDocument.Name, "Show")
        ElseIf (seAssemblyChangeEventsConstants.seAssemblyComponentHide = changeType) Then

            sb.AppendFormat("{0}( {1}  {2}  {3}   {4} )", _
                          "BeforeChange", _
                          objAsmDocLocal.Name, objOcc.Name, _
                          objOcc.TopLevelDocument.Name, "Hide")
        End If

        '  To display Received Parameters
        Console.WriteLine(sb.ToString())
    End Sub
    Function GetTrainingFolder() As DirectoryInfo
        Dim objInstallData As SEInstallDataLib.SEInstallData = Nothing
        Dim objInstallFolder As DirectoryInfo = Nothing
        Dim objTrainingFolder As DirectoryInfo = Nothing

        Try
            objInstallData = New SEInstallDataLib.SEInstallData
            objInstallFolder = New DirectoryInfo(objInstallData.GetInstalledPath())
            objTrainingFolder = New DirectoryInfo(System.IO.Path.Combine(objInstallFolder.Parent.FullName, "Training"))
        Catch
        Finally
            If Not (objInstallData Is Nothing) Then
                Marshal.FinalReleaseComObject(objInstallData)
                objInstallData = Nothing
            End If
        End Try

        Return objTrainingFolder
    End Function
End Module
See Also

AssemblyChangeEvents Members