STL (format de fichier) - STL (file format)

LIST
Les différences entre CAD et STL Models.svg
Une représentation CAO d'un tore (représenté par deux cercles rouges concentriques) et une approximation STL de la même forme (composée de plans triangulaires)
Extension de nom de fichier
.stl
Type de média Internet
Développé par Systèmes 3D
Première version 1987
Type de format Stéréolithographie

STL est un format de fichier natif du logiciel de CAO de stéréolithographie créé par 3D Systems . STL a plusieurs backronyms tels que "Standard Triangle Language" et "Standard Tessellation Language". Ce format de fichier est pris en charge par de nombreux autres logiciels ; il est largement utilisé pour le prototypage rapide , l'impression 3D et la fabrication assistée par ordinateur . Les fichiers STL décrivent uniquement la géométrie de surface d'un objet tridimensionnel sans aucune représentation de la couleur, de la texture ou d'autres attributs de modèle CAO courants. Le format STL spécifie à la fois les représentations ASCII et binaires . Les fichiers binaires sont plus courants, car ils sont plus compacts.

Un fichier STL décrit une surface triangulée brute et non structurée par la normale unité et les sommets (ordonnés par la règle de la main droite ) des triangles à l'aide d'un système de coordonnées cartésiennes en trois dimensions . Dans la spécification d'origine, toutes les coordonnées STL devaient être des nombres positifs, mais cette restriction n'est plus appliquée et les coordonnées négatives sont couramment rencontrées dans les fichiers STL aujourd'hui. Les fichiers STL ne contiennent aucune information d'échelle et les unités sont arbitraires.

ASCII STL

Un fichier ASCII STL commence par la ligne

solid name

nom est une chaîne facultative (bien que si nom est omis, il doit toujours y avoir un espace après le solide). Le fichier se poursuit avec un nombre quelconque de triangles, chacun représenté comme suit :

facet normal ni nj nk
    outer loop
        vertex v1x v1y v1z
        vertex v2x v2y v2z
        vertex v3x v3y v3z
    endloop
endfacet

où chaque n ou v est un nombre à virgule flottante au format signe- mantisse -"e"-signe- exposant , par exemple, "2.648000e-002". Le dossier se termine par

endsolid name
Un exemple ASCII STL d'un sphericon

La structure du format suggère que d'autres possibilités existent (par exemple, des facettes avec plus d'une "boucle", ou des boucles avec plus de trois sommets). En pratique, cependant, toutes les facettes sont de simples triangles.

Les espaces blancs (espaces, tabulations, sauts de ligne) peuvent être utilisés n'importe où dans le fichier, sauf dans les chiffres ou les mots. Les espaces entre "facet" et "normal" et entre "outer" et "loop" sont obligatoires.

STL binaire

Étant donné que les fichiers ASCII STL peuvent être très volumineux, une version binaire de STL existe. Un fichier STL binaire a un en-tête de 80 caractères (qui est généralement ignoré, mais ne doit jamais commencer par "solide" car cela peut conduire certains logiciels à supposer qu'il s'agit d'un fichier STL ASCII). À la suite de l'en-tête se trouve un entier non signé little-endian de 4 octets indiquant le nombre de facettes triangulaires dans le fichier. Viennent ensuite les données décrivant chaque triangle à son tour. Le fichier se termine simplement après le dernier triangle.

Chaque triangle est décrit par douze nombres à virgule flottante de 32 bits : trois pour la normale, puis trois pour la coordonnée X/Y/Z de chaque sommet – tout comme avec la version ASCII de STL. Après ceux-ci suit un entier non signé de 2 octets ("court") qui est le "compte d'octets d'attribut" - dans le format standard, cela devrait être zéro car la plupart des logiciels ne comprennent rien d'autre.

Les nombres à virgule flottante sont représentés comme des nombres à virgule flottante IEEE et sont supposés être little-endian , bien que cela ne soit pas indiqué dans la documentation.

UINT8[80]    – Header                 -     80 bytes                           
UINT32       – Number of triangles    -      4 bytes

foreach triangle                      - 50 bytes:
    REAL32[3] – Normal vector             - 12 bytes
    REAL32[3] – Vertex 1                  - 12 bytes
    REAL32[3] – Vertex 2                  - 12 bytes
    REAL32[3] – Vertex 3                  - 12 bytes
    UINT16    – Attribute byte count      -  2 bytes
end

Couleur en STL binaire

Il existe au moins deux variantes non standard du format STL binaire pour ajouter des informations de couleur :

  • Les progiciels VisCAM et SolidView utilisent les deux octets « nombre d'octets d'attribut » à la fin de chaque triangle pour stocker une couleur RVB 15 bits :
    • les bits 0 à 4 sont le niveau d'intensité pour le bleu (0 à 31),
    • les bits 5 à 9 sont le niveau d'intensité du vert (0 à 31),
    • les bits 10 à 14 sont le niveau d'intensité pour le rouge (0 à 31),
    • le bit 15 est 1 si la couleur est valide, ou 0 si la couleur n'est pas valide (comme avec les fichiers STL normaux).
  • Le logiciel Materialise Magics utilise l'en-tête de 80 octets en haut du fichier pour représenter la couleur globale de la pièce entière. Si la couleur est utilisée, alors quelque part dans l'en-tête devrait se trouver la chaîne ASCII "COLOR=" suivie de quatre octets représentant le rouge, le vert, le bleu et le canal alpha (transparence) dans la plage 0-255. Il s'agit de la couleur de l'objet entier, à moins qu'elle ne soit remplacée à chaque facette. Magics reconnaît également une description matérielle; une caractéristique de surface plus détaillée. Juste après la spécification "COLOR=RGBA" devrait se trouver une autre chaîne ASCII ",MATERIAL=" suivie de trois couleurs (3×4 octets) : la première est une couleur de réflexion diffuse , la deuxième est une couleur de surbrillance spéculaire et la troisième est une couleur ambiante lumière . Les paramètres matériels sont préférés à la couleur. La couleur par facette est représentée dans les deux octets du "nombre d'octets d'attribut" comme suit :
    • les bits 0 à 4 sont le niveau d'intensité pour le rouge (0 à 31),
    • les bits 5 à 9 sont le niveau d'intensité du vert (0 à 31),
    • les bits 10 à 14 sont le niveau d'intensité pour le bleu (0 à 31),
    • le bit 15 est 0 si cette facette a sa propre couleur unique, ou 1 si la couleur par objet doit être utilisée.

L'ordre rouge/vert/bleu au sein de ces deux octets est inversé dans ces deux approches. Ainsi, alors que ces formats auraient facilement pu être compatibles, l'inversion de l'ordre des couleurs signifie qu'elles ne sont pas – et pire encore, un fichier STL générique le lecteur ne peut pas automatiquement les distinguer. Il n'y a pas non plus de moyen pour que les facettes soient sélectivement transparentes car il n'y a pas de valeur alpha par facette - bien que dans le contexte des machines de prototypage rapide actuelles, cela ne soit pas important.

Unités en STL binaire

Les unités de coordonnées ne sont pas spécifiées dans la norme STL. Une idée est d'ajouter une chaîne ASCII "UNITS=xx" quelque part dans l'en-tête, où "xx" sont deux octets représentant les unités utilisées, lors de l'écriture de ce fichier. Les options possibles sont :

Indice d'en-tête UNITS
ASCII Hex La description
mm 6j 6j Millimètres
cm 63 6j Centimètres
m 20 6j Mètres. Le premier octet est un espace ' ', ASCII 32=0x20
pi 66 74 Pieds décimaux
dans 69 69 Pouces décimaux
ment 6c 79 Années lumière

La facette normale

Dans les versions ASCII et binaires de STL, la facette normale doit être un vecteur unitaire pointant vers l'extérieur de l'objet solide. Dans la plupart des logiciels, cela peut être réglé sur (0,0,0), et le logiciel calculera automatiquement une normale en fonction de l'ordre des sommets du triangle en utilisant la " règle de la main droite ", c'est-à-dire que les sommets sont répertoriés en contre-horloge -ordre sage de l'extérieur. Certains chargeurs STL (par exemple le plugin STL pour Art of Illusion) vérifient que la normale dans le fichier est en accord avec la normale qu'ils calculent en utilisant la règle de la main droite et avertissent l'utilisateur lorsque ce n'est pas le cas. D'autres logiciels peuvent ignorer complètement la facette normale et n'utiliser que la règle de la main droite. Bien qu'il soit rare de spécifier une normale qui ne peut pas être calculée à l'aide de la règle de la main droite, pour être entièrement portable, un fichier doit à la fois fournir la normale de la facette et ordonner les sommets de manière appropriée. Une exception notable est SolidWorks , qui utilise la normale pour les effets d'ombrage .

Utilisation en impression 3D

Wikipédia logo

Les imprimantes 3D construisent des objets en solidifiant ( SLA , SLS , SHS , DMLS , EBM , DLP ) ou en imprimant (3DP, MJM, FDM , FFF , PJP, MJS) une couche à la fois. Cela nécessite une série de contours 2D fermés (couches horizontales) qui sont remplis de matériau solidifié lorsque les couches sont fusionnées. Un format de fichier naturel pour une telle machine serait une série de polygones fermés (couches ou tranches) correspondant à différentes valeurs Z. Cependant, comme il est possible de faire varier les épaisseurs de couche pour une construction plus rapide mais moins précise, il était plus facile de définir le modèle à construire comme un polyèdre fermé qui peut être tranché aux niveaux horizontaux nécessaires. Une facette normale incorrecte peut affecter la façon dont un fichier est découpé et rempli. Une tranche à une valeur Z différente peut être choisie pour manquer une mauvaise facette ou le fichier doit être renvoyé au programme de CAO pour apporter des corrections, puis régénérer le fichier STL.

Le format de fichier STL semble capable de définir un polyèdre avec n'importe quelle facette polygonale, mais en pratique, il n'est jamais utilisé que pour les triangles, ce qui signifie qu'une grande partie de la syntaxe du protocole ASCII est superflue.

Pour former correctement un volume 3D, la surface représentée par tous les fichiers STL doit être fermée (pas de trous ou de vecteur normal inversé) et connectée, où chaque bord fait partie d'exactement deux triangles et ne se coupe pas. Étant donné que la syntaxe STL n'applique pas cette propriété, elle peut être ignorée pour les applications où le vide n'a pas d'importance. La surface manquante n'a d'importance que dans la mesure où le logiciel qui découpe les triangles l'exige pour s'assurer que les polygones 2D résultants sont fermés. Parfois, de tels logiciels peuvent être écrits pour nettoyer de petites divergences en déplaçant des sommets proches les uns des autres afin qu'ils coïncident. Les résultats ne sont pas prévisibles, peut être suffisant de la surface doit être réparée à l'aide d'un autre programme. Les imprimantes 3D vectorielles nécessitent un fichier .STL propre et l'impression d'un fichier de données incorrect ne se remplira pas ou peut arrêter l'impression.

Utilisation dans d'autres domaines

Le format de fichier STL est simple et facile à produire. Par conséquent, de nombreux systèmes de conception assistée par ordinateur peuvent sortir le format de fichier STL. Bien que la sortie soit simple à produire, les informations de connectivité de maillage sont ignorées car l'identité des sommets partagés est perdue.

De nombreux systèmes de fabrication assistée par ordinateur nécessitent des modèles triangulés. Le format STL n'est pas la méthode la plus efficace en termes de mémoire et de calcul pour transférer ces données, mais STL est souvent utilisé pour importer la géométrie triangulée dans le système CAM . Le format est couramment disponible, donc le système CAM l'utilisera. Afin d'utiliser les données, le système CAM peut avoir à reconstruire la connectivité. Comme les fichiers STL n'enregistrent pas la dimension physique d'une unité, un système de FAO la demandera. Les unités typiques sont le mm et le pouce.

STL peut également être utilisé pour échanger des données entre des systèmes CAD/CAM et des environnements informatiques tels que Mathematica .

Représentation de surfaces courbes

Il n'est pas possible d'utiliser des triangles pour représenter parfaitement des surfaces courbes. Pour compenser, les utilisateurs enregistrent souvent d'énormes fichiers STL pour réduire l'imprécision. Cependant, les formats natifs associés à de nombreux logiciels de conception 3D utilisent des surfaces mathématiques pour préserver les détails sans perte dans les petits fichiers. Par exemple, Rhino 3D et Blender implémentent NURBS pour créer de véritables surfaces courbes et les stocker dans leurs formats de fichiers natifs respectifs, mais doivent générer un maillage triangulaire lors de l'exportation d'un modèle au format STL.

Histoire

STL a été inventé par Albert Consulting Group pour 3D Systems en 1987. Le format a été développé pour les premières imprimantes 3D commerciales de 3D Systems. Depuis sa sortie initiale, le format est resté relativement inchangé pendant 22 ans.

En 2009, une mise à jour du format, baptisée STL 2.0, a été proposée. Il a évolué vers le format de fichier de fabrication additive .

Voir également

Les références

Liens externes