STL (формат файла)
![]() Представление тора в САПР ( показано в виде двух концентрических красных кругов) и аппроксимация STL той же формы (состоящая из треугольных плоскостей) | |
Расширение имени файла |
.stl |
---|---|
Тип интернет-СМИ | |
Разработано | 3D-системы |
Первоначальный выпуск | 1987 |
Тип формата | Стереолитография |
STL — это формат файла , используемый в стереолитографии программном обеспечении САПР для , созданном 3D Systems . [3] [4] [5] Чак Халл , изобретатель стереолитографии и основатель 3D Systems, сообщает, что расширение файла является аббревиатурой от стереолитографии . [6]
Файл STL описывает необработанную, неструктурированную триангулированную поверхность с помощью единичной нормали и вершин (упорядоченных по правилу правой руки). [2] ) треугольников с использованием трехмерной декартовой системы координат . [7] В исходной спецификации все координаты STL должны были быть положительными числами, но это ограничение больше не применяется, и сегодня в файлах STL часто встречаются отрицательные координаты. Файлы STL не содержат информации о масштабе, а единицы измерения произвольны. [8] Файлы STL описывают только геометрию поверхности трехмерного объекта без какого-либо представления цвета, текстуры или других общих атрибутов модели САПР. Формат STL определяет как ASCII , так и двоичные представления. Бинарные файлы более распространены, поскольку они более компактны. [9]
STL широко используется для быстрого прототипирования , 3D-печати и автоматизированного производства . [10] и поддерживается многими другими программными пакетами. [ нужна ссылка ]
История [ править ]
STL был изобретен Albert Consulting Group для 3D-систем в 1987 году. [11] Формат был разработан для первых коммерческих 3D-принтеров 3D Systems. С момента своего первого выпуска формат оставался относительно неизменным в течение 22 лет. [12]
В 2009 году было предложено обновление формата, получившее название STL 2.0, которое превратилось в формат файлов аддитивного производства . [12] [13]
Формат [ править ]
ASCII [ править ]
Файл ASCII STL начинается со строки:
solid name
где имя — необязательная строка (хотя, если имя опущено, после запятой все равно должен быть пробел для совместимости с некоторым программным обеспечением). Оставшаяся часть строки игнорируется и иногда используется для хранения метаданных (например, имени файла, автора, даты модификации и т. д.). [14] Файл продолжается любым количеством треугольников, каждый из которых представлен следующим образом: [15]
facet normal ni nj nk outer loop vertex v1x v1y v1z vertex v2x v2y v2z vertex v3x v3y v3z endloop endfacet
где каждый n или v представляет собой число с плавающей запятой в знаке - мантисса - e
- знак - формат экспоненты , например, 2.648000e-002
. Файл завершается:
endsolid name

Структура формата предполагает, что существуют и другие возможности (например, фасеты с более чем одним loop
или петли с более чем тремя вершинами). Однако на практике все грани представляют собой простые треугольники. [ нужна ссылка ]
Пробелы (пробелы, табуляции, новые строки) можно использовать в любом месте файла, кроме цифр и слов. Пространства между facet
и normal
и между outer
и loop
необходимы. [9]
Двоичный [ править ]
Поскольку файлы ASCII STL могут быть очень большими, существует двоичная версия STL. Двоичный файл STL имеет заголовок из 80 символов, который обычно игнорируется, но никогда не должен начинаться с ASCII-представления строки. solid
, поскольку это может привести к тому, что некоторые программы перепутают его с файлом ASCII STL. После заголовка следует 4-байтовое целое число без знака с прямым порядком байтов, указывающее количество треугольных фасетов в файле. Далее следуют данные, описывающие каждый треугольник по очереди. Файл просто заканчивается после последнего треугольника.
Каждый треугольник описывается 12 32-битными числами с плавающей запятой: 3 для нормали, а затем 3 для координат X/Y/Z каждой вершины – так же, как и в ASCII-версии STL. После этого следует 2-байтовое («короткое») целое число без знака, которое представляет собой «количество байтов атрибута» - в стандартном формате оно должно быть равно нулю, поскольку большая часть программного обеспечения больше ничего не понимает. [9]
Числа с плавающей запятой представлены как числа с плавающей запятой IEEE и предполагаются прямым порядком байтов , хотя это не указано в документации.
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
Существует как минимум два нестандартных варианта двоичного формата STL для добавления информации о цвете:
- Пакеты программного обеспечения VisCAM и SolidView используют два байта «счетчик байтов атрибута» в конце каждого треугольника для хранения 15-битного цвета RGB :
- биты 0–4 — уровень интенсивности синего цвета (0–31),
- биты 5–9 — уровень интенсивности зеленого цвета (0–31),
- биты 10–14 — уровень интенсивности красного цвета (0–31),
- бит 15 равен 1, если цвет допустим, или 0, если цвет недействителен (как в обычных файлах STL).
- Программное обеспечение Materialize Magics использует 80-байтовый заголовок в верхней части файла для представления общего цвета всей детали. Если используется цвет, то где-то в заголовке должна быть ASCII. строка
COLOR=
за которыми следуют четыре байта, представляющие красный, зеленый, синий и альфа-канал (прозрачность) в диапазоне 0–255. Это цвет всего объекта, если он не переопределен на каждом фасете. Магия также распознает описание материала; более детальная характеристика поверхности. Сразу послеCOLOR=RGBA
спецификация должна быть другой строкой ASCII,MATERIAL=
за ним следуют три цвета (3×4 байта): первый — цвет диффузного отражения , второй — цвет зеркального блика и третий — рассеянного света . Настройки материала предпочтительнее цвета. Цвет каждого фасета представлен в двух байтах «числа байтов атрибута» следующим образом:- биты 0–4 — уровень интенсивности красного цвета (0–31),
- биты 5–9 — уровень интенсивности зеленого цвета (0–31),
- биты 10–14 — уровень интенсивности синего цвета (0–31),
- бит 15 равен 0, если этот фасет имеет свой собственный уникальный цвет, или 1, если должен использоваться цвет каждого объекта.
В этих двух подходах порядок красного/зеленого/синего в этих двух байтах обратный – поэтому, хотя эти форматы легко могли быть совместимыми, изменение порядка цветов означает, что это не так – и, что еще хуже, общий файл STL читатель не может автоматически различать их. Также невозможно обеспечить выборочную прозрачность фасетов, поскольку для каждого фасета не существует альфа-значения – хотя в контексте современных механизмов быстрого прототипирования это не важно.
Фасет нормальный [ править ]
Как в ASCII, так и в двоичной версии STL нормаль грани должна быть единичным вектором, направленным наружу от твердого объекта. [16] В большинстве программ для этого параметра может быть установлено значение (0,0,0), и программа автоматически рассчитает нормаль на основе порядка вершин треугольника, используя « правило правой руки », т. е. вершины перечислены в обратном порядке. -мудрый приказ извне. [ нужна ссылка ] Некоторые загрузчики STL (например, плагин STL для Art of Illusion) проверяют соответствие нормали в файле нормали, которую они рассчитывают с использованием правила правой руки, и предупреждают пользователя, если это не так. Другое программное обеспечение может полностью игнорировать фасетную нормаль и использовать только правило правой руки. Хотя редко можно указать нормаль, которую нельзя вычислить с помощью правила правой руки, чтобы быть полностью переносимым, файл должен как обеспечивать фасетную нормаль, так и соответствующим образом упорядочивать вершины. Заметным исключением является SolidWorks , который использует нормали для эффектов затенения .
Характеристики [ править ]
Невозможно использовать треугольники для идеального изображения изогнутых поверхностей. Чтобы компенсировать это, пользователи часто сохраняют огромные файлы STL, чтобы уменьшить неточность. Однако собственные форматы, связанные со многими приложениями для 3D-проектирования, используют математические поверхности для сохранения деталей без потерь в небольших файлах. Например, Рино 3D. [17] и блендер [18] реализовать NURBS для создания истинно изогнутых поверхностей и сохранять их в соответствующих собственных форматах файлов, но при экспорте модели в формат STL необходимо создавать треугольную сетку.
3D printing [ edit ]

3D-принтеры создают объекты путем затвердевания ( SLA , SLS , SHS , DMLS , EBM , DLP ) или печати (3DP, MJM, FDM , FFF , PJP, MJS). [19] по одному слою за раз. Для этого требуется серия замкнутых 2D-контуров (горизонтальных слоев), которые заполняются затвердевшим материалом по мере слияния слоев. Естественным форматом файла для такой машины будет серия замкнутых многоугольников (слоев или фрагментов), соответствующих различным значениям Z. Однако, поскольку можно варьировать толщину слоев для более быстрого, хотя и менее точного построения, было проще определить строящуюся модель как замкнутый многогранник , который можно разрезать на необходимые горизонтальные уровни. Неправильная нормаль фасета может повлиять на способ нарезки и заполнения файла. Можно выбрать срез с другим значением Z, чтобы пропустить неверный фасет, или файл необходимо вернуть в программу САПР для внесения исправлений, а затем повторно создать файл STL.
Чтобы правильно сформировать трехмерный объем, поверхность, представленная любыми файлами STL, должна быть закрытой (без отверстий или обращенной векторной нормали) и соединенной, где каждое ребро является частью ровно двух треугольников и не является самопересекающимся. Поскольку синтаксис STL не обеспечивает соблюдение этого свойства, его можно игнорировать для приложений, где void не имеет значения. Отсутствующая поверхность имеет значение только в том случае, если программное обеспечение, разрезающее треугольники, требует ее для обеспечения замкнутости полученных 2D-полигонов. Иногда такое программное обеспечение можно написать для устранения небольших несоответствий путем перемещения вершин, находящихся близко друг к другу, так, чтобы они совпадали. Результаты непредсказуемы и могут потребовать ремонта с помощью другой программы. Для векторных 3D-принтеров требуется чистый файл STL, а печать файла с неверными данными либо не заполнится, либо может привести к остановке печати.
Другие поля [ править ]

STL прост и удобен для вывода. Следовательно, многие системы автоматизированного проектирования могут выводить файлы в формате STL. Хотя выходные данные легко получить, информация о связности сетки отбрасывается, поскольку теряется идентичность общих вершин.
Многие автоматизированные производственные системы требуют триангулированных моделей. Формат STL не является наиболее эффективным с точки зрения памяти и вычислений методом передачи этих данных, но STL часто используется для импорта триангулированной геометрии в систему CAM . Формат общедоступен, поэтому система CAM будет его использовать. Чтобы использовать данные, системе CAM может потребоваться восстановить соединение. Поскольку файлы STL не сохраняют физические размеры устройства, система CAM запросит это. Типичные единицы: mm
и inch
.
STL также можно использовать для обмена данными между системами CAD/CAM и вычислительными средами, такими как Mathematica .
См. также [ править ]
- 3D Manufacturing Format — стандарт формата файлов с открытым исходным кодом.
- Формат файла аддитивного производства — открытый стандарт для описания объектов для процессов аддитивного производства, таких как 3D-печать.
- PLY (формат файла) – формат файла, предназначенный для хранения трехмерных данных от 3D-сканеров.
- Воксель — элемент, представляющий значение в сетке в трехмерном пространстве.
- Файл Wavefront .obj — формат файла определения геометрии.
- X3D – формат файлов на основе XML для компьютерной 3D-графики.
Ссылки [ править ]
- ^ Нордвик, Аллан (06 марта 2018 г.). "модель/stl" . iana.org . ИАНА . Проверено 30 мая 2022 г.
- ↑ Перейти обратно: Перейти обратно: а б «Семейство форматов файлов STL (STereoLithography)» . Библиотека Конгресса . Проверено 30 мая 2022 г.
- ^ Спецификация интерфейса стереолитографии , 3D Systems, Inc., июль 1988 г.
- ^ Спецификация интерфейса стереолитографии , 3D Systems, Inc., октябрь 1989 г.
- ^ Спецификация файла SLC , 3D Systems, Inc., 1994 г.
- ^ Гримм, Тодд (2004). «3. Процесс быстрого прототипирования» . Руководство пользователя по быстрому прототипированию . Общество инженеров-технологов . п. 55. ИСБН 0-87263-697-6 .
- ^ Буркардт, Джон (10 июля 2014 г.). «Файлы STLA — файлы стереолитографии ASCII» . Проверено 30 мая 2022 г.
- ^ «Формат StL: стандартный формат данных для фабберов» . fabbers.com — Исторический ресурс по 3D-печати . Проверено 30 мая 2022 г.
- ↑ Перейти обратно: Перейти обратно: а б с Бернс, Маршалл (1993). «6,5». Автоматизированное производство: повышение производительности производства . Прентис Холл PTR . ISBN 9780131194625 . OCLC 634954895 .
- ^ Чуа, СК; Леонг, К.Ф.; Лим, К.С. (2003), «Глава 6, Форматы быстрого прототипирования», Быстрое прототипирование: принципы и приложения (2-е изд.), World Scientific Publishing Co. , стр. 237, ISBN 981-238-117-1 ,
Файл STL (STeroLithography), как фактический стандарт, использовался во многих, если не во всех, системах быстрого прототипирования.
- ^ «Формат файла STL для 3D-печати – простыми словами» . All3DP . 17.11.2016 . Проверено 5 мая 2017 г.
- ↑ Перейти обратно: Перейти обратно: а б «STL 2.0 может заменить старый ограниченный формат файлов» . РапидСегодня . Проверено 5 мая 2017 г.
- ^ Хиллер, Джонатан Д.; Липсон, Ход (2009). STL 2.0: предложение по универсальному формату файлов аддитивного производства из нескольких материалов (PDF) . Симпозиум по изготовлению твердых тел произвольной формы (SFF'09). Остин, Техас, США: Корнельский университет. Архивировано из оригинала (PDF) 11 июня 2020 г. Проверено 5 мая 2017 г.
- ^ Бурк, Пол (октябрь 1999 г.). «Формат STL» .
- ^ «Формат файла STL (STereoLithography), ASCII» . Библиотека Конгресса . Проверено 30 мая 2022 г.
- ^ Педди, Джон (2013). История визуальной магии в компьютерах: как красивые изображения создаются в CAD, 3D, VR и AR . Лондон, Англия: Спрингер. стр. 54–57. ISBN 9781447149323 . OCLC 849634980 .
- ^ «Что такое НУРБС?» . www.rhino3d.com . Проверено 25 июня 2021 г.
- ^ «Структура — Руководство по Блендеру» . docs.blender.org . Проверено 25 июня 2021 г.
- ^ Барнатт, Кристофер (2013). 3D-печать: следующая промышленная революция . Ноттингем, Англия: объяснение TheFuture.com. стр. 26–71. ISBN 9781484181768 . ОСЛК 854672031 .