# STL-Schnittstelle

Die STL-Schnittstelle ist eine Standardschnittstelle vieler CAD-Systeme, die 1988 von 3D Systems in ihrer Stereolithographie-Software eingeführt wurde. Sie stellt Netzkoordinaten dreidimensionaler Datenmodelle bereit für die Fertigung mittels additiver Fertigungsverfahren/3D-Druck oder Rapid-Prototyping-Anlagen. Stereolithografie-Anlagen (SLA) waren die ersten kommerziell verfügbaren Anlagen, die mit dieser Geometriebeschreibung betrieben wurden.
Obwohl die ursprüngliche Bedeutung des Akronyms für Stereolithographie stand, wurden ihm nachträglich auch andere Interpretationen hinterlegt wie „Standard Triangle Language“ oder „Standard Tessellation Language“.

## Definition

Das STL-Format beschreibt die Oberfläche von 3D-Körpern mithilfe von Dreiecksfacetten (englisch tessellation = „Parkettierung“). Jede Dreiecksfacette wird durch die drei Eckpunkte und die zugehörige Flächennormale des Dreieckes charakterisiert. Sind die drei Eckpunkte beim Blick auf eine Dreiecksfläche gegen den Uhrzeigersinn angeordnet, wird die Fläche als Außenseite eines Volumenkörpers (Solid) angenommen. Die redundante Flächennormale weist immer aus dem Körper heraus.
Weil mindestens drei Dreiecke einen gemeinsamen Eckpunkt besitzen, wird jeder Punkt mindestens dreimal aufgelistet. Zusätzlich wird die Flächennormale abgespeichert, die sich ebenso gut durch die Reihenfolge bei der Beschreibung eines einzelnen Dreiecks definieren ließe. Dies und die Abspeicherung im ASCII führen dazu, dass die Datenmenge enorme Größen annehmen kann. Das Format existiert auch in einer binär abgespeicherten Variante, welche schon eine erhebliche Reduktion ergibt, zusätzlich lässt sich mit Komprimierung eine Reduktion auf handhabbare Dateigrößen erreichen.
Ein Format, das die gleiche Struktur (triangulierte Oberflächen) aufweist, jedoch die Redundanzen (Mehrfachnennungen) vermeidet, ist VRML (Virtual Reality Modeling Language, auch *.vrml). Bei diesem Format gibt es zwei nummerierte Listen: die erste umfasst die Koordinaten der Dreieckseckpunkte, in der zweiten werden die Dreiecke anhand der Positionsnummer der Punkteliste definiert, ebenso die Flächennormale aus der Reihenfolge der Dreieckspunkte. Dieses Geometrieelement ist erforderlich, um Innen- und Außenseite unterscheiden zu können. Um die Oberfläche des Körpers aufzubauen, ist also ein einmaliges Durchlaufen der zweiten Liste der VRML-Datei erforderlich. Beim STL-Format sind die Dreiecke direkt auslesbar, wie oben erwähnt werden die Punkte aber mehrmals gelesen. Der Zeitbedarf für den Aufbau eines virtuellen Modells ist bei beiden Formaten nicht sehr unterschiedlich, aber beim Speicherbedarf und bei der Datenübermittlung ist VRML klar im Vorteil. Aus diesem Grund wird das Format bevorzugt bei Computerspielen, in der „Virtual Reality“ und bei 3D-Anwendungen im Internet verwendet.
Gekrümmte Oberflächen werden durch die Dreiecke nur angenähert. Je geringer die Anzahl der Dreiecke, desto größer sind die Abweichungen; je genauer die Annäherung sein muss, desto mehr Einzeldreiecke sind nötig. Daher steigt die Datenmenge mit höherer Genauigkeit stark an.
Die Beschreibung der Modelloberfläche in Form des STL-Formates stellt faktisch einen Industriestandard dar. VRML wird nicht von allen Systemen korrekt erzeugt oder gelesen, was eine Substitution bisher verhindert hat. VRML bietet die Möglichkeit, die Oberflächen mit Farben oder Texturen zu versehen oder auch eine vierte Dimension, die über eine zeitliche Veränderung von Geometrieelementen (Punktkoordinaten) dargestellt wird. Spätestens hier endet jedoch die Standardisierung (vergleichbar mit den Dialektversionen von NC-Code).
Im STL-Format vorliegende Daten können ohne erneutes Importieren in ein CAD-Programm gedreht und vergrößert oder verkleinert werden, um z. B. die Schrumpfung des Harzes bei der Stereolithografie auszugleichen.

### ASCII-Format

Jede STL-Datei in ASCII-Code ist folgendermaßen aufgebaut:
name steht für den Dateinamen, der Block von facet bis endfacet steht für ein Dreieck und wird entsprechend der Anzahl an Dreiecken wiederholt. n$_i$ gibt den Normalenvektor des Dreiecks an, p1$_j$ bis p3$_j$ die x-, y- und z-Koordinate der Eckpunkte des Dreiecks.

### Binär-Format

Da Modelle im ASCII-Format leicht zu sehr großen Dateien führen, wird häufig im Binär-Format gespeichert. Eine binäre STL-Datei beginnt mit einem Dateikopf (Header) von 80 Bytes. Der Inhalt des Headers wird bei der Verarbeitung ignoriert, er darf allerdings nicht mit solid beginnen, da dies das Schlüsselwort für STL-Dateien im ASCII-Format ist. Auf den Header folgen 4 Bytes, die einen vorzeichenlosen Integer darstellen, welcher die Anzahl der Dreiecke (respektive facet-Einträge) in der Datei angibt. Danach folgen die Daten für die einzelnen Dreiecke. Die Datei endet nach dem letzten Dreieck.
Jedes Dreieck wird durch zwölf Gleitkommazahlen zu je 32 Bit dargestellt: drei für die Normale und drei für die jeweiligen X-,Y- und Z-Koordinaten der Eckpunkte des Dreiecks. Danach folgen zwei Bytes, die einen vorzeichenlosen Integer darstellen (attribute byte count). In der Regel ist dessen Wert null, der Großteil der existierenden Software versteht auch keine anderen Werte.
Gleitkommazahlen werden nach IEEE 754 dargestellt, wobei die Byte-Reihenfolge Little-Endian verwendet wird.

## Fehler und Probleme

Bei der Umsetzung der CAD-internen Geometriedaten können verschiedene Fehler auftreten. Sie werden wie folgt unterteilt:

### Umsetzungsprobleme

* keine direkte Umsetzung von gekrümmten Formelementen möglich
* Verzerrung von Formelementen durch den gewählten Approximationsgrad (minimale Größe bzw. maximale Dichte der verwendeten Dreiecksfacetten)
Die Umsetzungsfehler führen zu einer Verfälschung der gefertigten Geometrie im Verhältnis zur konstruktiven Ausgangsbasis. Sie haben jedoch keinen Einfluss auf die Verarbeitbarkeit der Daten auf der Stereolithographieanlage. Die Größe der Fehler hängt vom verwendeten CAD-System mit seinen vorgegebenen Eigenschaften sowie vom Handling des Systems (und speziell der STL-Schnittstelle) durch den Bediener ab. Ein spezieller Einflussfaktor ist der verwendete Approximationsgrad für gekrümmte Formelemente. Dieser definiert die Anzahl der zu verwendenden Dreiecksfacetten pro gekrümmter Fläche und damit die Feinheit der Umsetzung. Je mehr Facetten verwendet werden, desto genauer ist die Beschreibung und desto größer ist die erzeugte Datei. Hier ist ein Kompromiss zwischen Datenmenge und Formabweichung für das zu beschreibende Werkstück zu finden.
Für die Fertigung der Teile sind deshalb diese Werte von grundlegender Bedeutung.

### Syntaktische Darstellungsfehler

Beim Auftreten von Fehlern in diesen Datenfiles ist eine Fertigung nur mit Einschränkungen oder überhaupt nicht möglich. Diese Fehler können sein:
* Lücken zwischen Dreiecksfacetten
* Doppelte Dreiecksfacetten
* Falsche Orientierung einzelner Facetten
* Falten

## Verwandte Dateiformate

* OFF – Object File Format
* PLY – Polygon File Format
* OBJ – von Wavefront Technologies