Code:
Public Sub PublishDXF()' Set reference to active document
Dim oAssDoc As AssemblyDocument
Set oAssDoc = ThisApplication.ActiveDocument
' Get assembly component definition
Dim oCompDef As Inventor.ComponentDefinition
Set oCompDef = oAssDoc.ComponentDefinition
Dim oSubOcc As ComponentOccurrence
'Get any occurrences in the assembly
For Each oSubOcc In oCompDef.Occurrences.AllLeafOccurrences
'Check if occurrence is a partobject
If oSubOcc.DefinitionDocumentType = kPartDocumentObject Then
Dim oSubPartDef As PartComponentDefinition
Set oSubPartDef = oSubOcc.Definition
Dim oSketch As PlanarSketch
For Each oSketch In oSubPartDef.Sketches
If oSketch.Name = "SK_Daemmung_ges" Then
Call ExportGeom(oSketch, oSubOcc)
End If
Next
End If
Next
MsgBox ("Schneideskizze(n) erstellt")
End Sub
Private Sub ExportGeom(ByVal oSketch As PlanarSketch, oSubOcc As ComponentOccurrence)
Dim oDoc As PartDocument
Set oDoc = oSubOcc.Definition.Document
Set oDoc = ThisApplication.Documents.Open(oDoc.FullFileName)
Dim oControlDef As ControlDefinition
Set oControlDef = ThisApplication.CommandManager.ControlDefinitions.Item("GeomToDXFCommand")
Dim sPath As String
sPath = "U:\XXXXX\CAD-Daten\"
Dim sFullFileName As String
sFullFileName = oDoc.FullDocumentName
Dim sFileName As String
sFileName = FileName(sFullFileName) '"sketch.dxf"
Dim sNewFullFileName As String
sNewFullFileName = sPath & sFileName & ".dxf"
Dim oSelectSet As SelectSet
Set oSelectSet = oDoc.SelectSet
Call ThisApplication.CommandManager.PostPrivateEvent(PrivateEventTypeEnum.kFileNameEvent, sFullFileName)
Call oDoc.SelectSet.Clear
Call oDoc.SelectSet.Select(oSketch)
Call oControlDef.Execute2(True)
Call oDoc.SelectSet.Clear
Call oDoc.Close(True)
End Sub
Private Function FileName(ByVal sFullFileName As String) As String
Dim oArray() As String
oArray = Split(sFullFileName, "\")
Dim sFileName As String
sFileName = oArray(UBound(oArray))
FileName = Left(sFileName, Len(sFileName) - 4)
End Function