stringtranslate.com

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

STL — это формат файла , родной для программного обеспечения САПР стереолитографии , созданного 3D Systems . [3] [4] [5] Чак Халл , изобретатель стереолитографии и основатель 3D Systems, сообщает, что расширение файла является аббревиатурой от stereolithography , [6] хотя его также называют стандартным языком треугольников или стандартным языком тесселяции . [2]

Файл STL описывает сырую, неструктурированную триангулированную поверхность с помощью единичной нормали и вершин (упорядоченных по правилу правой руки [2] ) треугольников с использованием трехмерной декартовой системы координат . [7] В первоначальной спецификации все координаты STL должны были быть положительными числами, но это ограничение больше не применяется, и сегодня в файлах STL часто встречаются отрицательные координаты. Файлы STL не содержат информации о масштабе, а единицы измерения являются произвольными. [8] Файлы STL описывают только геометрию поверхности трехмерного объекта без какого-либо представления цвета, текстуры или других общих атрибутов модели CAD. Формат STL определяет как ASCII , так и двоичные представления. Двоичные файлы более распространены, поскольку они более компактны. [9]

STL широко используется для быстрого прототипирования , 3D-печати и автоматизированного производства [10] и поддерживается многими другими программными пакетами. [ необходима ссылка ]

История

STL был изобретен Albert Consulting Group для 3D Systems в 1987 году. [11] Формат был разработан для первых коммерческих 3D-принтеров 3D Systems. С момента своего первоначального выпуска формат оставался относительно неизменным в течение 22 лет. [12]

В 2009 году было предложено обновление формата, названное STL 2.0, которое превратилось в формат файла аддитивного производства . [12] [13]

Формат

ASCII

Файл ASCII STL начинается со строки:

солидное  имя

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

фасет нормальный  n i  n j  n k  вершина внешнего цикла  v1 x v1 y v1 z вершина v2 x v2 y v2 z вершина v3 x v3 y v3 z конечная грань цикла            

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

 имя endsolid
Пример ASCII STL сферикона

Структура формата предполагает, что существуют и другие возможности (например, грани с более чем одной loopили петли с более чем тремя вершинами), хотя описание формата файла относится только к мозаикам из треугольников. [2]

Пробелы (пробелы, табуляции, переводы строк) можно использовать в любом месте файла, за исключением цифр или слов. Пробелы между facetи normalи между outerи loopобязательны. [9]

Двоичный

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

Каждый треугольник описывается 12 32-битными числами с плавающей точкой: 3 для нормали и затем 3 для координат X/Y/Z каждой вершины – как в версии STL ASCII. После них следует 2-байтовое («короткое») беззнаковое целое число, которое является «количеством байтов атрибута» – в стандартном формате это должно быть ноль, потому что большинство программ не понимают ничего другого. [9]

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

UINT8[80] – Заголовок - 80 байтUINT32 – Количество треугольников - 4 байта
foreach треугольник - 50 байт: REAL32[3] – Нормальный вектор - 12 байт REAL32[3] – Вершина 1 - 12 байт REAL32[3] – Вершина 2 - 12 байт REAL32[3] – Вершина 3 - 12 байт UINT16 – Количество байтов атрибута – 2 байтаконец

Существует как минимум два нестандартных варианта двоичного формата STL для добавления цветовой информации:

Порядок красный/зеленый/синий в этих двух байтах обратный в этих двух подходах – так что, хотя эти форматы могли бы быть легко совместимы, обратный порядок цветов означает, что они несовместимы – и что еще хуже, универсальный считыватель файлов STL не может автоматически различать их. Также нет способа сделать грани выборочно прозрачными, поскольку нет альфа-значения для каждой грани – хотя в контексте современных машин быстрого прототипирования это не важно.

Нормальная грань

В ASCII и двоичных версиях STL нормаль грани должна быть единичным вектором , направленным наружу от твердого объекта. [16] В большинстве программ это может быть установлено на (0,0,0), и программа автоматически вычисляет нормаль на основе порядка вершин треугольника, используя « правило правой руки », т. е. вершины перечислены в порядке против часовой стрелки снаружи. [2] Некоторые загрузчики STL (например, плагин STL для Art of Illusion) проверяют, что нормаль в файле согласуется с нормалью, которую они вычисляют с помощью правила правой руки, и предупреждают пользователя, если это не так. Другое программное обеспечение может полностью игнорировать нормаль грани и использовать только правило правой руки. Хотя редко указывается нормаль, которая не может быть вычислена с помощью правила правой руки, чтобы быть полностью переносимым, файл должен как предоставлять нормаль грани, так и упорядочивать вершины соответствующим образом. Заметным исключением является SolidWorks , который использует нормаль для эффектов затенения .

Характеристики

Невозможно использовать треугольники для идеального представления криволинейных поверхностей. Чтобы компенсировать это, пользователи часто сохраняют огромные файлы STL, чтобы уменьшить неточность. Однако собственные форматы, связанные со многими приложениями 3D-дизайна, используют математические поверхности для сохранения деталей без потерь в небольших файлах. Например, Rhino 3D [17] и Blender [18] реализуют NURBS для создания настоящих криволинейных поверхностей и сохраняют их в своих соответствующих собственных форматах файлов, но должны генерировать сетку треугольников при экспорте модели в формат STL.

3D-печать

Логотип Википедии

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

Для правильного формирования 3D-объема поверхность, представленная любыми файлами STL, должна быть замкнутой (без отверстий или обратных векторных нормалей) и связанной, где каждое ребро является общим ровно для двух граней и не является самопересекающимся. Поскольку синтаксис STL не обеспечивает этого свойства, его можно игнорировать для приложений, где пустота не имеет значения. Отсутствующая поверхность имеет значение, поскольку программное обеспечение, которое разрезает треугольники, требует, чтобы оно гарантировало, что полученные 2D-полигоны будут замкнутыми. Иногда такое программное обеспечение может быть написано для устранения небольших несоответствий путем перемещения вершин, которые находятся близко друг к другу, так, чтобы они совпадали. Результаты непредсказуемы и могут потребовать исправления с помощью другой программы. Векторным 3D-принтерам требуется чистый файл STL, и печать плохого файла данных либо не заполняет, либо может прекратить печать.

Другие поля

Модель чайника из Юты в формате STL

STL прост и удобен для вывода. Следовательно, многие системы автоматизированного проектирования могут выводить формат файла STL. Хотя вывод прост для создания, информация о связности сетки отбрасывается, поскольку теряется идентичность общих вершин.

Многие автоматизированные системы производства требуют триангулированных моделей. Формат STL не является наиболее эффективным с точки зрения памяти и вычислений методом передачи этих данных, но STL часто используется для импорта триангулированной геометрии в систему CAM . Формат широко доступен, поэтому система CAM может его использовать. Чтобы использовать данные, системе CAM может потребоваться реконструировать связность. Поскольку файлы STL не сохраняют физические размеры единицы, система CAM запрашивает их. Типичные единицы — mmи inch.

STL также можно использовать для обмена данными между системами CAD/CAM и вычислительными средами, такими как Mathematica .

Смотрите также

Ссылки

  1. ^ Нордвик, Аллан (06 марта 2018 г.). "модель/stl". iana.org . ИАНА . Проверено 30 мая 2022 г.
  2. ^ abcde "STL (STereoLithography) File Format Family". Библиотека Конгресса . Получено 2022-05-30 .
  3. ^ Спецификация интерфейса стереолитографии , 3D Systems, Inc., июль 1988 г.
  4. ^ Спецификация интерфейса стереолитографии , 3D Systems, Inc., октябрь 1989 г.
  5. ^ Спецификация файла SLC , 3D Systems, Inc., 1994
  6. ^ Гримм, Тодд (2004). "3. Процесс быстрого прототипирования". Руководство пользователя по быстрому прототипированию . Общество инженеров-производителей . стр. 55. ISBN 0-87263-697-6.
  7. ^ Буркардт, Джон (2014-07-10). "Файлы STLA - файлы стереолитографии ASCII" . Получено 2022-05-30 .
  8. ^ "Формат StL: стандартный формат данных для Fabbers". fabbers.com — Исторический ресурс по 3D-печати . ​​Получено 2022-05-30 .
  9. ^ abc Бернс, Маршалл (1993). "6.5". Автоматизированное изготовление: повышение производительности в производстве . Prentice Hall PTR . ISBN 9780131194625. OCLC  634954895.
  10. ^ Чуа, CK; Леонг, KF; Лим, CS (2003), «Глава 6, Форматы быстрого прототипирования», Быстрое прототипирование: принципы и применение (2-е изд.), World Scientific Publishing Co. , стр. 237, ISBN 981-238-117-1Файл STL (STeroLithography) , как фактический стандарт, использовался во многих, если не во всех, системах быстрого прототипирования.
  11. ^ "Формат файла STL для 3D-печати — простыми словами". All3DP . 2016-11-17 . Получено 2017-05-05 .
  12. ^ ab "STL 2.0 может заменить старый ограниченный формат файла". RapidToday . Получено 2017-05-05 .
  13. ^ Хиллер, Джонатан Д.; Липсон, Ход (2009). STL 2.0: Предложение по универсальному формату файла аддитивного производства для нескольких материалов (PDF) . Симпозиум по изготовлению твердых свободных форм (SFF'09). Остин, Техас, США: Корнельский университет. Архивировано из оригинала (PDF) 11.06.2020 . Получено 05.05.2017 .
  14. Бурк, Пол (октябрь 1999 г.). «Формат STL».
  15. ^ "Формат файла STL (STereoLithography), ASCII". Библиотека Конгресса . Получено 2022-05-30 .
  16. ^ Педди, Джон (2013). История визуальной магии в компьютерах: как красивые изображения создаются в САПР, 3D, VR и AR. Лондон, Англия: Springer. С. 54–57. ISBN 9781447149323. OCLC  849634980.
  17. ^ "Что такое NURBS?". www.rhino3d.com . Получено 2021-06-25 .
  18. ^ "Структура — Руководство Blender". docs.blender.org . Получено 2021-06-25 .
  19. ^ Барнатт, Кристофер (2013). 3D-печать: следующая промышленная революция. Ноттингем, Англия: ExplainingTheFuture.com. стр. 26–71. ISBN 9781484181768. OCLC  854672031.

Внешние ссылки