Формат файлов аддитивного производства - Additive manufacturing file format

Формат аддитивного производства
Формат файла аддитивного производства (значок) .png
Значок AMF
Расширение имени файла
.amf
Тип интернет-СМИ
приложение / x-amf
РазработанASTM /ISO
изначальный выпуск2 мая 2011 г. (2011-05-02)
Последний релиз
1.2
СтандартISO / ASTM52915 - 16[1]

Формат файлов аддитивного производства (AMF) является открытый стандарт для описания объектов для производство добавок такие процессы как 3D печать. Официальный ISO /ASTM 52915:2016[1][2] стандарт является XML -основанный формат, позволяющий системы автоматизированного проектирования программное обеспечение для описания формы и состава любых 3D объект, который будет изготовлен на любом 3д принтер. В отличие от своего предшественника Формат STL, AMF имеет встроенную поддержку цвета, материалов, решеток и созвездий.

Структура

AMF может представлять один объект или несколько объектов, расположенных в созвездие. Каждый объект описывается как набор неперекрывающихся томов. Каждый объем описывается треугольной сеткой, которая ссылается на набор точек (вершин). Эти вершины могут быть разделены между объемами, принадлежащими одному объекту. В файле AMF также можно указать материал и цвет каждого объема, а также цвет каждого треугольника в сетке. Файл AMF сжимается с использованием формата сжатия zip, но расширение файла «.amf» сохраняется. Реализация минимального средства чтения AMF должна иметь возможность распаковывать файл AMF и импортировать хотя бы геометрическую информацию (игнорируя кривизну).

Базовая файловая структура

Файл AMF начинается со строки объявления XML, в которой указывается версия и кодировка XML. Остальная часть файла заключена между открытием <amf> элемент и закрытие </amf> элемент. Также можно указать систему единиц (миллиметр, дюйм, фут, метр или микрометр). При отсутствии спецификации единиц измерения принимаются миллиметры.

В скобках AMF находится пять элементов верхнего уровня. Для полнофункционального файла AMF требуется только один элемент объекта.

  1. <object> Элемент объекта определяет объем или объемы материала, каждый из которых связан с идентификатором материала для печати. В файле должен присутствовать хотя бы один элемент объекта. Дополнительные объекты необязательны.
  2. <material> Необязательный элемент материала определяет один или несколько материалов для печати с соответствующим идентификатором материала. Если элемент материала не включен, используется один материал по умолчанию.
  3. <texture> Необязательный элемент текстуры определяет одно или несколько изображений или текстур для отображения цвета или текстуры, каждое из которых имеет связанный идентификатор текстуры.
  4. <constellation> Необязательный элемент созвездия иерархически объединяет объекты и другие созвездия в относительный образец для печати.
  5. <metadata> Необязательный элемент метаданных определяет дополнительную информацию об объекте (ах) и элементах, содержащихся в файле.

Спецификация геометрии

Формат использует Лицо-вершина макет полигональной сетки. Каждый топ-уровень <object> элемент определяет уникальный я бы. В <object> element также может дополнительно указывать материал. Вся геометрия сетки содержится в одном сетка элемент. Сетка определяется с помощью одного <vertices> элемент и один или несколько <volume> элементы. Требуемый <vertices> element перечисляет все вершины, которые используются в этом объекте. Каждой вершине неявно присваивается номер в том порядке, в котором она была объявлена, начиная с нуля. Требуемый дочерний элемент <coordinates> дает положение точки в трехмерном пространстве с помощью <x>, <y> и <z> После информации о вершине хотя бы один <volume> элемент должен быть включен. Каждый том инкапсулирует замкнутый объем объекта. В одном объекте можно указать несколько томов. Тома могут иметь общие вершины на интерфейсах, но не могут иметь перекрывающегося объема. В каждом томе дочерний элемент <triangle> используется для определения треугольников, которые создают мозаику на поверхности объема. Каждый <triangle> элемент перечислит три вершины из набора индексов ранее определенных вершин, заданных в <vertices> элемент. Индексы трех вершин треугольников задаются с помощью <v1>, <v2> и <v3> элементы. Порядок вершин должен соответствовать правилу правой руки, чтобы вершины указывались в порядке против часовой стрелки, если смотреть снаружи. Каждому треугольнику неявно присваивается номер в том порядке, в котором он был объявлен, начиная с нуля.

Спецификация цвета

Цвета вводятся с помощью <color> элемент, указав красный, зеленый, синий и альфа (прозрачность ) каналов в sRGB цветовое пространство как числа в диапазоне от 0 до 1. <color> Элемент может быть вставлен на уровне материала, объекта, объема, вершины или треугольника и имеет приоритет в обратном порядке (цвет треугольника имеет наивысший приоритет). Канал прозрачности указывает, в какой степени смешивается цвет нижнего уровня. По умолчанию все значения установлены на ноль.

Цвет также можно указать, обратившись к формуле, которая может использовать множество функций, зависящих от координат.

Карты текстур

Текстурные карты позволяют назначить цвет или материал поверхности или объему, заимствуя идею Отображение текстуры в графике. В <texture> элемент сначала используется для связывания идентификатор текстуры с конкретными данными текстуры. Данные могут быть представлены как двумерный или трехмерный массив, в зависимости от того, нужно ли сопоставить цвет или материал на поверхности или объему. Данные представлены в виде строки байтов в Base64 кодирование, один байт на пиксель, определяющий уровень градаций серого в диапазоне 0–255.

После присвоения идентификатора текстуры на данные текстуры можно ссылаться в формуле цвета, например, в примере ниже.

Однако обычно скоординированные объекты не используются напрямую, как показано выше, а сначала преобразуются, чтобы преобразовать их из координат объекта в координаты текстуры. Например, текс (1, f1 (x, y, z), f2 (x, y, z), f3 (x, y, z)) куда f1 (), f2 (), f3 () - некоторые функции, обычно линейные.

Спецификация материалов

Материалы вводятся с помощью элемента . Каждому материалу присваивается уникальный идентификатор. Геометрические объемы связаны с материалами путем указания идентификатора материала в элементе .

Смешанные, градуированные, решетчатые и случайные материалы

Новые материалы можно определить как композиции других материалов. Элемент <composite> используется для указания пропорций композиции в виде константы или формулы в зависимости от координат x, y и z. Постоянная пропорция смешивания приведет к получению однородного материала. Композиция, зависящая от координат, может привести к дифференцированному материалу. Более сложные пропорции, зависящие от координат, могут привести к нелинейным градиентам материала, а также к периодической и непериодической субструктуре. Формула пропорции может также относиться к карте текстуры с помощью текс (textureid, x, y, z) функция. Ссылка на идентификатор материала «0» (пусто) зарезервирована и может использоваться для определения пористых структур. Ссылка на рандом (х, у, г) Функция может использоваться для указания псевдослучайных материалов. В рандом (х, у, г) функция возвращает случайное число от 0 до 1, которое является постоянным для этой координаты.

Распечатать созвездия

Несколько объектов можно расположить вместе с помощью <constellation> элемент. Созвездие может определять положение и ориентацию объектов для повышения эффективности упаковки и описания больших массивов идентичных объектов. В <instance> element определяет смещение и вращение, которое должен претерпеть существующий объект, чтобы занять свою позицию в созвездии. Смещение и поворот всегда определяются относительно исходного положения и ориентации, в которых был определен объект. Созвездие может относиться к другому созвездию, если избегаются циклические ссылки.

Если указано несколько созвездий верхнего уровня или если указано несколько объектов без созвездий, каждый из них будет импортирован без данных относительного положения. Затем программа импорта может свободно определять относительное позиционирование.

Метаданные

В <metadata> Элемент может дополнительно использоваться для указания дополнительной информации об определяемых объектах, геометрии и материалах. Например, эта информация может указывать имя, текстовое описание, авторство, информацию об авторских правах и специальные инструкции. В <metadata> Элемент может быть включен на верхнем уровне, чтобы указать атрибуты всего файла, или внутри объектов, томов и материалов, чтобы указать атрибуты, локальные для этой сущности.

Дополнительные изогнутые треугольники

Нашивка с изогнутым треугольником. Нормали в вершинах используются для рекурсивного разделения треугольника на четыре подтреугольника.

Для улучшения геометрической точности формат позволяет изгибать участки треугольника. По умолчанию все треугольники считаются плоскими, и все ребра треугольников считаются прямыми линиями, соединяющими их две вершины. Тем не менее, криволинейные треугольники и криволинейные кромки могут быть дополнительно указаны, чтобы уменьшить количество элементов сетки, необходимых для описания криволинейной поверхности. Было показано, что информация о кривизне снижает ошибку сферической поверхности в 1000 раз по сравнению с поверхностью, описываемой таким же количеством плоских треугольников.[1] Кривизна не должна создавать отклонение от плоскости плоского треугольника, превышающее 50% наибольшего размера треугольника.

Чтобы указать кривизну, вершина может дополнительно содержать дочерний элемент <normal> чтобы указать желаемую нормаль поверхности в месте вершины. Нормаль должна быть единичной длины и направлена ​​наружу. Если указана эта нормаль, все ребра треугольника, пересекающиеся в этой вершине, изогнуты так, что они перпендикулярны этой нормали и находятся в плоскости, определяемой нормалью и исходной прямой кромкой. Когда кривизна поверхности в вершине не определена (например, в острие, углу или ребре), <edge> element может использоваться для задания кривизны одного нелинейного ребра, соединяющего две вершины. Кривизна задается с использованием векторов касательного направления в начале и конце этого ребра. В <edge> элемент будет иметь приоритет в случае конфликта с кривизной, подразумеваемой <normal> элемент.

Если задана кривизна, треугольник рекурсивно разбивается на четыре подтреугольника. Рекурсия должна выполняться на глубину пяти уровней, чтобы исходный изогнутый треугольник в конечном итоге был заменен 1024 плоскими треугольниками. Эти 1024 треугольника генерируются «на лету» и временно сохраняются только в то время, когда слои, пересекающие этот треугольник, обрабатываются для изготовления.

Формулы

В обоих <color> и <composite> элементов, вместо констант можно использовать координатно-зависимые формулы. В этих формулах могут использоваться различные стандартные алгебраические и математические операторы и выражения.

Сжатие

AMF может храниться как обычный текст или как сжатый текст. Если сжато, сжатие происходит в ZIP архив формат. Размер сжатого файла AMF обычно составляет примерно половину размера эквивалентного сжатого двоичного файла STL.[сомнительный ] Сжатие можно выполнить вручную с помощью программного обеспечения для сжатия, такого как WinZip, 7-Zip, или автоматически с помощью программного обеспечения для экспорта во время записи. И сжатые, и несжатые файлы имеют расширение AMF, и программа синтаксического анализа должна определить, сжат файл или нет, и, если да, выполнить распаковку во время импорта.

Соображения по дизайну

Когда подкомитет ASTM Design начал разработку спецификаций AMF[когда? ], опрос заинтересованных сторон[3] показали, что ключевым приоритетом для нового стандарта было требование непатентованный формат. Проблемы с модулями и возможностью сборки возникли из-за проблем с форматом STL. Другими ключевыми требованиями были возможность указывать геометрию с высокой точностью и небольшими размерами файлов, несколько материалов, цвета и микроструктуры. Чтобы добиться успеха в области аддитивного производства, этот формат файла был разработан для решения следующих проблем:

  1. Независимость от технологий: Формат файла должен описывать объект в общем виде, чтобы любая машина могла построить его в меру своих возможностей. Он не зависит от разрешения и толщины слоя и не содержит информации, относящейся к какому-либо производственному процессу или технологии. Это не отменяет включение свойств, поддерживаемых только некоторыми передовыми машинами (например, цвет, несколько материалов и т. Д.), Но они определены таким образом, чтобы избежать исключительности.
  2. Простота: Формат файла должен быть простым для реализации и понимания. Формат должен быть читаемым и редактируемым в простой программе просмотра текста, чтобы способствовать пониманию и принятию. Никакая идентичная информация не должна храниться в нескольких местах.
  3. Масштабируемость: Формат файла должен хорошо масштабироваться с увеличением сложности и размера деталей, а также с улучшением разрешения и точности производственного оборудования. Это включает возможность обрабатывать большие массивы идентичных объектов, сложные повторяющиеся внутренние элементы (например, сетки), гладкие изогнутые поверхности с высоким разрешением печати и несколько компонентов, расположенных в оптимальной упаковке для печати.
  4. Спектакль: Формат файла должен обеспечивать разумную продолжительность (интерактивное время) для операций чтения и записи и разумный размер файла для типичного большого объекта.
  5. Обратная совместимость: Любой существующий файл STL должен быть преобразован непосредственно в действительный файл AMF без потери информации и без дополнительной информации. Файлы AMF также легко конвертируются обратно в STL для использования в устаревших системах, хотя расширенные функции будут потеряны.
  6. Будущая совместимость: Чтобы оставаться полезным в быстро меняющейся отрасли, этот формат файла должен легко расширяться, оставаясь при этом совместимым с более ранними версиями и технологиями. Это позволяет добавлять новые функции по мере того, как того требуют достижения в области технологий, при этом безупречно работая с простой однородной геометрией на самом старом оборудовании.

История

С середины 1980-х гг. STL формат файла был де-факто отраслевой стандарт передачи информации между программами проектирования и оборудованием для аддитивного производства. Формат STL содержал только информацию о поверхностной сетке и не предусматривал представления цвета, текстуры, материала, субструктуры и других свойств изготовленного целевого объекта. По мере того как технология аддитивного производства эволюционировала от производства однородных форм в основном из одного материала к созданию полноцветных геометрических форм из нескольких материалов с функционально дифференцированными материалами и микроструктурами, росла потребность в стандартном формате файла обмена, который мог бы поддерживать эти функции. Вторым фактором, положившим начало разработке стандарта, было улучшение разрешения технологий аддитивного производства. Поскольку точность печати приближалась к разрешению в микронном масштабе, количество треугольников, необходимое для описания гладких изогнутых поверхностей, приводило к неприемлемо большим размерам файлов.

В течение 1990-х и 2000-х годов различные компании использовали ряд проприетарных форматов файлов для поддержки определенных функций своего производственного оборудования, но отсутствие общеотраслевого соглашения препятствовало широкому распространению какого-либо единого формата. В январе 2009 г. ASTM Был создан комитет F42 по аддитивным технологиям производства, а также создан подкомитет по дизайну для разработки нового стандарта. Опрос проводился в конце 2009 г.[3] что привело к более чем годичному обсуждению нового стандарта. Получившаяся первая редакция стандарта AMF стала официальной 2 мая 2011 г.[4]

Во время июльских 2013 г. встреч ASTM F42 и ISO TC261 в Ноттингеме (Великобритания) был одобрен Совместный план разработки стандартов аддитивного производства. С тех пор стандарт AMF находится в ведении ISO и ASTM.

Образец файла

Объект, созданный образцом кода AMF

Ниже приведен простой файл AMF с описанием пирамиды из двух материалов, адаптированный из учебника AMF.[5] (548 байт сжато). Чтобы создать этот файл AMF, скопируйте и вставьте текст под текстом в текстовый редактор или редактор xml и сохраните файл как «pyramid.amf». Затем сожмите файл с помощью ZIP и переименуйте расширение файла от ".zip" до ".zip.amf".

<?xml version="1.0" encoding="utf-8"?> unit ="дюйм" версия ="1.1">  <метаданные type ="имя">Расколотая пирамида</metadata>  <метаданные type ="автор">Джон Смит</metadata>   <объект id ="1">    <mesh>      <vertices>        <vertex><coordinates><x>0</x><y>0</y><z>0</z></coordinates></vertex>        <vertex><coordinates><x>1</x><y>0</y><z>0</z></coordinates></vertex>        <vertex><coordinates><x>0</x><y>1</y><z>0</z></coordinates></vertex>        <vertex><coordinates><x>1</x><y>1</y><z>0</z></coordinates></vertex>        <vertex><coordinates><x>0.5</x><y>0.5</y><z>1</z></coordinates></vertex>      </vertices>      <объем materialid ="2">        <метаданные type ="имя">Жесткая сторона</metadata>         <triangle><v1>2</v1><v2>1</v2><v3>0</v3></triangle>        <triangle><v1>0</v1><v2>1</v2><v3>4</v3></triangle>        <triangle><v1>4</v1><v2>1</v2><v3>2</v3></triangle>        <triangle><v1>0</v1><v2>4</v2><v3>2</v3></triangle>      </volume>      <объем materialid ="3">        <метаданные type ="имя">Мягкая сторона</metadata>         <triangle><v1>2</v1><v2>3</v2><v3>1</v3></triangle>        <triangle><v1>1</v1><v2>3</v2><v3>4</v3></triangle>        <triangle><v1>4</v1><v2>3</v2><v3>2</v3></triangle>        <triangle><v1>4</v1><v2>2</v2><v3>1</v3></triangle>      </volume>    </mesh>  </object>  <материал id ="2">    <метаданные type ="имя">Твердый материал</metadata>    <color><r>0.1</r><g>0.1</g><b>0.1</b></color>  </material>  <материал id ="3">    <метаданные type ="имя">Мягкий материал</metadata>    <color><r>0</r><g>0.9</g><b>0.9</b><a>0.5</a></color>  </material></amf>

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

Примечания

внешняя ссылка

  • AMF Wiki: Репозиторий ресурсов AMF, файлов примеров и исходного кода.