Click here to Skip to main content
15,065,758 members
Articles / Desktop Programming / MFC
Posted 5 Mar 2003


59 bookmarked

StL Data File Viewer

Rate me:
Please Sign up or sign in to vote.
4.87/5 (43 votes)
5 Mar 2003CPOL2 min read
A simple StereoLithography data file viewer.

Sample Image - StLViewer.jpg


StereoLithography(StL) is something that is widely used in CAD/CAM, RapidPrototyping etc. The concept is that any surface or solid is exported to StL format by data exchange packages after they are modeled in commercial CAD packages. This data consists of triangulated facets that approximate the surface of the solid. No topological or geometric information is exported. The surface is subdivided into small triangles. The approximation uses chordal deflection for curved surfaces to smoothen the surface. More the smoothening required, more number of smaller triangles are generated by subdivision resulting in larger size of data file. Now, along with triangles, their facet normals are also generated. The data is written both in ASCII and binary formats. The data in ASCII is written like this:

facet normal  0.000000e+000 -1.000000e+000  0.000000e+000
   outer loop
     vertex -1.499999e+002 -1.000000e+002  0.000000e+000
     vertex -1.500000e+002 -1.000000e+002  0.000000e+000
     vertex -1.500000e+002 -1.000000e+002 -5.000000e+001

The facet normal tells the three components of the facet normal followed by three vertices of one triangle, enclosed by the statements.

facet normal  0.000000e+000 -1.000000e+000  0.000000e+000



Thus all the triangles are written one after the other. This data can be then used as input for generating Rapid Prototype models as well as for NC toolpath generation. The Normal data helps to compute tool offsets etc.

Here, for displaying the data in the OpenGL viewer, I have written the code for reading the data and displaying each triangle using glBegin(GL_TRIANGLES) and the normals for lighting. The viewer and geometry coding is same as my earlier project CadSurf. You can read as many StL (ASCII only) files into the viewer zoom, pan, rotate the views, select the objects, change attributes like color and material. The viewer provides object oriented context menus. I.e., when you click the right mouse button in the view with no active selection, you get a context menu for setting the viewer attributes, whereas with StL object selected, you get menu for the object attributes. Some sample StL data is also provided in the Data folder of the project.

Please let me know your comments. Thank you.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Product Manager Mahindra & Mahindra
India India
Sharjith is a Mechanical Engineer with strong passion for Automobiles, Aircrafts and Software development.

Comments and Discussions

QuestionFile won't open proberly Pin
Member 1461845710-Oct-19 1:59
MemberMember 1461845710-Oct-19 1:59 
Questioninfo Pin
Member 94133524-Sep-17 3:09
MemberMember 94133524-Sep-17 3:09 
AnswerRe: info Pin
Sharjith7-Sep-17 1:17
professionalSharjith7-Sep-17 1:17 
GeneralRe: info Pin
Member 941335229-Sep-17 5:45
MemberMember 941335229-Sep-17 5:45 
GeneralRe: info Pin
Sharjith29-Sep-17 16:36
professionalSharjith29-Sep-17 16:36 
QuestionError message Pin
Member 1220771721-Jan-16 15:29
MemberMember 1220771721-Jan-16 15:29 
AnswerRe: Error message Pin
Sharjith21-Jan-16 19:58
professionalSharjith21-Jan-16 19:58 
GeneralRe: Error message Pin
Member 1220771721-Jan-16 21:10
MemberMember 1220771721-Jan-16 21:10 
QuestionIt doesn't work =/ Pin
Member 1215209618-Nov-15 22:43
MemberMember 1215209618-Nov-15 22:43 
AnswerRe: It doesn't work =/ Pin
Member 1102586221-Dec-15 2:27
MemberMember 1102586221-Dec-15 2:27 
QuestionStl file editing Pin
Bommu n24-Aug-15 22:31
MemberBommu n24-Aug-15 22:31 
QuestionHow to display on aspx page Pin
HackensackNJ22-Aug-15 8:05
MemberHackensackNJ22-Aug-15 8:05 
Generalvote 5 stars!! Pin
wzlwzl16-Jun-15 5:30
Memberwzlwzl16-Jun-15 5:30 
GeneralRe: vote 5 stars!! Pin
Sharjith16-Jun-15 5:55
professionalSharjith16-Jun-15 5:55 
Questionhelp Pin
sıcak bulut25-Jun-14 9:38
Membersıcak bulut25-Jun-14 9:38 
AnswerRe: help Pin
Sharjith1-Jul-14 18:49
professionalSharjith1-Jul-14 18:49 
GeneralRe: help Pin
Chidiebere14-Jul-14 16:05
MemberChidiebere14-Jul-14 16:05 
GeneralRe: help Pin
Sharjith17-Jul-14 6:21
professionalSharjith17-Jul-14 6:21 
Questionplease help me your project in another such as c# Pin
maryamjafary3-Jan-14 21:55
Membermaryamjafary3-Jan-14 21:55 
AnswerRe: please help me your project in another such as c# Pin
Sharjith1-Jul-14 18:48
professionalSharjith1-Jul-14 18:48 
QuestionVS 2010 build fails for me with missing iostream.h Pin
codegrunt2-Jun-12 17:37
Membercodegrunt2-Jun-12 17:37 
AnswerRe: VS 2010 build fails for me with missing iostream.h Pin
Sharjith3-Jun-12 3:51
professionalSharjith3-Jun-12 3:51 
GeneralRe: VS 2010 build fails for me with missing iostream.h Pin
Member 39089022-Oct-12 6:58
MemberMember 39089022-Oct-12 6:58 
QuestionUnable to view the viewer after running the application Pin
sidhu_ind23-May-12 21:47
Membersidhu_ind23-May-12 21:47 
AnswerRe: Unable to view the viewer after running the application Pin
Sharjith24-May-12 0:37
professionalSharjith24-May-12 0:37 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.