Da in iLogic auch .NET-Klassen aus dem Namespace System.IO zur Verfügung stehen, können diese genutzt werden, um Plain-Text-Dateien mittels StreamWriter oder WriteAllText zu erzeugen und zu schreiben.
Die Methoden unterscheiden sich grundsätzlich in ihrer Funktion und Anwendungsfall:
StreamWriter- Öffnet einen Stream, der es erlaubt kontinuierlich Daten Zeile-für-Zeile wegzuschreiben. Dies ist nützlich in iterativen Vorgängen.
WriteAllText- Schreibt direkt einen Text in eine Datei.
Minimalbeispiel StreamWriter
Im folgenden ein Minimalbeispiel, dass eine Textdatei hallo.txt im Pfad C:/iLogicOutput/ erzeugt, die Zeichenfolge Hallo schreibt und nach dem Schreibvorgang das Dokument automatisch öffnet. Vorangestellt ist eine Prüfung die sicherstellt, dass der Ausgabepfad bereits existiert und legt diesen ggf. an, bevor der Schreibvorgang startet.
Dim oFile As System.IO.File
Dim oWrite As System.IO.StreamWriter
Dim sFilePath As String = "C:/iLogicOutput/hallo.txt"
Dim sDirectory As String = System.IO.Path.GetDirectoryName(sFilePath)
If Not System.IO.Directory.Exists(sDirectory) Then
System.IO.Directory.CreateDirectory(sDirectory)
End If
oWrite = oFile.CreateText(sFilePath)
oWrite.WriteLine("Hallo")
oWrite.Close()
ThisDoc.Launch(sFilePath)Die letzte Zeile ThisDoc.Launch() öffnet final die erzeugte Textdatei.
Minimalbeispiel WriteAllText
Das folgende Minimalbeispiel schreibt das heutige Datum in eine Textdatei:
Dim sFilePath As String = "C:/iLogicOutput/hallo.txt"
Dim sDirectory As String = System.IO.Path.GetDirectoryName(sFilePath)
Dim currentDate As String = Now.ToString("dd.MM.yyyy")
If Not System.IO.Directory.Exists(sDirectory) Then
System.IO.Directory.CreateDirectory(sDirectory)
End If
IO.File.WriteAllText(sFilePath, currentDate)
ThisDoc.Launch(sFilePath)Anwendungsbeispiele
Blechregeln als CSV-Export
Dieses Beispiel exportiert sämtliche Blechregeln als CSV-Datei. Als Trennzeichen (Delimiter) wird in diesem Fall ein Semikolon ; verwendet und kann ggf. in den Zeilen oWrite.WriteLine() angepasst werden, sofern ein Komma als Trennzeichen erwünscht ist. Das Beispiel ist ein Quick-and-Dirty-Lösung, die den CSV-Header und die Wertezeilen rausschreibt. Die CSV-Datei kann dann theoretisch auch in Excel importiert werden - wenn man das denn will.
Das Blechteil wird, wie bereits im Post iLogic: Dokumententypen erläutert, über die DocumentSubTypeID ermittelt.
Dim oDoc As Document = ThisDoc.Document
' Check if Sheet Metal Part is currently open in Inventor
If oDoc.DocumentSubType.DocumentSubTypeID <> "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
MessageBox.Show(
"Please open a Sheet Metal Part and try again", _
"Not a Sheet Metal Part", _
MessageBoxButtons.OK, _
MessageBoxIcon.Error
)
Exit Sub
End If
' Get SheetMetalStyles object
Dim oSheetMetalStyles As SheetMetalStyles = oDoc.ComponentDefinition.SheetMetalStyles
' Streamwriter
Dim oFile As System.IO.File
Dim oWrite As System.IO.StreamWriter
Dim sFilePath As String = "C:/iLogicOutput/SheetMetalRules.csv"
Dim sDirectory As String = System.IO.Path.GetDirectoryName(sFilePath)
If Not System.IO.Directory.Exists(sDirectory) Then
System.IO.Directory.CreateDirectory(sDirectory)
End If
oWrite = oFile.CreateText(sFilePath)
' CSV Header
oWrite.WriteLine("""Sheet Metal Rule"";""Material"";""Thickness"";""Bend Radius"";""Unfold Rule"";""kFactor""")
' CSV Row Data
For Each oSheetMetalStyle As SheetMetalStyle In oSheetMetalStyles
Dim sRuleName As String = oSheetMetalStyle.Name
Dim sMaterial As String = oSheetMetalStyle.Material.Name
Dim sThickness As String = oSheetMetalStyle.Thickness
Dim sBendRadius As String = oSheetMetalStyle.BendRadius
Dim sUnfoldRule As String = oSheetMetalStyle.UnfoldMethod.Name
Dim sKFactor As String = oSheetMetalStyle.UnfoldMethod.kFactor
oWrite.WriteLine("""{0}"";""{1}"";""{2}"";""{3}"";""{4}"";""{5}""", _
sRuleName, sMaterial, sThickness, sBendRadius, sUnfoldRule, sKFactor)
Next
oWrite.Close()
ThisDoc.Launch(sFilePath)Materialbibliothek als Markdown-Tabelle
Dieses Beispiel exportiert die Materialbibliothek in eine Markdown Tabelle. Dazu wird nicht das aktive Dokument genutzt, sondern die Inventor Application, die sämtliche Bibliotheken (AssetLibraries) verwaltet:

MaterialAssets in AssetLibraries
Zusätzlich wird der Zeitpunkt des Exports im Dateinamen im Format Materials_2025-06-01.txt festgehalten.
Dim oApp As Application = ThisApplication
Dim oMaterialLibrary As AssetsEnumerator = oApp.AssetLibraries.Item("Autodesk Material Library").MaterialAssets
Dim formattedDate As String = Now.ToString("yyyy-MM-dd")
Dim sFilePath As String = "C:/iLogicOutput/Materials_" & formattedDate & ".txt"
Dim sDirectory As String = System.IO.Path.GetDirectoryName(sFilePath)
Dim oFile As System.IO.File
Dim oWrite As System.IO.StreamWriter
If Not System.IO.Directory.Exists(sDirectory) Then
System.IO.Directory.CreateDirectory(sDirectory)
End If
oWrite = oFile.CreateText(sFilePath)
oWrite.WriteLine("Export date: **" & formattedDate & "**" )
oWrite.WriteLine("")
oWrite.WriteLine("This table is a Markdown Table. Paste it into your Markdown renderer of choice like https://dillinger.io or vscode.")
oWrite.WriteLine("")
oWrite.WriteLine("| Material Name | Material Category | Density [kg/m^3^]|")
oWrite.WriteLine("| ------------- | ----------------- | ---------------: |")
For Each oMaterialAsset As MaterialAsset in oMaterialLibrary
Dim sLineData As String = "| " & oMaterialAsset.DisplayName & " | " & oMaterialAsset.CategoryName & " | " & oMaterialAsset.PhysicalPropertiesAsset.Item("structural_Density").Value & " |"
oWrite.WriteLine(sLineData)
Next
oWrite.Close()
ThisDoc.Launch(sFilePath)Der Output ist als Markdown Tabelle formatiert und kann mit einem Markdown Renderer wie Visual Studio Code oder Onlinediensten wie dillinger.io gerendert werden:

Gerenderte Markdown Tabelle mit dillinger.io