--- /dev/null
+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
+