Zum Hauptinhalt springen

iLogic: Plain Text Exporte

·615 Wörter·3 min·
Autodesk Inventor CAD
Inhaltsverzeichnis
Inventor iLogic - Dieser Artikel ist Teil einer Serie.
Teil 13: Dieser Artikel

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 zu erzeugen und zu schreiben.

Minimalbeispiel

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)

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

' Filewriter
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)

Materialexport als Markdown-Tabelle

Dieses Beispiel exportiert die Materialbibliothek des aktiven Dokuments in eine Markdown Tabelle. Zusätzlich wird der Zeitpunkt des Exports im Dateinamen im Format Materials_2025-06-01.txt festgehalten.

iLogic erlaubt keinen nativen Export ins Markdown Format mit der Dateiendung .md und wirft beim Versuch eine Fehlermeldung. Daher wird auch dieser Export als Text-Datei .txt ausgeleitet.

Fehlermeldung beim Versuch eine Markdown Datei zu schreiben
Dim oDoc As Document = ThisDoc.Document

If oDoc.DocumentType <> kPartDocumentObject Then
    MessageBox.Show("This document is not a Part Document." & vbCrLf & vbCrLf & "Open a Part Document and try again.", _
                    ThisDoc.FileName(True) & ": Run only in Parts", _
                    MessageBoxButtons.OK, _
                    MessageBoxIcon.Error)
    Exit Sub
End If

Dim oMaterials As Materials = oDoc.Materials

' Formatted date for filename
Dim formattedDate As String = Now.ToString("yyyy-MM-dd")

' File Writer
Dim oFile As System.IO.File
Dim oWrite As System.IO.StreamWriter
Dim sFilePath As String = "C:/iLogicOutput/Materials_" & formattedDate & ".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("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 | Internal Name | Density [g/cm^3^]|")
oWrite.WriteLine("| ------------- | ------------- | ---------------: |")

For Each oMaterial As Material In oMaterials

    Dim sMaterialName As String = oMaterial.Name.ToString
    Dim sMaterialInternalName As String = oMaterial.InternalName
    Dim dDensity As Double = oMaterial.Density

    Dim sResult As String = "| " & sMaterialName & " | " & sMaterialInternalName.TrimEnd & " | " & dDensity &  " |"
    oWrite.WriteLine(sResult)

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:

Eine gerenderte Markdown Tabelle

Gerenderte Markdown Tabelle mit dillinger.io

Inventor iLogic - Dieser Artikel ist Teil einer Serie.
Teil 13: Dieser Artikel