Format pliku wytwarzania przyrostowego - Additive manufacturing file format

Format wytwarzania przyrostowego
Format pliku wytwarzania przyrostowego (ikona) .png
Ikona AMF
Rozszerzenie nazwy pliku
.amf
Rodzaj mediów internetowych
aplikacja / x-amf
Opracowany przez ASTM / ISO
Pierwsze wydanie 2 maja 2011  ( 2011-05-02 )
Najnowsze wydanie
1.2
Standard ISO / ASTM52915 - 16

Format pliku wytwarzania przyrostowego ( AMF ) jest otwartym standardem opisywania obiektów do procesów wytwarzania przyrostowego , takich jak drukowanie 3D . Oficjalna ISO / ASTM 52915: 2016 norma jest XML Format -na zaprojektowany tak, aby każdy komputerowego wspomagania projektowania oprogramowania, aby opisać kształt i skład każdej 3D obiektu mają być wyprodukowane na dowolnej drukarce 3D za pośrednictwem produkcji wspomaganej komputerowo oprogramowania. W przeciwieństwie do swojego poprzednika formatu STL , AMF ma natywną obsługę kolorów, materiałów, krat i konstelacji.

Struktura

AMF może reprezentować jeden obiekt lub wiele obiektów ułożonych w konstelację. Każdy obiekt jest opisywany jako zestaw nienakładających się objętości. Każda objętość jest opisana trójkątną siatką, która odwołuje się do zbioru punktów (wierzchołków). Te wierzchołki mogą być współużytkowane przez woluminy należące do tego samego obiektu. Plik AMF może również określać materiał i kolor każdej objętości, a także kolor każdego trójkąta w siatce. Plik AMF jest kompresowany przy użyciu formatu kompresji zip, ale zachowane jest rozszerzenie pliku „.amf”. Minimalna implementacja czytnika AMF musi być w stanie zdekompresować plik AMF i zaimportować przynajmniej informacje o geometrii (ignorując krzywiznę).

Podstawowa struktura plików

Plik AMF zaczyna się od wiersza deklaracji XML określającego wersję XML i kodowanie. Pozostała część pliku jest umieszczona między <amf> elementem otwierającym i zamykającym </amf> . Można również określić system jednostek (milimetr, cal, stopy, metr lub mikrometr). W przypadku braku specyfikacji jednostek przyjmuje się milimetry.

W nawiasach AMF znajduje się pięć elementów najwyższego poziomu. Do w pełni funkcjonalnego pliku AMF wymagany jest tylko jeden element obiektu.

  1. <object> Element obiektu definiuje objętość lub objętości materiału, z których każdy jest powiązany z identyfikatorem materiału do drukowania. W pliku musi znajdować się co najmniej jeden element obiektu. Dodatkowe obiekty są opcjonalne.
  2. <material> Opcjonalny element material definiuje jeden lub więcej materiałów do drukowania z powiązanym identyfikatorem materiału. Jeśli nie uwzględniono żadnego elementu materiału, zakłada się jeden materiał domyślny.
  3. <texture> Opcjonalny element tekstury definiuje jeden lub więcej obrazów lub tekstur do mapowania kolorów lub tekstur, z których każdy ma powiązany identyfikator tekstury.
  4. <constellation> Opcjonalny element konstelacji hierarchicznie łączy obiekty i inne konstelacje we względny wzór do wydrukowania.
  5. <metadata> Opcjonalny element metadanych określa dodatkowe informacje o obiektach i elementach zawartych w pliku.

Specyfikacja geometrii

Format wykorzystuje układ siatki wielokątnej powierzchnia -wierzchołek . Każdy <object> element najwyższego poziomu określa unikalny id . W <object> elemencie można również opcjonalnie określić materiał. Cała geometria siatki jest zawarta w jednym mesh elemencie. Siatka jest definiowana za pomocą jednego <vertices> elementu i jednego lub więcej <volume> elementów. Wymagany <vertices> element wyświetla wszystkie wierzchołki, które są używane w tym obiekcie. Każdemu wierzchołkowi jest niejawnie przypisywana liczba w kolejności, w jakiej została zadeklarowana, zaczynając od zera. Wymagana elementem dziecko <coordinates> daje położenie punktu w przestrzeni 3D za pomocą <x> , <y> i <z> elementy. Po informacjach o wierzchołkach <volume> należy uwzględnić co najmniej jeden element. Każda objętość zawiera zamkniętą objętość obiektu. W jednym obiekcie można określić wiele objętości. Woluminy mogą mieć wspólne wierzchołki na interfejsach, ale nie mogą mieć nakładających się objętości. W każdej objętości element potomny <triangle> służy do definiowania trójkątów mozaikujących powierzchnię objętości. Każdy <triangle> element wyświetli listę trzech wierzchołków ze zbioru indeksów wcześniej zdefiniowanych wierzchołków podanych w <vertices> elemencie. Wskaźniki trzech wierzchołkach trójkąta są określone przy użyciu <v1> , <v2> oraz <v3> elementy. Kolejność wierzchołków musi być zgodna z regułą prawej ręki, tak aby wierzchołki były wymienione w kolejności przeciwnej do ruchu wskazówek zegara, patrząc z zewnątrz. Każdemu trójkątowi jest niejawnie przypisywana liczba w kolejności, w jakiej została zadeklarowana, zaczynając od zera.

Specyfikacja kolorów

Kolory wprowadza się za pomocą <color> elementu, określając kanały czerwony, zielony, niebieski i alfa ( przezroczystość ) w przestrzeni kolorów sRGB jako liczby z zakresu od 0 do 1. <color> Element można wstawić na materiale, obiekcie, objętości, wierzchołku, lub poziomy trójkątów i ma priorytet w odwrotnej kolejności (kolor trójkąta ma najwyższy priorytet). Kanał przezroczystości określa, w jakim stopniu jest mieszany kolor z niższego poziomu. Domyślnie wszystkie wartości są ustawione na zero.

Kolor można również określić, odwołując się do wzoru, który może korzystać z różnych funkcji zależnych od współrzędnych.

Mapy tekstur

Mapy tekstur umożliwiają przypisanie koloru lub materiału do powierzchni lub objętości, zapożyczając z idei mapowania tekstur w grafice. <texture> Element jest po raz pierwszy użyty w celu skojarzenia texture-id z konkretnymi danymi tekstur. Dane mogą być reprezentowane jako tablica 2D lub 3D, w zależności od tego, czy kolor lub materiał trzeba odwzorować na powierzchnię, czy na objętość. Dane są reprezentowane jako ciąg bajtów w kodowaniu Base64 , jeden bajt na piksel określający poziom skali szarości w zakresie 0-255.

Po przypisaniu identyfikatora tekstury można odwoływać się do danych tekstury w formule koloru, tak jak w poniższym przykładzie.

Zazwyczaj jednak skoordynowane nie będą używane bezpośrednio, jak pokazano powyżej, ale najpierw zostaną przekształcone, aby przenieść je ze współrzędnych obiektu do współrzędnych tekstury. Na przykład, tex(1,f1(x,y,z),f2(x,y,z),f3(x,y,z)) gdzie f1(), f2(), f3() są pewne funkcje, zwykle liniowe.

Specyfikacja materiałów

Materiały wprowadza się za pomocą elementu <material>. Każdy materiał ma przypisany unikalny identyfikator. Objętości geometryczne są powiązane z materiałami poprzez określenie identyfikatora materiału w elemencie <volume>.

Materiały mieszane, sortowane, kratowe i przypadkowe

Nowe materiały można zdefiniować jako kompozycje innych materiałów. Element <composite> służy do określenia proporcji składu, jako stała lub jako wzór zależny od współrzędnych x, y i z. Stała proporcja mieszania prowadzi do uzyskania jednorodnego materiału. Skład zależny od współrzędnych może prowadzić do stopniowanego materiału. Bardziej złożone proporcje zależne od współrzędnych mogą prowadzić do nieliniowych gradientów materiału oraz okresowej i nieperiodycznej podstruktury. Formuła proporcji może również odnosić się do mapy tekstury za pomocą tex(textureid,x,y,z) funkcji. Odniesienie do identyfikatora materiału „0” (pusta) jest zastrzeżone i może być używane do określenia porowatych struktur. Odniesienie do rand(x,y,z) funkcji może służyć do określenia materiałów pseudolosowych. rand(x,y,z) Zwraca liczby losowej o wartości pomiędzy 0 i 1, który jest trwały przez które współrzędnych.

Drukuj konstelacje

Za pomocą <constellation> elementu można ułożyć wiele obiektów razem . Konstelacja może określać położenie i orientację obiektów, aby zwiększyć wydajność pakowania i opisać duże tablice identycznych obiektów. <instance> Element określa przesunięcie oraz rotację e potrzeb istniejących obiektów, które przechodzą dotrzeć do swojego położenia w konstelacji. Przemieszczenie i obrót są zawsze definiowane w odniesieniu do pierwotnego położenia i orientacji, w której obiekt został zdefiniowany. Konstelacja może odnosić się do innej konstelacji, o ile unika się cyklicznych odniesień.

Jeśli określono wiele konstelacji najwyższego poziomu lub jeśli określono wiele obiektów bez konstelacji, każdy z nich zostanie zaimportowany bez danych dotyczących pozycji względnej. Program importujący może wtedy dowolnie określić położenie względne.

Metadane

<metadata> Element może być ewentualnie stosowane, aby określić dodatkowe informacji o obiektach, geometrię i materiały są zdefiniowane. Na przykład te informacje mogą określać nazwę, opis tekstowy, autorstwo, informacje o prawach autorskich i specjalne instrukcje. <metadata> Element może być zawarte na poziomie górnym, aby określić atrybuty całego pliku lub wewnątrz nich, wielkości i materiałów, aby określić atrybuty lokalne do tego podmiotu.

Opcjonalnie zakrzywione trójkąty

Image
Zakrzywiona trójkątna naszywka. Normalne na wierzchołkach są używane do rekurencyjnego podziału trójkąta na cztery pod-trójkąty

Aby poprawić wierność geometryczną, format umożliwia zakrzywienie łatek trójkątów. Domyślnie zakłada się, że wszystkie trójkąty są płaskie i wszystkie krawędzie trójkątów są liniami prostymi łączącymi ich dwa wierzchołki. Jednak opcjonalnie można określić zakrzywione trójkąty i zakrzywione krawędzie, aby zmniejszyć liczbę elementów siatki wymaganych do opisania zakrzywionej powierzchni. Okazało się, że informacja o krzywizny zmniejsza błąd powierzchni kulistej o współczynnik 1000 w porównaniu z powierzchnią opisaną tą samą liczbą płaskich trójkątów. Krzywizna nie powinna powodować odchylenia od płaszczyzny płaskiego trójkąta przekraczającego 50% największego wymiaru trójkąta.

Aby określić krzywiznę, wierzchołek może opcjonalnie zawierać element potomny, <normal> aby określić żądaną normalną do powierzchni w miejscu wierzchołka. Norma powinna mieć długość jednostkową i być skierowana na zewnątrz. Jeśli ta normalna jest określona, ​​wszystkie krawędzie trójkątów spotykające się w tym wierzchołku są zakrzywione w taki sposób, że są prostopadłe do tej normalnej oraz w płaszczyźnie określonej przez normalną i oryginalną prostą krawędź. Gdy krzywizna powierzchni na wierzchołku jest nieokreślona (na przykład na wierzchołku, narożniku lub krawędzi), <edge> elementu można użyć do określenia krzywizny pojedynczej nieliniowej krawędzi łączącej dwa wierzchołki. Krzywizna jest określana za pomocą wektorów kierunku stycznych na początku i na końcu tej krawędzi. <edge> Element będzie mieć pierwszeństwo w przypadku kolizji z krzywizną domniemanych przez <normal> elementu.

Po określeniu krzywizny trójkąt jest dekomponowany rekurencyjnie na cztery trójkąty podrzędne. Rekurencja musi być wykonana na pięciu poziomach głębokości, tak aby pierwotny zakrzywiony trójkąt został ostatecznie zastąpiony przez 1024 płaskie trójkąty. Te 1024 trójkąty są generowane „w locie” i przechowywane tymczasowo tylko wtedy, gdy warstwy przecinające się z tym trójkątem są przetwarzane do produkcji.

Formuły

W obu elementach <color> i <composite> zamiast stałych można używać formuł zależnych od współrzędnych. Te formuły mogą wykorzystywać różne standardowe operatory i wyrażenia algebraiczne i matematyczne.

Kompresja

AMF można przechowywać jako zwykły tekst lub jako tekst skompresowany. Po skompresowaniu kompresja jest w formacie archiwum ZIP . Skompresowany plik AMF jest zwykle o połowę mniejszy niż równoważny skompresowany binarny plik STL. Kompresję można przeprowadzić ręcznie za pomocą oprogramowania do kompresji lub automatycznie przez oprogramowanie eksportujące podczas zapisu. Zarówno skompresowane, jak i nieskompresowane pliki mają .amf rozszerzenie i to program analizujący jest odpowiedzialny za określenie, czy plik jest skompresowany, a jeśli tak, za wykonanie dekompresji podczas importu.

Rozważania projektowe

Kiedy podkomitet ds. Projektowania ASTM rozpoczął opracowywanie specyfikacji AMF, ankieta przeprowadzona wśród interesariuszy wykazała, że ​​kluczowym priorytetem dla nowej normy był wymóg dotyczący niezastrzeżonego formatu. Jednostki i problemy z możliwością budowania były problemem związanym z problemami z formatem STL. Innymi kluczowymi wymaganiami była możliwość określenia geometrii z dużą wiernością i małymi rozmiarami plików, wieloma materiałami, kolorami i mikrostrukturami. Aby odnieść sukces w dziedzinie wytwarzania przyrostowego, ten format pliku został zaprojektowany w celu rozwiązania następujących problemów

  1. Niezależność technologiczna : format pliku musi opisywać obiekt w ogólny sposób, tak aby każda maszyna mogła go zbudować najlepiej, jak to możliwe. Jest niezależny od rozdzielczości i grubości warstwy i nie zawiera informacji specyficznych dla żadnego procesu lub techniki produkcyjnej. Nie wyklucza to uwzględnienia właściwości obsługiwanych tylko przez niektóre zaawansowane maszyny (na przykład kolor, wiele materiałów itp.), Ale są one zdefiniowane w taki sposób, aby uniknąć wyłączności.
  2. Prostota : format pliku musi być łatwy do wdrożenia i zrozumienia. Format powinien być czytelny i edytowalny w prostej przeglądarce tekstu, aby zachęcić do zrozumienia i przyjęcia. Żadne identyczne informacje nie powinny być przechowywane w wielu miejscach.
  3. Skalowalność : format pliku powinien dobrze skalować się wraz ze wzrostem złożoności i rozmiaru części oraz poprawiającą się rozdzielczością i dokładnością sprzętu produkcyjnego. Obejmuje to możliwość obsługi dużych zestawów identycznych obiektów, złożonych, powtarzających się cech wewnętrznych (np. Siatek), gładkich zakrzywionych powierzchni z wysoką rozdzielczością drukowania oraz wielu elementów ułożonych w optymalnym opakowaniu do drukowania.
  4. Wydajność : format pliku musi zapewniać rozsądny czas trwania (czas interaktywny) operacji odczytu i zapisu oraz rozsądne rozmiary plików dla typowego dużego obiektu.
  5. Kompatybilność wsteczna : każdy istniejący plik STL powinien być konwertowany bezpośrednio na prawidłowy plik AMF bez utraty informacji i bez wymagania dodatkowych informacji. Pliki AMF można również łatwo przekonwertować z powrotem na STL do użytku w starszych systemach, chociaż zaawansowane funkcje zostaną utracone.
  6. Przyszła kompatybilność : aby zachować użyteczność w szybko zmieniającej się branży, ten format pliku musi być łatwo rozszerzalny, zachowując jednocześnie zgodność z wcześniejszymi wersjami i technologiami. Pozwala to na dodawanie nowych funkcji w miarę postępu technicznego, a jednocześnie działa bezbłędnie w przypadku prostych, jednorodnych geometrii na najstarszym sprzęcie.

Historia

Od połowy lat osiemdziesiątych format pliku STL jest de facto standardem branżowym do przesyłania informacji między programami projektowymi a urządzeniami do wytwarzania przyrostowego. Format STL zawierał tylko informacje o siatce powierzchniowej i nie zawierał przepisów dotyczących reprezentowania koloru, tekstury, materiału, podkonstrukcji i innych właściwości wytworzonego obiektu docelowego. Ponieważ technologia wytwarzania przyrostowego ewoluowała od wytwarzania głównie jednomateriałowych, jednorodnych kształtów do wytwarzania geometrii wielomateriałowych w pełnym kolorze z funkcjonalnie stopniowanymi materiałami i mikrostrukturami, rosło zapotrzebowanie na standardowy format plików wymiany, który mógłby obsługiwać te cechy. Drugim czynnikiem, który zapoczątkował rozwój normy, była poprawa rozdzielczości technologii wytwarzania przyrostowego. Gdy wierność procesów drukowania zbliżała się do rozdzielczości w skali mikronów, liczba trójkątów wymaganych do opisania gładkich zakrzywionych powierzchni skutkowała niedopuszczalnie dużymi rozmiarami plików.

W latach dziewięćdziesiątych i dwudziestych XX wieku wiele zastrzeżonych formatów plików było używanych przez różne firmy do obsługi określonych funkcji ich urządzeń produkcyjnych, ale brak porozumienia branżowego uniemożliwił powszechne przyjęcie jakiegokolwiek pojedynczego formatu. W 2006 roku Jonathan D. Hiller i Hod Lipson zaprezentowali wstępną wersję AMF nazwaną „STL 2.0”. W styczniu 2009 r. Utworzono nowy komitet ASTM F42 ds. Technologii wytwarzania przyrostowego oraz podkomitet ds. Projektowania w celu opracowania nowego standardu. Ankieta została przeprowadzona pod koniec 2009 roku i przez ponad rok obradowała nad nowym standardem. Wynikająca z tego pierwsza rewizja standardu AMF stała się oficjalna 2 maja 2011 r.

Podczas spotkań F42 ASTM i TC261 w Nottingham (Wielka Brytania) w lipcu 2013 r. Zatwierdzono wspólny plan rozwoju standardów wytwarzania przyrostowego. Od tego czasu standard AMF jest zarządzany wspólnie przez ISO i ASTM.

Przykładowy plik

Image
Obiekt utworzony przez przykładowy kod AMF

Poniżej znajduje się prosty plik AMF opisujący piramidę wykonaną z dwóch materiałów, zaadaptowaną z samouczka AMF (skompresowane 548 bajtów). Aby utworzyć ten plik AMF, skopiuj i wklej tekst poniżej tekstu do edytora tekstu lub edytora xml i zapisz plik jako „pyramid.amf”. Następnie skompresuj plik za pomocą ZIP i zmień rozszerzenie pliku z „.zip” na „.zip.amf”.

<?xml version="1.0" encoding="utf-8"?>
<amf unit="inch" version="1.1">
  <metadata type="name">Split Pyramid</metadata>
  <metadata type="author">John Smith</metadata> 
  <object 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>
      <volume materialid="2">
        <metadata type="name">Hard side</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>
      <volume materialid="3">
        <metadata type="name">Soft side</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>
  <material id="2">
    <metadata type="name">Hard material</metadata>
    <color><r>0.1</r><g>0.1</g><b>0.1</b></color>
  </material>
  <material id="3">
    <metadata type="name">Soft material</metadata>
    <color><r>0</r><g>0.9</g><b>0.9</b><a>0.5</a></color>
  </material>
</amf>

Zobacz też

Uwagi

Zewnętrzne linki