Solid Edge Framework Type Library
GetOccurrencesInPath Method
Description
Method to get occurrences from Reference.
Syntax
Visual Basic
Public Sub GetOccurrencesInPath( _
   ByRef TopOccurrence As Object, _
   ByRef NumSubOccurrencesInPath As Long, _
   ByRef NumBoundSubOccurrencesInPath As Long, _
   ByRef BoundSubOccurrencesInPath() As Object _
) 
Parameters
TopOccurrence
NumSubOccurrencesInPath
NumBoundSubOccurrencesInPath
BoundSubOccurrencesInPath
Example
Imports System.IO
Imports System.Runtime.InteropServices

Module Example
    <STAThread()> _
    Sub Main()
        Dim objFolder As DirectoryInfo
        Dim objFileInfo As FileInfo
        Dim objApplication As SolidEdgeFramework.Application = Nothing
        Dim objDocuments As SolidEdgeFramework.Documents = Nothing
        Dim objAssemblyDocument As SolidEdgeAssembly.AssemblyDocument = Nothing
        Dim objRelations3d As SolidEdgeAssembly.Relations3d = Nothing
        Dim objRelation As Object = Nothing
        Dim objElement1 As Object = Nothing
        Dim objElement2 As Object = Nothing
        Dim objOccurrence1 As SolidEdgeAssembly.Occurrence = Nothing
        Dim objOccurrence2 As SolidEdgeAssembly.Occurrence = Nothing
        Dim bTopologyReference1 As Boolean
        Dim bTopologyReference2 As Boolean
        Dim objTopologyReference1 As SolidEdgeAssembly.TopologyReference = Nothing
        Dim objTopologyReference2 As SolidEdgeAssembly.TopologyReference = Nothing
        Dim objReference1 As SolidEdgeFramework.Reference = Nothing
        Dim objReference2 As SolidEdgeFramework.Reference = Nothing
        Dim i As Integer
        Dim objTopOccurrence1 As Object = Nothing
        Dim objTopOccurrence2 As Object = Nothing
        Dim iSubOccurrencesInPath1 As Integer
        Dim iSubOccurrencesInPath2 As Integer
        Dim iBoundSubOccurrencesInPath1 As Integer
        Dim iBoundSubOccurrencesInPath2 As Integer
        Dim aSubOccurrencesInPath1 As Array
        Dim aSubOccurrencesInPath2 As Array

        Try
            OleMessageFilter.Register()

            objFolder = GetTrainingFolder()
            objFileInfo = New FileInfo(Path.Combine(objFolder.FullName, "Coffee Pot.asm"))
            ' Start Solid Edge
            objApplication = Activator.CreateInstance(Type.GetTypeFromProgID("SolidEdge.Application"))
            objApplication.Visible = True
            objDocuments = objApplication.Documents
            objAssemblyDocument = objDocuments.Open(objFileInfo.FullName)

            objRelations3d = objAssemblyDocument.Relations3d

            For i = 1 To objRelations3d.Count
                ' Refresh arrays
                aSubOccurrencesInPath1 = Array.CreateInstance(GetType(System.Object), 0)
                aSubOccurrencesInPath2 = Array.CreateInstance(GetType(System.Object), 0)

                ' Get current Relation
                objRelation = objRelations3d.Item(i)

                If (objRelation.Type <> SolidEdgeFramework.ObjectType.igGroundRelation3d) Then
                    objElement1 = objRelation.GetElement1(bTopologyReference1)
                    objElement2 = objRelation.GetElement2(bTopologyReference2)
                    objOccurrence1 = objRelation.Occurrence1
                    objOccurrence2 = objRelation.Occurrence2

                    If bTopologyReference1 Then
                        objTopologyReference1 = objElement1
                        objTopologyReference1.GetOccurrencesInPath(objTopOccurrence1, iSubOccurrencesInPath1, iBoundSubOccurrencesInPath1, aSubOccurrencesInPath1)
                    Else
                        objReference1 = objElement1
                        objReference1.GetOccurrencesInPath(objTopOccurrence1, iSubOccurrencesInPath1, iBoundSubOccurrencesInPath1, aSubOccurrencesInPath1)
                    End If

                    If bTopologyReference2 Then
                        objTopologyReference2 = objElement2
                        objTopologyReference2.GetOccurrencesInPath(objTopOccurrence2, iSubOccurrencesInPath2, iBoundSubOccurrencesInPath2, aSubOccurrencesInPath2)
                    Else
                        objReference2 = objElement2
                        objReference2.GetOccurrencesInPath(objTopOccurrence2, iSubOccurrencesInPath2, iBoundSubOccurrencesInPath2, aSubOccurrencesInPath2)
                    End If
                End If
            Next
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            OleMessageFilter.Revoke()
        End Try
    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(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

Reference Object  | Reference Members  | Solid Edge ST3 - What's New