Sure,
Form Shown:
Private Sub asmbDesignation_Shown(sender As Object, e As EventArgs) Handles Me.Shown
MainForm.Close()
abzugswertTreeView = Me.Width - 15
Dim oAsmDoc As AssemblyDocument
oAsmDoc = ivExe.ActiveDocument
rootNode = TreeView1.Nodes.Add(oAsmDoc.DisplayName)
rootNode.Tag = oAsmDoc
rootNodes.Add(rootNode)
TreeView1.ImageList = ImageList1
DFS(oAsmDoc.ComponentDefinition.Occurrences, 1, True)
End Sub
AfterExpand:
Private Sub TreeView1_AfterExpand(sender As Object, e As TreeViewEventArgs) Handles TreeView1.AfterExpand
If e.Node.Tag IsNot oActiveDoc Then
If Not vistited.Contains(e.Node) Then
e.Node.Nodes.Clear()
vistited.Add(e.Node)
Dim oAsmDoc As ComponentOccurrence
oAsmDoc = e.Node.Tag
rootNode = e.Node
Call DFS(oAsmDoc.Definition.Document.ComponentDefinition.Occurrences, 2, False)
End If
End If
End Sub
DFS:
Private Sub DFS(Occurrences As ComponentOccurrences, Level As Integer, boolRoot As Boolean)
Cursor = Cursors.WaitCursor
Dim oOcc As ComponentOccurrence
Dim childs As ArrayList = New ArrayList()
For Each oOcc In Occurrences
Dim oPartPropsetUser As Inventor.PropertySet = oOcc.Definition.Document.PropertySets.Item(4)
Dim newNode As TreeNode
If Level = 1 Then
rootNode = rootNodes.Item(0)
ElseIf boolRoot = True Then
Dim oParentOccName = oOcc.Definition.Document.ComponentDefinition.ParentOccurrence.Name
For Each element As TreeNode In rootNodes
If element.Text = oParentOccName Then
rootNode = element
End If
Next
End If
If Not childs.Contains(oOcc.Definition.Document.DatabaseRevisionId) Then
childs.Add(oOcc.Definition.Document.DatabaseRevisionId)
Try
If oPartPropsetUser("PF_DOC_WF").Value <> "freigegeben (CAD Admin)" Then
newNode = rootNode.Nodes.Add(oOcc.Name)
Else
Continue For
End If
Catch ex As Exception
newNode = rootNode.Nodes.Add(oOcc.Name)
End Try
#Region "Datainfo"
'{756AB4A0-49C8-623D-3998-22AEAF1623AC} 175105
' : DatabaseRevisionId : "{237B47AD-434B-6733-A854-DE8CA7D46B90}" : String
'{756AB4A0-49C8-623D-3998-22AEAF1623AC} 174937
' : DatabaseRevisionId : "{CB71B317-48AC-048E-7C73-70953DCD56A1}" : String
#End Region
newNode.Tag = oOcc
If oOcc.DefinitionDocumentType = DocumentTypeEnum.kAssemblyDocumentObject Then
newNode.ImageIndex = 0
newNode.Nodes.Add("-")
ElseIf oOcc.DefinitionDocumentType = DocumentTypeEnum.kPartDocumentObject Then
If TypeOf oOcc.Definition.Document.ComponentDefinition Is SheetMetalComponentDefinition Then
Try
newNode.ImageIndex = 2
Catch ex As Exception
End Try
Else
Try
newNode.ImageIndex = 1
Catch ex As Exception
End Try
End If
End If
End If
Next
If Level = 1 Then
rootNode.Expand()
End If
Cursor = Cursors.Default
End Sub