STL (формат файла)


STL (от англ. stereolithography) — формат файла, широко[4][5] используемый для хранения трёхмерных моделей объектов для использования в аддитивных технологиях. Информация об объекте хранится как список треугольных граней, которые описывают его поверхность, и их нормалей. STL-файл может быть текстовым (ASCII) или двоичным. Своё название получил от сокращения термина «Stereolithography», поскольку изначально применялся именно в этой технологии трёхмерной печати.

где name — необязательная строка (но если name опущено, всё равно должен быть пробел после solid). Файл продолжается произвольным числом треугольников, описываемых следующим способом:

где каждое n и v — число с плавающей точкой в формате: знак, мантисса, «e», знак, экспонента, например «-2.648000e-002». Файл завершается строкой:

Поскольку файл ASCII STL может быть очень большим, существует двоичная версия этого формата. Файл начинается с заголовка из 80 символов (который обычно игнорируется, но не должен начинаться с 'solid', так как с этой последовательности начинается файл ASCII STL). После заголовка идёт 4-байтовое беззнаковое целое число (little-endian), указывающее количество треугольных граней в данном файле. После этого идут данные, характеризующие каждый треугольник, в свою очередь.

Каждый треугольник описывается двенадцатью 32-битными числами с плавающей запятой: 3 числа для нормали и по 3 числа на каждую из трёх вершин для координат X/Y/Z. После идут 2 байта беззнакового 'short', который называется 'attribute byte count'. В обычном файле должно быть равно нулю, так как большинство программ не понимает других значений.[6]

Числа с плавающей запятой представляются в виде числа IEEE с плавающей запятой и имеют обратный порядок байтов, хотя это не указано в документации.