Что такое STL-файл?
STL, сокращение от стереолитографии, представляет собой взаимозаменяемый формат файла, представляющий трехмерную геометрию поверхности. Формат файла находит свое применение в нескольких областях, таких как быстрое прототипирование, 3D-печать и автоматизированное производство. Он представляет поверхность как серию маленьких треугольников, известных как грани, где каждая грань описывается перпендикулярным направлением и тремя точками, представляющими вершины треугольника. Полученные данные используются приложениями для определения поперечного сечения трехмерной формы, которую должен построить изготовитель. В формате файла STL нет информации для представления цвета, текстуры или других общих атрибутов модели CAD.
Краткая история
Разработка формата файла STL восходит к 1987 году. Он был разработан 3D Systems для использования в коммерческих 3D-принтерах. Пересмотренная версия формата файла STL, известная как STL 2.0, была предложена в 2009 году с обновлениями формата файла.
Спецификации формата файла
Файл STL представляет геометрию поверхности с использованием фасетов. Грани определяют поверхность 3D-объекта и однозначно идентифицируются единичной нормалью, которая является линией, перпендикулярной треугольнику длиной 1,0, и тремя вершинами. Всего для каждой грани хранится 12 чисел в качестве нормали, и каждая вершина определяется тремя координатами каждая. Файл StL не содержит информации о масштабе; координаты в произвольных единицах.
Спецификации формата файла STL можно рассмотреть с двух следующих точек зрения.
Ориентация фасетов
Ориентация грани определяется направлением единичной нормали и порядком, в котором перечислены вершины. Ориентация граней задается двумя способами:
- Направление нормали наружу
- Вершины перечислены снаружи против часовой стрелки, подчиняясь правилу правой руки.
Правило вершины к вершине
Согласно этому правилу, каждый треугольник имеет две общие вершины с каждым из соседних треугольников. Таким образом, вершина одного треугольника не может лежать на стороне другого треугольника.
Форматы файлов
STL доступен в ASCII, а также в двоичном представлении для компактного формата файла.
Формат STL ASCII
ASCII-версия формата файла STL записывается в простом ASCII. Однако из-за большого размера формат файла не выбран в качестве предпочтительного формата для использования. Синтаксис файла ASCII STL следующий:
solid name
facet normal ni nj nk
outer loop
vertex v1x v1y v1z
vertex v2x v2y v2z
vertex v3x v3y v3z
endloop
endfacet
endsolid name
Слова, выделенные жирным шрифтом, представляют собой ключевые слова, которые всегда должны быть в нижнем регистре. Символы, выделенные курсивом, представляют собой переменные, которые должны быть заменены значениями, указанными пользователем. Числовые данные в строках facet normal и vertex представляют собой числа с плавающей запятой одинарной точности, например, 1,23456E+789. Координата фасетной нормали может иметь ведущий знак минус; координата вершины не может.
Двоичный формат STL
Двоичный формат использует целочисленное представление IEEE и числовое представление с плавающей запятой. Формат файла представлен следующим образом:
Поле | Информация |
---|---|
Заголовок | 80 символов |
Количество треугольников | 4-байтовое целое число без знака с прямым порядком байтов |
Данные для каждого треугольника | 12 32-битных чисел с плавающей запятой |
Более детальное представление формата файла показано ниже.
UINT8[80] – Header
UINT32 – Number of triangles
foreach triangle
REAL32[3] – Normal vector
REAL32[3] – Vertex 1
REAL32[3] – Vertex 2
REAL32[3] – Vertex 3
UINT16 – Attribute byte count
end