Developed in 1987 for 3D Systems the STL format was designed as a standard format to allow data movement between CAD programs and stereolithography machines. 'STL' stands for Surface Tesselation Language (or, depending on who you talk to, perhaps 'STereoLithography file' or 'Standard Transform Language file').
A tessellation is a gap-less, repeating pattern of non-overlapping figures across a surface. Any shape can be used; STL format uses triangles. This triangular mesh is most often derived from the surface - and only the surface - of a 3D CAD designed object. Meshes can also be derived from 'point clouds' generated through laser scanning.
In an STL file, each and every triangle 'facet' is defined in terms of the coordinates of its three vertices. In addition a normal vector is included so that the inside and outside of each facet are clear. The number of triangles is primarily a function of the size of the surface and the resolution of the tessellation. The higher the resolution, the greater the number of triangles and the closer the approximation to a true curved surface. STL files can be human-readable ASCII or binary encoded. Since each and every triangle is defined, ASCII STL files can become somewhat large and binary files are usually preferred.
STL Files Inefficient for High Resolution 3D Printers
Although STL files are capable of holding triangular meshes at whatever resolution is desired, they quickly become large and unwieldy. Take for example the STL for a simple, smooth surfaced, 10 cm sphere, generated in SolidEdge with 10 micron conversion tolerance, or precision (i.e. any point on any STL triangle can be no further than 10 microns from the 'true' surface of the original 3D CAD design). Why 10 cm and why 10 micron? 10 cubic cm build envelopes are common and 10 micron accuracy is possible with today's higher resolution 3D printers.

Triangular mesh for a 10cm sphere with 10 micron precision
At this resolution the triangular mesh for this simple sphere is composed of nearly 50,000 triangles. The STL file is almost 350,000 lines long and is more than 13MB in size:
000001 solid ascii
000002 facet normal 4.206248e-002 -5.926095e-004 9.991148e-001
000003 outer loop
000004 vertex 1.402310e+000 0.000000e+000 4.998023e+001
000005 vertex 1.401753e+000 -3.950587e-002 4.998023e+001
000006 vertex 2.802404e+000 -7.898065e-002 4.992124e+001
000007 endloop
000008 endfacet
.
.
.
346537 facet normal 1.402451e-002 -1.975884e-004 9.999016e-001
346538 outer loop
346539 vertex 1.401753e+000 -3.950587e-002 4.998023e+001
346540 vertex 1.402310e+000 0.000000e+000 4.998023e+001
346541 vertex 9.184833e-015 0.000000e+000 4.999990e+001
346542 endloop
346543 endfacet
346544 endsolid
Saving the STL with binary encoding does result in file size savings (2.4MB) but at the cost of human readability and increases in write and read times.
Reducing STL Precision Not an Option
As we see above, even the simplest objects can result in unwieldy STL files when generated at resolutions required by today's 3D printers. Triangle counts in the millions and file sizes greater than 100MB are not uncommon.
To reduce STL file complexity one can reduce the resolution but the results quickly become less than optimum. For example the mesh for the same sphere generated with 1mm (1000 micron) precision is two orders of magnitude less in both number of triangles (506) and file size (0.13MB). However, as can be seen below, the resulting facets are larger than the features possible even with today's lowest resolution 3D printers.

Triangular mesh for a 10cm sphere with 1mm precision
3D Printers Have Capabilities Which Cannot Be Specified in STL Files
In 1987 stereolithography machines could 3D print in single mono-chromatic materials at relatively low resolutions; STL files were more than up to the task. The number of triangles to describe a surface to the resolution it could be printed was manageable and other information was not needed.
However, printer manufacturers - existing and new - continued to innovate and machines which could print not only at higher resolutions, but with different materials, colors, textures etc. were introduced. STL files contain only vertex and facet definitions. Not even units are a part of a standard STL file, let alone material or color definitions. As a result a number of 'extended' STL formats have been developed by OEMs and software companies to include the additional information which today's printers can work with. (See here and here for non-commercial examples.) Presently one is faced with an ineffective standard STL format and a mishmash of incompatible semi-custom STL formats.
STL has to go - or does it?
For nearly 25 tears the STL format has been the 3D printing workhorse. 3D CAD programs can easily export to it and 3D printer OEM software has been developed to read it before slicing and creating machine paths. But as machine resolutions have increased so has the size of STL files required to print high resolution objects – hundreds of megabytes describing millions of triangles are not uncommon. Further, machines with capabilities not possible to be described in the standard STL format have been developed. To describe object characteristics such as materials or colors, the STL format has been modified, most often on the OEM or support software side. So instead of adding these design features during the design phase (in 3D CAD programs) one is forced to add them later during the print phase. One would think the STLs would be shown the door.
However, although STLs are inefficient and incapable of describing a number of 3D printing features they are still the de facto industry standard. The triangular meshes they describe are particularly amenable to common slicing algorithms and 20+ years of use means that their shortcomings are well known and dealt with. Still, it's difficult to get passed the feeling that 'we've always done it that way' is one of the primary reasons the STL format is still around. But whether it's simple inertia or the fact that at least on a basic level it gets the job done, for the time being, the STL format will continue to reign as the king of 3D printing.
But what if it was possible to get 10 micron precision with a file similar to a 1000 micron precision STL file - and include material, color and metatdata? Next, STL 2.0 - AMF Format to Replace STLs?
3D Additive Fabrication, Inc. (3dAddFab) is a start up company located in Colorado, USA. 3dAddFab provides high quality 3D printing that is easy to price and order, at a lower cost than existing fabricators.
Strict Standards: Only variables should be assigned by reference in /srv/www/3daddfab.com/public_html/blog/include/functions_smarty.inc.php on line 73