Binäres und ASCII-STL: Was ist der Unterschied?
STL gibt es in zwei Kodierungen. Beide beschreiben dieselben Dreiecke, aber die eine ist Klartext und die andere gepackte Binärdaten. Fürs Drucken sind sie austauschbar. Der Unterschied spielt bei der Dateigröße eine Rolle und bei Software, die erraten muss, welche Variante sie vor sich hat.
ASCII-STL
Eine ASCII-STL ist eine Textdatei, die Sie in jedem Editor öffnen können. Sie beginnt mit solid und einem Namen, listet jedes Dreieck als Block mit Normale und drei Eckpunkten auf und endet mit endsolid.
solid part
facet normal 0 0 1
outer loop
vertex 0 0 0
vertex 1 0 0
vertex 0 1 0
endloop
endfacet
endsolid part
Sie ist leicht zu lesen und zu debuggen, aber groß. Jede Zahl wird als Text ausgeschrieben, daher ist eine ASCII-Datei meist um ein Vielfaches größer als die binäre Version desselben Modells.
Binäres STL
Eine binäre STL ist kompakt und hat einen festen Aufbau:
- ein 80 Byte langer Header, freier Text, den Software ignoriert
- eine 4 Byte lange Anzahl der Dreiecke
- danach 50 Byte pro Dreieck: 12 Zahlen (die Normale und drei Eckpunkte, je 4 Byte) plus 2 freie Bytes
Die Dateigröße beträgt also immer 84 plus 50 mal die Anzahl der Dreiecke. Die zwei freien Bytes heißen “Attribute Byte Count”. Manche CAD-Programme speichern darin eine Farbe, aber fast kein Slicer liest sie. (Überblick zum STL-Format)
Fast jeder moderne Exporter schreibt binäres STL, weil es kleiner ist und schneller lädt.
Die solid-Falle
Der naheliegende Weg, die Kodierungen zu unterscheiden, ist zu prüfen, ob die Datei mit dem Wort solid beginnt. Das funktioniert nicht zuverlässig. Der binäre Header ist freier Text, und manche Exporter füllen ihn mit einer Zeile, die mit solid beginnt. Ein Viewer, der diesem ersten Wort traut, behandelt eine binäre Datei als Text und scheitert dann beim Lesen, oft mit der Meldung, die Datei sei leer oder beschädigt.
Das beliebte Testmodell 3DBenchy ist so eine Datei. Sein binärer Header beginnt mit solid, und manche Viewer lehnen es deshalb ab.
Verlässlich ist stattdessen eine Prüfung über die Größe. Lesen Sie die Dreiecksanzahl aus den Bytes 80 bis 83: Ist die Datei genau 84 plus 50 mal diese Anzahl groß, ist sie binär. Andernfalls behandeln Sie sie als Text. MeshView kommt mit solchen Headern zurecht, deshalb lassen sich solche Dateien trotzdem öffnen.
Spielt es fürs Drucken eine Rolle
Nein. Slicer lesen beide Varianten, und ein Modell wird unabhängig davon gleich gedruckt. Ein paar praktische Hinweise:
- Binär zum Weitergeben. Die Datei ist kleiner und per Mobilfunk schneller verschickt.
- ASCII nur zum Untersuchen der Daten oder wenn ein Werkzeug, auf das Sie angewiesen sind, es verlangt.
- Keine der beiden Varianten kennt Einheiten oder Farbe. Siehe STL oder 3MF: Welches Format passt? und STL hat keine Einheiten.
Wenn sich eine Datei nicht öffnen lässt
Eine Datei, die sich nirgends öffnen lässt, ist womöglich abgeschnitten. Vergleichen Sie bei einer binären STL ihre Größe mit 84 plus 50 mal der Dreiecksanzahl: Ist sie kleiner, wurde der Download vorzeitig abgebrochen, und Sie sollten die Datei erneut herunterladen.