From: Ian Jackson Date: Sat, 16 Feb 2008 11:05:28 +0000 (+0000) Subject: downloaded STL file format spec from WP X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=moebius2.git;a=commitdiff_plain;h=c620934d56d69abb34aeb475b09471f811d39898 downloaded STL file format spec from WP --- diff --git a/stl-format-wikipedia.txt b/stl-format-wikipedia.txt new file mode 100644 index 0000000..de9b155 --- /dev/null +++ b/stl-format-wikipedia.txt @@ -0,0 +1,291 @@ +STL (file format) + +From Wikipedia, the free encyclopedia + +Jump to: navigation, search + +STL is a file format native to the stereolithography CAD software created by 3D +Systems. This file format is supported by many other software packages; it is +widely used for rapid prototyping and computer-aided manufacturing. STL files +describe only the surface geometry of a three dimensional object without any +representation of color, texture or other common CAD model attributes. The STL +format specifies both ASCII and binary representations. Binary files are more +common, since they are more compact. + +An STL file describes a raw unstructured triangulated surface by the unit +normal and vertices (ordered by the right-hand rule) of the triangles using a +three-dimensional Cartesian coordinate system. + +Contents + + * 1 ASCII STL + * 2 Binary STL + * 3 Colour in Binary STL + + 3.1 VisCAM/SolidView + + 3.2 Magics + + 3.3 NOTE: + * 4 The Facet Normal + * 5 History of use + * 6 Use in other fields. + * 7 See also + * 8 External links + +[edit] ASCII STL + +An ASCII STL file begins with the line: + + solid name + +where name is an optional string. The file continues with any number of +triangles, each represented as follows: + + facet normal n1 n2 n3 + outer loop + vertex v11 v12 v13 + vertex v21 v22 v23 + vertex v31 v32 v33 + endloop + endfacet + +where n1-n3 and v11-v33 are floating point numbers in sign-mantissa'e'-sign- +exponent format and concludes with: + + endsolid name + +The structure of the format suggests that other possibilities exist (eg Facets +with more than one 'loop' or loops with other than three vertices) but in +practice, all facets are simple triangles. + +White space (spaces, tabs, newlines) may be used anywhere in the file except +within numbers or words. The spaces between 'facet' and 'normal' and between +'outer' and 'loop' are required. + +[edit] Binary STL + +Because ASCII STL files can become very large, a binary version of STL exists. +A binary STL file has an 80 character header (which is generally ignored - but +which should never begin with 'solid' because that will lead most software to +assume that this is an ASCII STL file). Following the header is a 4 byte +unsigned integer indicating the number of triangular facets in the file. +Following that is data describing each triangle in turn. The file simply ends +after the last triangle. + +Each triangle is described by twelve floating point numbers: three for the +normal and then three for the X/Y/Z coordinate of each vertex - just as with +the ASCII version of STL. After the twelve floats there is a two byte unsigned +'short' integer that is the 'attribute byte count' - in the standard format, +this should be zero because most software does not understand anything else. + +Floating point numbers are represented as IEEE floating point numbers and the +endianness is assumed to be little endian although this is not stated in +documentation. + +[edit] Colour in Binary STL + +There are at least two variations on the binary STL format for adding colour +information: + +[edit] VisCAM/SolidView + +The VisCAM and SolidView software packages use the two 'attribute byte count' +bytes at the end of every triangle to store a 15 bit RGB colour: + + * bit 0 to 4 are the intensity level for blue (0 to 31) + * bits 5 to 9 are the intensity level for green (0 to 31) + * bits 10 to 14 are the intensity level for red (0 to 31) + + bit 15 is 1 if the colour is valid + + bit 15 is 0 if the colour is not valid (as with normal STL files) + +[edit] Magics + +The Materialise Magics software does things a little differently. It uses the +80 byte header at the top of the file to represent the overall colour of the +entire part. If colour is used, then somewhere in the header should be the +ASCII string "COLOR=" followed by four bytes representing Red, Green, Blue and +Alpha channel (transparency) in the range 0-255. This is the colour of the +entire object unless overridden at each facet. The per-facet colour is +represented in the two 'attribute byte count' bytes as follows: + + * bit 0 to 4 are the intensity level for red (0 to 31) + * bits 5 to 9 are the intensity level for green (0 to 31) + * bits 10 to 14 are the intensity level for blue (0 to 31) + + bit 15 is 1 if this facet has its own unique colour + + bit 15 is 0 if the per-object colour is to be used (or no colour at all + if the "COLOR=" string is absent from the header. + +[edit] NOTE: + +The red/green/blue ordering within those two bytes is reversed in these two +approaches - so whilst these formats could easily have been compatible the +reversal of the order of the colours means that they are not - and worse still, +a generic STL file reader cannot automatically distinguish between them. There +is also no way to have facets be selectively transparent because there is no +per-facet alpha value - although in the context of current rapid prototyping +machinery, this is not important. + +[edit] The Facet Normal + +In both ASCII and binary versions of STL, the facet normal should be a unit +vector pointing outwards from the solid object. In most software this may be +set to (0,0,0) and the software will automatically calculate a normal based on +the order of the triangle vertices using the 'right hand rule'. Some STL +loaders (eg the STL plugin for Art of Illusion) check that the normal in the +file agrees with the normal they calculate using the right hand rule and warn +you when it does not. Other software may ignore the facet normal entirely and +use only the right hand rule. So in order to be entirely portable one should +provide both the facet normal and order the vertices appropriately - even +though it is seemingly redundant to do so. + +[edit] History of use + +Stereolithography machines are basically 3D printers that can build any volume +shape as a series of slices. Ultimately these machines require a series of +closed 2D contours that are filled in with solidified material as the layers +are fused together. + +The natural file format for such a machine would be a series of closed polygons +corresponding to different Z-values. However, since it's possible to vary the +layer thicknesses for a faster though less precise build, it seemed easier to +define the model to be built as a closed polyhedron that could be sliced at the +necessary horizontal levels. + +The STL file format appears capable of defining a polyhedron with any polygonal +facet, but in practice it's only ever used for triangles, which means that much +of the syntax of the file is superfluous. It is also the case that the value of +the normal shouldn't be necessary, since that is a direct calculation from the +coordinates of the triangle with the orientation being controlled by the right +hand rule. + +STL files are supposed to be closed and connected like a combinatorial surface, +where every triangular edge is part of exactly two triangles, and not +self-intersecting. Since the syntax does not enforce this property, it can be +ignored for applications where the closedness doesn't matter. + +The closedness only matters insofar as the software which slices the triangles +requires it to ensure that the resulting 2D polygons are closed. Sometimes such +software can be written to clean up small discrepancies by moving endpoints of +edges that are close together so that they coincide. The results are not +predictable, but it is often sufficient to get the job done. + +Obviously, there is much scope for "improvement" of this file format, which in +its present form is nothing more than a listing of groups of 9 (or 12 if you +care about the normals) floating point numbers embedded in some unnecessary +syntax. Since each vertex is on average going to be used in six different +triangles, considerable savings in memory could be obtained by listing all the +points in a table at the beginning of the file, and concluding with a list of +triangle definitions composed of triplets of integers that referenced this +table. + +However, for the purpose of generating a single contour slice using a very +lightweight piece of software on a computer with little memory, this format is +perfect since it can be processed in one pass regardless of file size. + +[edit] Use in other fields. + +Many Computer-aided design systems are able to output the STL file format among +their other formats because it's quick and easy to implement, if you ignore the +connection criteria of the triangles. Many Computer-aided manufacturing systems +require triangulated models as the basis of their calculation. + +Since an STL file output, of a sorts, is almost always available from the CAD +system, it's often used as a quick method for importing the necessary +triangulated geometry into the CAM system. + +Once it works, there is very little motivation to change, even though it is far +from the most memory and computationally efficient method for transferring this +data. Many integrated CAD and CAM systems transfer their geometric data using +this accidental file format, because it's impossible to go wrong. + +There are many other file formats capable of encoding triangles available, such +as VRML, DXF, but they have the disadvantage that it's possible to put things +other than triangles into it, and thus produce something ambiguous or unusable. + +[edit] See also + + * RepRap is an OpenSource project that uses STL file input and generates + solid objects as output. + * PLY (file format) is an alternative file format with more flexibility that + is in use in some stereolithography applications. + * MeshLab is an open source Windows and Linux application for visualizing, + processing and converting three dimensional meshes to or from the STL file + format. + +[edit] External links + + * The STL Format - Standard Data Format for Fabbers: The STL Format + * How to Create an STL file Guide to exporting STL files from various CAD + packages (courtesy of ProtoCAM) + * SolidView SolidView is a commercial STL manipulation package that has a + Lite version available (under provision of a business email address) for + STL viewing. + * Freesteel with a web-interface where you can upload an STL file and render + it into an image in your browser. + * ADMesh is a GPLed text-based program for processing triangulated solid + meshes, and reads and writes the STL file format. + +Retrieved from "http://en.wikipedia.org/wiki/STL_%28file_format%29" + +Categories: Solid freeform fabrication | CAD file formats | Graphics file +formats | Computer file formats | 3D computer graphics + +Views + + * Article + * Discussion + * Edit this page + * History + +Personal tools + + * Log in / create account + + + +Navigation + + * Main Page + * Contents + * Featured content + * Current events + * Random article + +Interaction + + * About Wikipedia + * Community portal + * Recent changes + * Contact Wikipedia + * Donate to Wikipedia + * Help + +Search + +[ ] [Go] [Search] +Toolbox + + * What links here + * Related changes + * Upload file + * Special pages + * Printable version + * Permanent link + * Cite this page + +Languages + + * Deutsch + * Fran?ais + * ??????? + +Powered by MediaWiki +Wikimedia Foundation + + * This page was last modified 22:47, 15 February 2008. + * All text is available under the terms of the GNU Free Documentation License + . (See Copyrights for details.) + Wikipedia? is a registered trademark of the Wikimedia Foundation, Inc., a + U.S. registered 501(c)(3) tax-deductible nonprofit charity. + * Privacy policy + * About Wikipedia + * Disclaimers +