Zum Inhalt springen

Kornofolia und Benutzer:Tristram/Additive manufacturing file format: Unterschied zwischen den Seiten

aus Wikipedia, der freien Enzyklopädie
(Unterschied zwischen Seiten)
Inhalt gelöscht Inhalt hinzugefügt
KKeine Bearbeitungszusammenfassung
 
case fix
 
Zeile 1: Zeile 1:
{{For|other uses of AMF|AMF (disambiguation)}}
{{coord|41|9|N|26|18|E|type:city_region:GR|display=title}}
{{Multiple issues|
{{Κωμόπολη χωριό
{{technical|date=November 2011}}
| όνομα = Κορνοφωλιά
{{one source|date=June 2011}}
| περιφέρεια =
}}
| νομός = [[νομός Έβρου|Έβρου]]
| δήμος = [[δήμος Σουφλίου|Σουφλίου]]
| πληθυσμός = 579
| έτος απογραφής = 2001
| υψόμετρο =
| έκταση =
| ιστοσελίδα =
| πρώην όνομα =
}}
Η '''Κορνοφωλιά''' είναι οικισμός του [[δήμος Σουφλίου|δήμου Σουφλίου]] του [[νομός Έβρου|νομού Έβρου]].


{{Infobox file format
==Δημοτικό διαμέρισμα Κορνοφωλιάς==
| name = Additive manufacturing format
Η Κορνοφωλιά αποτελούσε ξεχωριστή κοινότητα έως το [[1998]]. Έκτοτε αποτελεί την έδρα του δημοτικού διαμερίσματος Κορνοφωλιάς, στο οποίο περιλαμβάνεται και η [[Ιερά μονή Κορνοφωλιάς|Μονή της Παναγιάς Πορταϊτισσας]].
| logo =
| icon = [[Image:AMF icon.png|64px]]
| iconcaption = AMF icon
| screenshot =
| caption =
| extension = .amf
| mime = application/x-amf
| typecode =
| uniform type =
| magic =
| owner = [[ASTM]]/[[ISO]]
| released = {{Start date|2011|05|02}}
| latest release version = 1.2
| latest release date = <!-- {{Start date and age|YYYY|mm|dd|df=yes}} -->
| genre =
| container for =
| contained by =
| extended from =
| extended to =
| standard = [http://www.astm.org/Standards/ISOASTM52915.htm ISO / ASTM52915 - 16]<ref name="ASTM F2915" />
| free =
| url =
}}


'''Additive manufacturing file format''' ('''AMF''') is an [[open standard]] for describing objects for [[additive manufacturing]] processes such as [[3D printing]]. The official [[ISO]]/[[ASTM]] 52915:2016<ref name="ASTM F2915" /><ref name="ISO 52915" /> [[International standard|standard]] is an [[XML]]-based format designed to allow any [[computer-aided design]] software to describe the shape and composition of any [[Three-dimensional space|3D]] object to be fabricated on any [[3D printer]]. Unlike its predecessor [[STL (file format)|STL format]], AMF has native support for color, materials, lattices, and constellations.
==Πληθυσμός==
Με βάση την απογραφή του 1991 ο συνολικός πληθυσμός οικισμού και μονής ήταν 699 κάτοικοι. Στην επόμενη απογραφή του 2001 ο πληθυσμός του οικισμού ήταν 566 κάτοικοι, ενώ συνολικά το δημοτικό διαμέρισμα είχε 579 κατοίκους.


==Ιστορία==
==Structure==
An AMF can represent one object, or multiple objects arranged in a constellation. Each object is described as a set of non-overlapping volumes. Each volume is described by a triangular mesh that references a set of points (vertices). These vertices can be shared among volumes belonging to the same object. An AMF file can also specify the material and the color of each volume, as well as the color of each triangle in the mesh. The AMF file is compressed using the zip compression format, but the ".amf" file extension is retained. A minimal AMF reader implementation must be able to decompress an AMF file and import at least geometry information (ignoring curvature).
Η κοινότητα Κορνοφωλιάς συστάθηκε με το Π.Δ 30-7-1924 (ΦΕΚ Α177/1924) και απαρτιζόταν από τρεις οικισμούς, την Κορνοφωλιά που ήταν η έδρα της κοινότητας, τη Λύρα και τη Λυκόφη που αποσπάστηκαν με Π.Δ., η μεν πρώτη το 1927 και η δεύτερη το 1946.


===Basic file structure===
Η πρώτη θέση του οικισμού ήταν , στη συμβολή των δύο [[ποτάμι|ποταμών]] - [[χείμαρρος|χειμάρρων]] Μαγγάζι ή Διαβολόρεμα και Καμηλοπόταμου , από αρχαιοτάτων χρόνων
The AMF file begins with the XML declaration line specifying the XML version and encoding. The remainder of the file is enclosed between an opening {{tag|amf|o}} element and a closing {{tag|amf|c}} element. The unit system can also be specified (millimeter, inch, feet, meter or micrometer). In absence of a units specification, millimeters are assumed.


Within the AMF brackets, there are five top level elements. Only a single object element is required for a fully functional AMF file.
== Ονομασία ==
Η αρχαία ονομασία του οικισμού δεν είναι γνωστή.<ref name="Γουρίδης">Αθανάσιος Ι. Γουρίδης, ''Από την αρχαία Ζειρήνια στην Κορνοφωλιά του σήμερα''</ref> Στα [[Ρωμαϊκή αυτοκρατορία|ρωμαϊκά χρόνια]] ονομαζόταν Ζειρηνία ή Ζεβρών (Zervae =Ζέρβαι) ή Zurbae.<ref name="Γουρίδης"/>. Στα χρόνια του [[Ιουστινιανός Α'|Ιουσστινιανού]] ονομαζόταν Ζδεβρήν,<ref name="Γουρίδης">Αθανάσιος Ι. Γουρίδης, ''Από την αρχαία Ζειρήνια στην Κορνοφωλιά του σήμερα'', Εκδόσεις Μ. Γκιούρδας, Αθήνα 2006.</ref> ενώ στα μεταβυζαντινά χρόνια, Οπάν ή Παν εξ’ ού και Παντερι=Παν + ντερε = ποταμάκι του Οπάν ή Παν,<ref name="Γουρίδης"/>
Κλεισούρα και Μαυροπήγαδο ή Μαυροπήγαδο της Κλεισούρας. Ο ποταμός Μαγγάζι ή
Διαβολόρεμα , λέγονταν και Μαυροπόταμος και Καραμπουνάρ Σού (Kara + bunar =
Μαύρο + πηγάδι).<ref name="Γουρίδης"/><ref name="Χριστακούδης">Από τις σημειώσεις του Απόστολου Χρ.Χριστακούδη</ref> Το [[1500]] μ.Χ. Τα ονόματα Καρά Γιουσούφ , Σεκμπάν Βιρανί , Καρά Μπουνάρ ίσως και Οπάν προσδιορίζουν τον ίδιο οικισμό.<ref name="Γουρίδης"/>- Το 1637 μ.Χ. το όνομα που αναφέρεται είναι Karabunar Derbent = Μαυροπήγαδο της Κλεισούρας. Ίσως αυτά τα χρόνια να έγινε η μετακίνηση των κατοίκων του οικισμού στη σημερινή του θέση σε ένα άλλο Μαυροπήγαδο.<ref name="Γουρίδης"/><ref name="Χριστακούδης"/> Από το 1700 μ.Χ. ο οικισμός στη σημερινή του θέση αναφέρεται ως Κουρουνοφωλιά ή Κορνοφωλιά. Η ονομασία αυτή προέρχεται από τις λέξεις [[κουρούνα]] και [[φωλιά]].


# '''{{tag|object|o}}''' The object element defines a volume or volumes of material, each of which are associated with a material ID for printing. At least one object element must be present in the file. Additional objects are optional.
== Αρχαιολογικά ευρήματα==
# '''{{tag|material|o}}''' The optional material element defines one or more materials for printing with an associated material ID. If no material element is included, a single default material is assumed.
Στο χωριό έχουν βρεθεί κατά καιρούς διάφορα [[αρχαιολογία|αρχαιολογικά ]] ευρήματα. Στο [[Εθνικό Αρχαιολογικό Μουσείο]] βρίσκεται θραύσμα ανάγλυφης αναθηματικής στήλης, που εικονίζει χέρι που κρατά [[θύρσος|θύρσο]] και στο επάνω μέρος αναγράφεται η επιγραφή «ΚΥΡΙΩ ΕΒΡΩ». Ευρήματα από τη ρωμαϊκή εποχή, όπως [[άγαλμα|αγάλματα]] και [[νόμισμα|νομίσματα]], βρίσκονται στο Αρχαιολογικό Μουσείο [[Κομοτηνή|Κομοτηνής]].
# '''{{tag|texture|o}}''' The optional texture element defines one or more images or textures for color or texture mapping, each with an associated texture ID.
# '''{{tag|constellation|o}}''' The optional constellation element hierarchically combines objects and other constellations into a relative pattern for printing.
# '''{{tag|metadata|o}}''' The optional metadata element specifies additional information about the object(s) and elements contained in the file.


===Geometry specification===
==Παραπομπές==
The format uses a [[Polygon mesh#Face-vertex meshes|Face-vertex]] polygon mesh layout. Each top-level {{tag|object|o}} element specifies a unique <tt>id</tt>. The {{tag|object|o}} element can also optionally specify a material. The entire mesh geometry is contained in a single <tt>mesh</tt> element. The mesh is defined using one {{tag|vertices|o}} element and one or more {{tag|volume|o}} elements. The required {{tag|vertices|o}} element lists all vertices that are used in this object. Each vertex is implicitly assigned a number in the order in which it was declared, starting at zero. The required child element {{tag|coordinates|o}} gives the position of the point in 3D space using the {{tag|x|o}}, {{tag|y|o}} and {{tag|z|o}} elements.
<references />
After the vertex information, at least one {{tag|volume|o}} element must be included. Each volume encapsulates a closed volume of the object, Multiple volumes can be specified in a single object. Volumes may share vertices at interfaces but may not have any overlapping volume.
Within each volume, the child element {{tag|triangle|o}} is used to define triangles that tessellate the surface of the volume. Each {{tag|triangle|o}} element will list three vertices from the set of indices of the previously defined vertices given in the {{tag|vertices|o}} element. The indices of the three vertices of the triangles are specified using the {{tag|v1|o}}, {{tag|v2|o}} and {{tag|v3|o}} elements. The order of the vertices must be according to the right-hand rule, such that vertices are listed in counter-clockwise order as viewed from the outside. Each triangle is implicitly assigned a number in the order in which it was declared, starting at zero.


===Color specification===
== Εξωτερικοί σύνδεσμοι ==
Colors are introduced using the {{tag|color|o}} element by specifying the red, green, blue and alpha ([[RGBA color space|transparency]]) channels in the [[sRGB]] [[color space]] as numbers in the range of 0 to 1. The {{tag|color|o}} element can be inserted at the material, object, volume, vertex, or triangle levels, and takes priority in reverse order (triangle color is highest priority). The transparency channel specifies to what degree the color from the lower level is blended in. By default, all values are set to zero.
* [http://www.kornofolia.gr/ Ιστοσελίδα για την Κορνοφωλιά]


A color can also be specified by referring to a formula that can use a variety of coordinate-dependent functions.
[[Κατηγορία:Χωριά του νομού Έβρου]]

[[Κατηγορία:Δήμος Σουφλίου]]
====Texture maps====
Texture maps allow assigning color or material to a surface or a volume, borrowing from the idea of [[Texture mapping]] in graphics. The {{tag|texture|o}} element is first used to associate a <tt>texture-id</tt> with particular texture data. The data can be represented as either a 2D or a 3D array, depending on whether the color or material need to be mapped to a surface or a volume. The data is represented as a string of bytes in [[Base64]] encoding, one byte per pixel specifying the grayscale level in the 0-255 range.

Once the texture-id is assigned, the texture data can be referenced in a color formula, such as in the example below.

Usually, however, the coordinated will not be used directly as shown above, but transformed first to bring them from object coordinates to texture coordinates. For example, <tt>tex(1,f1(x,y,z),f2(x,y,z),f3(x,y,z))</tt> where <tt>f1(), f2(), f3()</tt> are some functions, typically linear.

===Material specification===
Materials are introduced using the <material> element. Each material is assigned a unique id.
Geometric volumes are associated with materials by specifying a material-id within the <volume> element.

====Mixed, graded, lattice, and random materials====
New materials can be defined as compositions of other materials. The element {{tag|composite|o}} is used to specify the proportions of the composition, as a constant or as a formula dependent of the x, y, and z coordinates. A constant mixing proportion will lead to a homogenous material. A coordinate-dependent composition can lead to a graded material. More complex coordinate-dependent proportions can lead to nonlinear material gradients as well as periodic and non-periodic substructure. The proportion formula can also refer to a texture map using the <tt>tex(textureid,x,y,z)</tt> function. Reference to material-id "0" (void) is reserved and may be used to specify porous structures. Reference to the <tt>rand(x,y,z)</tt> function can be used to specify pseudo-random materials. The <tt>rand(x,y,z)</tt> function returns a random number between 0 and 1 that is persistent for that coordinate.

===Print constellations===
Multiple objects can be arranged together using the {{tag|constellation|o}} element. A constellation can specify the position and orientation of objects to increase packing efficiency and to describe large arrays of identical objects. The {{tag|instance|o}} element specifies the displacement and rotation an existing object needs to undergo to arrive into its position in the constellation. The displacement and rotation are always defined relatively to the original position and orientation in which the object was defined. A constellation can refer to another constellation as long as cyclic references are avoided.

If multiple top-level constellations are specified, or if multplie objects without constellations are specified, each of them will be imported with no relative position data. The importing program can then freely determine the relative positioning.

===Meta-data===
The {{tag|metadata|o}} element can optionally be used to specify additional information about the objects, geometries and materials being defined. For example, this information can specify a name, textual description, authorship, copyright information and special instructions. The {{tag|metadata|o}} element can be included at the top level to specify attributes of the entire file, or within objects, volumes and materials to specify attributes local to that entity.

=== Optional curved triangles ===
[[File:curved triangle.jpg|thumb|A curved triangle patch. Normals at vertices are used to recursively subdivide the triangle into four sub-triangles]]

In order to improve geometric fidelity, the format allows curving the triangle patches. By default, all triangles are assumed to be flat and all triangle edges are assumed to be straight lines connecting their two vertices. However, curved triangles and curved edges can optionally be specified in order to reduce the number of mesh elements required to describe a curved surface. The curvature information has been shown to reduce the error of a spherical surface by a factor of 1000 as compared to a surface described by the same number of planar triangles.<ref name="ASTM F2915" /> Curvature should not create a deviation from the plane of the flat triangle that exceeds 50% of the largest dimension of the triangle.

To specify curvature, a vertex can optionally contain a child element {{tag|normal|o}} to specify desired surface normal at the location of the vertex. The normal should be unit length and pointing outwards. If this normal is specified, all triangle edges meeting at that vertex are curved so that they are perpendicular to that normal and in the plane defined by the normal and the original straight edge. When the curvature of a surface at a vertex is undefined (for example at a cusp, corner or edge), an {{tag|edge|o}} element can be used to specify the curvature of a single non-linear edge joining two vertices. The curvature is specified using the tangent direction vectors at the beginning and end of that edge. The {{tag|edge|o}} element will take precedence in case of a conflict with the curvature implied by a {{tag|normal|o}} element.

When curvature is specified, the triangle is decomposed recursively into four sub-triangles. The recursion must be executed five levels deep, so that the original curved triangle is ultimately replaced by 1024 flat triangles. These 1024 triangles are generated "on the fly" and stored temporarily only while layers intersecting that triangle are being processed for manufacturing.

===Formulas===
In both the {{tag|color|o}} and {{tag|composite|o}} elements, coordinate-dependent formulas can be used instead of constants. These formulas can use various standard algebraic and mathematical operators and expressions.

===Compression===
An AMF can be stored either as plain text or as compressed text. If compressed, the compression is in [[ZIP (file format)|ZIP archive]] format. A compressed AMF file is typically about half the size of an equivalent compressed binary STL file.{{dubious|date=April 2016}} The compression can be done manually using compression software such as WinZip, 7-Zip, or automatically by the exporting software during write. Both the compressed and uncompressed files have the AMF extension and it is the responsibility of the parsing program to determine whether or not the file is compressed, and if so to perform decompression during import.

==Design considerations==
When the ASTM Design subcommittee began developing the AMF specifications, a survey of stakeholders<ref name="Rapid Today"/> revealed that the key priority for the new standard was the requirement for a [[Proprietary software|non-proprietary]] format. Units and buildability issues were a concern lingering from problems with the STL format. Other key requirements were the ability to specify geometry with high fidelity and small file sizes, multiple materials, color, and microstructures. In order to be successful across the field of additive manufacturing, this file format was designed to address the following concerns

# '''Technology independence''': The file format must describe an object in a general way such that any machine can build it to the best of its ability. It is resolution and layer-thickness independent, and does not contain information specific to any one manufacturing process or technique. This does not negate the inclusion of properties that only certain advanced machines support (for example, color, multiple materials, etc.), but these are defined in such a way as to avoid exclusivity.
# '''Simplicity''': The file format must be easy to implement and understand. The format should be readable and editable in a simple text viewer, in order to encourage understanding and adoption. No identical information should be stored in multiple places.
# '''Scalability''': The file format should scale well with increase in part complexity and size, and with the improving resolution and accuracy of manufacturing equipment. This includes being able to handle large arrays of identical objects, complex repeated internal features (e.g. meshes), smooth curved surfaces with fine printing resolution, and multiple components arranged in an optimal packing for printing.
# '''Performance''': The file format must enable reasonable duration (interactive time) for read and write operations and reasonable file sizes for a typical large object.
# '''Backwards compatibility''': Any existing STL file should be convertible directly into a valid AMF file without any loss of information and without requiring any additional information. AMF files are also easily convertible back to STL for use on legacy systems, although advanced features will be lost.
# '''Future compatibility''': In order to remain useful in a rapidly changing industry, this file format must be easily extensible while remaining compatible with earlier versions and technologies. This allows new features to be added as advances in technology warrant, while still working flawlessly for simple homogenous geometries on the oldest hardware.

==History==
Since the mid-1980s, the [[STL (file format)|STL]] file format has been the ''de facto'' industry standard for transferring information between design programs and additive manufacturing equipment. The STL format only contained information about a surface mesh, and had no provisions for representing color, texture, material, substructure, and other properties of the fabricated target object. As additive manufacturing technology evolved from producing primarily single-material, homogenous shapes to producing multi-material geometries in full color with functionally graded materials and microstructures, there was a growing need for a standard interchange file format that could support these features. A second factor that ushered the development of the standard was the improving resolution of additive manufacturing technologies. As the fidelity of printing processes approached micron scale resolution, the number of triangles required to describe smooth curved surfaces resulted in unacceptably large file sizes.

During the 1990s and 2000s, a number of proprietary file formats have been in use by various companies to support specific features of their manufacturing equipment, but the lack of an industry-wide agreement prevented widespread adoption of any single format. In January 2009, a new [[ASTM International|ASTM]] Committee F42 on Additive Manufacturing Technologies was established, and a design subcommittee was formed to develop a new standard. A survey was conducted in late 2009<ref name="Rapid Today"/> leading to over a year of deliberations on the new standard. The resulting first revision of the AMF standard became official on May 2, 2011<ref name="ASTM Release" />

During the July 2013 meetings of ASTM’s F42 and ISO’s TC261 in Nottingham (UK), the Joint Plan for Additive Manufacturing Standards Development was approved. Since then, the AMF standard is managed jointly by ISO and ASTM.

==Sample file==
[[File:amf pyramid.jpg|thumb|Object produced by the sample AMF code]]

Below is a simple AMF file describing a pyramid made of two materials, adapted from the AMF tutorial<ref name="AMF Tutorial"/> (548 bytes compressed). To create this AMF file, copy and paste the text below text into a text editor or an xml editor, and save the file as "pyramid.amf". Then compress the file with ZIP, and rename the [[file extension]] from ".zip" to ".zip.amf".

<syntaxhighlight lang="xml">
<?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>
</syntaxhighlight>

==See also==
* [[X3D]]
* [[3D Printing Marketplace]]
* [[3D Manufacturing Format]]

==Notes==
{{reflist|refs=
<ref name="ASTM F2915">[http://www.astm.org/Standards/ISOASTM52915.htm Specification for Data Exchange Format for Additive Manufacturing]</ref>
<ref name="ISO 52915">[https://www.iso.org/standard/67472.html Specification of AMF on ISO web page]</ref>
<ref name="ASTM Release">[http://www.astmnewsroom.org/default.aspx?pageid=2539 New ASTM Additive Manufacturing Specification Answers Need for Standard Interchange File Format] ASTM, July 20, 2011</ref>
<ref name="Rapid Today">[http://www.rapidtoday.com/stl-file-format.html STL 2.0 May Replace Old, Limited File Format] Rapid Today, Oct 2009</ref>
<ref name="AMF Tutorial">[http://online.liebertpub.com/doi/pdfplus/10.1089/3dp.2014.1500 AMF Tutorial: The Basics (Part 1)]</ref>
}}

== External links ==
* [http://amf.wikispaces.com AMF Wiki]{{dead link|date=September 2018}}: A repository of AMF resources, sample files, and source code

{{CAD software}}

[[Category:Open standards]]
[[Category:XML-based standards]]
[[Category:3D graphics file formats]]
[[Category:CAD file formats]]

Version vom 29. September 2018, 04:49 Uhr

Vorlage:For Vorlage:Multiple issues

Vorlage:Infobox file format

Additive manufacturing file format (AMF) is an open standard for describing objects for additive manufacturing processes such as 3D printing. The official ISO/ASTM 52915:2016[1][2] standard is an XML-based format designed to allow any computer-aided design software to describe the shape and composition of any 3D object to be fabricated on any 3D printer. Unlike its predecessor STL format, AMF has native support for color, materials, lattices, and constellations.

Structure

An AMF can represent one object, or multiple objects arranged in a constellation. Each object is described as a set of non-overlapping volumes. Each volume is described by a triangular mesh that references a set of points (vertices). These vertices can be shared among volumes belonging to the same object. An AMF file can also specify the material and the color of each volume, as well as the color of each triangle in the mesh. The AMF file is compressed using the zip compression format, but the ".amf" file extension is retained. A minimal AMF reader implementation must be able to decompress an AMF file and import at least geometry information (ignoring curvature).

Basic file structure

The AMF file begins with the XML declaration line specifying the XML version and encoding. The remainder of the file is enclosed between an opening Vorlage:Tag element and a closing Vorlage:Tag element. The unit system can also be specified (millimeter, inch, feet, meter or micrometer). In absence of a units specification, millimeters are assumed.

Within the AMF brackets, there are five top level elements. Only a single object element is required for a fully functional AMF file.

  1. Vorlage:Tag The object element defines a volume or volumes of material, each of which are associated with a material ID for printing. At least one object element must be present in the file. Additional objects are optional.
  2. Vorlage:Tag The optional material element defines one or more materials for printing with an associated material ID. If no material element is included, a single default material is assumed.
  3. Vorlage:Tag The optional texture element defines one or more images or textures for color or texture mapping, each with an associated texture ID.
  4. Vorlage:Tag The optional constellation element hierarchically combines objects and other constellations into a relative pattern for printing.
  5. Vorlage:Tag The optional metadata element specifies additional information about the object(s) and elements contained in the file.

Geometry specification

The format uses a Face-vertex polygon mesh layout. Each top-level Vorlage:Tag element specifies a unique id. The Vorlage:Tag element can also optionally specify a material. The entire mesh geometry is contained in a single mesh element. The mesh is defined using one Vorlage:Tag element and one or more Vorlage:Tag elements. The required Vorlage:Tag element lists all vertices that are used in this object. Each vertex is implicitly assigned a number in the order in which it was declared, starting at zero. The required child element Vorlage:Tag gives the position of the point in 3D space using the Vorlage:Tag, Vorlage:Tag and Vorlage:Tag elements. After the vertex information, at least one Vorlage:Tag element must be included. Each volume encapsulates a closed volume of the object, Multiple volumes can be specified in a single object. Volumes may share vertices at interfaces but may not have any overlapping volume. Within each volume, the child element Vorlage:Tag is used to define triangles that tessellate the surface of the volume. Each Vorlage:Tag element will list three vertices from the set of indices of the previously defined vertices given in the Vorlage:Tag element. The indices of the three vertices of the triangles are specified using the Vorlage:Tag, Vorlage:Tag and Vorlage:Tag elements. The order of the vertices must be according to the right-hand rule, such that vertices are listed in counter-clockwise order as viewed from the outside. Each triangle is implicitly assigned a number in the order in which it was declared, starting at zero.

Color specification

Colors are introduced using the Vorlage:Tag element by specifying the red, green, blue and alpha (transparency) channels in the sRGB color space as numbers in the range of 0 to 1. The Vorlage:Tag element can be inserted at the material, object, volume, vertex, or triangle levels, and takes priority in reverse order (triangle color is highest priority). The transparency channel specifies to what degree the color from the lower level is blended in. By default, all values are set to zero.

A color can also be specified by referring to a formula that can use a variety of coordinate-dependent functions.

Texture maps

Texture maps allow assigning color or material to a surface or a volume, borrowing from the idea of Texture mapping in graphics. The Vorlage:Tag element is first used to associate a texture-id with particular texture data. The data can be represented as either a 2D or a 3D array, depending on whether the color or material need to be mapped to a surface or a volume. The data is represented as a string of bytes in Base64 encoding, one byte per pixel specifying the grayscale level in the 0-255 range.

Once the texture-id is assigned, the texture data can be referenced in a color formula, such as in the example below.

Usually, however, the coordinated will not be used directly as shown above, but transformed first to bring them from object coordinates to texture coordinates. For example, tex(1,f1(x,y,z),f2(x,y,z),f3(x,y,z)) where f1(), f2(), f3() are some functions, typically linear.

Material specification

Materials are introduced using the <material> element. Each material is assigned a unique id. Geometric volumes are associated with materials by specifying a material-id within the <volume> element.

Mixed, graded, lattice, and random materials

New materials can be defined as compositions of other materials. The element Vorlage:Tag is used to specify the proportions of the composition, as a constant or as a formula dependent of the x, y, and z coordinates. A constant mixing proportion will lead to a homogenous material. A coordinate-dependent composition can lead to a graded material. More complex coordinate-dependent proportions can lead to nonlinear material gradients as well as periodic and non-periodic substructure. The proportion formula can also refer to a texture map using the tex(textureid,x,y,z) function. Reference to material-id "0" (void) is reserved and may be used to specify porous structures. Reference to the rand(x,y,z) function can be used to specify pseudo-random materials. The rand(x,y,z) function returns a random number between 0 and 1 that is persistent for that coordinate.

Multiple objects can be arranged together using the Vorlage:Tag element. A constellation can specify the position and orientation of objects to increase packing efficiency and to describe large arrays of identical objects. The Vorlage:Tag element specifies the displacement and rotation an existing object needs to undergo to arrive into its position in the constellation. The displacement and rotation are always defined relatively to the original position and orientation in which the object was defined. A constellation can refer to another constellation as long as cyclic references are avoided.

If multiple top-level constellations are specified, or if multplie objects without constellations are specified, each of them will be imported with no relative position data. The importing program can then freely determine the relative positioning.

Meta-data

The Vorlage:Tag element can optionally be used to specify additional information about the objects, geometries and materials being defined. For example, this information can specify a name, textual description, authorship, copyright information and special instructions. The Vorlage:Tag element can be included at the top level to specify attributes of the entire file, or within objects, volumes and materials to specify attributes local to that entity.

Optional curved triangles

Datei:Curved triangle.jpg
A curved triangle patch. Normals at vertices are used to recursively subdivide the triangle into four sub-triangles

In order to improve geometric fidelity, the format allows curving the triangle patches. By default, all triangles are assumed to be flat and all triangle edges are assumed to be straight lines connecting their two vertices. However, curved triangles and curved edges can optionally be specified in order to reduce the number of mesh elements required to describe a curved surface. The curvature information has been shown to reduce the error of a spherical surface by a factor of 1000 as compared to a surface described by the same number of planar triangles.[1] Curvature should not create a deviation from the plane of the flat triangle that exceeds 50% of the largest dimension of the triangle.

To specify curvature, a vertex can optionally contain a child element Vorlage:Tag to specify desired surface normal at the location of the vertex. The normal should be unit length and pointing outwards. If this normal is specified, all triangle edges meeting at that vertex are curved so that they are perpendicular to that normal and in the plane defined by the normal and the original straight edge. When the curvature of a surface at a vertex is undefined (for example at a cusp, corner or edge), an Vorlage:Tag element can be used to specify the curvature of a single non-linear edge joining two vertices. The curvature is specified using the tangent direction vectors at the beginning and end of that edge. The Vorlage:Tag element will take precedence in case of a conflict with the curvature implied by a Vorlage:Tag element.

When curvature is specified, the triangle is decomposed recursively into four sub-triangles. The recursion must be executed five levels deep, so that the original curved triangle is ultimately replaced by 1024 flat triangles. These 1024 triangles are generated "on the fly" and stored temporarily only while layers intersecting that triangle are being processed for manufacturing.

Formulas

In both the Vorlage:Tag and Vorlage:Tag elements, coordinate-dependent formulas can be used instead of constants. These formulas can use various standard algebraic and mathematical operators and expressions.

Compression

An AMF can be stored either as plain text or as compressed text. If compressed, the compression is in ZIP archive format. A compressed AMF file is typically about half the size of an equivalent compressed binary STL file.Vorlage:Dubious The compression can be done manually using compression software such as WinZip, 7-Zip, or automatically by the exporting software during write. Both the compressed and uncompressed files have the AMF extension and it is the responsibility of the parsing program to determine whether or not the file is compressed, and if so to perform decompression during import.

Design considerations

When the ASTM Design subcommittee began developing the AMF specifications, a survey of stakeholders[3] revealed that the key priority for the new standard was the requirement for a non-proprietary format. Units and buildability issues were a concern lingering from problems with the STL format. Other key requirements were the ability to specify geometry with high fidelity and small file sizes, multiple materials, color, and microstructures. In order to be successful across the field of additive manufacturing, this file format was designed to address the following concerns

  1. Technology independence: The file format must describe an object in a general way such that any machine can build it to the best of its ability. It is resolution and layer-thickness independent, and does not contain information specific to any one manufacturing process or technique. This does not negate the inclusion of properties that only certain advanced machines support (for example, color, multiple materials, etc.), but these are defined in such a way as to avoid exclusivity.
  2. Simplicity: The file format must be easy to implement and understand. The format should be readable and editable in a simple text viewer, in order to encourage understanding and adoption. No identical information should be stored in multiple places.
  3. Scalability: The file format should scale well with increase in part complexity and size, and with the improving resolution and accuracy of manufacturing equipment. This includes being able to handle large arrays of identical objects, complex repeated internal features (e.g. meshes), smooth curved surfaces with fine printing resolution, and multiple components arranged in an optimal packing for printing.
  4. Performance: The file format must enable reasonable duration (interactive time) for read and write operations and reasonable file sizes for a typical large object.
  5. Backwards compatibility: Any existing STL file should be convertible directly into a valid AMF file without any loss of information and without requiring any additional information. AMF files are also easily convertible back to STL for use on legacy systems, although advanced features will be lost.
  6. Future compatibility: In order to remain useful in a rapidly changing industry, this file format must be easily extensible while remaining compatible with earlier versions and technologies. This allows new features to be added as advances in technology warrant, while still working flawlessly for simple homogenous geometries on the oldest hardware.

History

Since the mid-1980s, the STL file format has been the de facto industry standard for transferring information between design programs and additive manufacturing equipment. The STL format only contained information about a surface mesh, and had no provisions for representing color, texture, material, substructure, and other properties of the fabricated target object. As additive manufacturing technology evolved from producing primarily single-material, homogenous shapes to producing multi-material geometries in full color with functionally graded materials and microstructures, there was a growing need for a standard interchange file format that could support these features. A second factor that ushered the development of the standard was the improving resolution of additive manufacturing technologies. As the fidelity of printing processes approached micron scale resolution, the number of triangles required to describe smooth curved surfaces resulted in unacceptably large file sizes.

During the 1990s and 2000s, a number of proprietary file formats have been in use by various companies to support specific features of their manufacturing equipment, but the lack of an industry-wide agreement prevented widespread adoption of any single format. In January 2009, a new ASTM Committee F42 on Additive Manufacturing Technologies was established, and a design subcommittee was formed to develop a new standard. A survey was conducted in late 2009[3] leading to over a year of deliberations on the new standard. The resulting first revision of the AMF standard became official on May 2, 2011[4]

During the July 2013 meetings of ASTM’s F42 and ISO’s TC261 in Nottingham (UK), the Joint Plan for Additive Manufacturing Standards Development was approved. Since then, the AMF standard is managed jointly by ISO and ASTM.

Sample file

Object produced by the sample AMF code

Below is a simple AMF file describing a pyramid made of two materials, adapted from the AMF tutorial[5] (548 bytes compressed). To create this AMF file, copy and paste the text below text into a text editor or an xml editor, and save the file as "pyramid.amf". Then compress the file with ZIP, and rename the file extension from ".zip" to ".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>

See also

Notes

Vorlage:Reflist

Vorlage:CAD software

  1. a b Referenzfehler: Ungültiges <ref>-Tag; kein Text angegeben für Einzelnachweis mit dem Namen ASTM F2915.
  2. Referenzfehler: Ungültiges <ref>-Tag; kein Text angegeben für Einzelnachweis mit dem Namen ISO 52915.
  3. a b Referenzfehler: Ungültiges <ref>-Tag; kein Text angegeben für Einzelnachweis mit dem Namen Rapid Today.
  4. Referenzfehler: Ungültiges <ref>-Tag; kein Text angegeben für Einzelnachweis mit dem Namen ASTM Release.
  5. Referenzfehler: Ungültiges <ref>-Tag; kein Text angegeben für Einzelnachweis mit dem Namen AMF Tutorial.