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