Click here to Skip to main content
Licence GPL3
First Posted 5 Mar 2003
Views 160,987
Bookmarked 39 times

StL Data File Viewer

By | 5 Mar 2003 | Article
A simple StereoLithography data file viewer.

Sample Image - StLViewer.jpg

Introduction

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
   endloop
 endfacet

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

and

endfacet

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.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)

About the Author

Sharjith

Engineer
Tata Technologies Inc
United States United States

Member

Sharjith's professional experience of 12 years is in manufacturing of sheet metal tools, dies and fixtures for the Automotive Industry in the domain of CAD/CAM (EUCLID, Catia, Tebis etc). He started learning C, C++ and OpenGL (for which he heavily depended and still depends on CodeProject) as a curiosity to know how CAD/CAM applications are developed and an ambition to develop one some day. Eventually, his programming skills and some useful implementations of applications that he did for TATA Motors (CNC simulator, G-Code convertors, Coordinate computation tools etc) gave him the opportunity to switch from manufacturing to software. Now since the past 2 years, he is working as a Software Engineer with TATA Technologies India, doing customization of Dassault Systemes' product CATIA, using CAA (Component Application Architecture). He is a Mechanical Engineer with strong passion for Automobiles, Aircrafts and Software development.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionUnable to view the viewer after running the application Pinmembersidhu_ind21:47 23 May '12  
AnswerRe: Unable to view the viewer after running the application PinmemberSharjith0:37 24 May '12  
GeneralMy vote of 5 PinmemberVolynsky Alex3:42 23 May '12  
QuestionSlicing Pinmemberederson.nivel19:34 24 Apr '12  
QuestionSelection window on window 7 machine got distorted. Pinmembersingh9635:00 23 Apr '12  
Questionflash screen appear while resizing window Pinmembersingh9634:54 23 Apr '12  
QuestionRun-Time Check Failure #2 - Stack around the variable 'str' was corrupted. Pinmemberwaterharbin2:33 1 Mar '12  
AnswerRe: Run-Time Check Failure #2 - Stack around the variable 'str' was corrupted. PinmemberSharjith11:59 1 Mar '12  
GeneralSTL Viewer Pinmembercjellwood4:02 13 Feb '11  
GeneralRe: STL Viewer PinmemberSharjith5:54 13 Feb '11  
GeneralError [modified] Pinmembersangar202018:21 23 Sep '10  
GeneralRe: Error PinmemberSharjith7:28 24 Sep '10  
GeneralTell the path Pinmembersangar20200:54 23 Sep '10  
GeneralRe: Tell the path PinmemberSharjith4:42 23 Sep '10  
GeneralFatel error Pinmembersangar202023:48 22 Sep '10  
Questionfollowing message display in .net 2008? Pinmembersangar202018:12 22 Sep '10  
AnswerRe: following message display in .net 2008? PinmemberSharjith18:38 22 Sep '10  
GeneralDuplicated points removal PinmemberM.Siyamalan18:56 3 May '10  
GeneralRe: Duplicated points removal PinmemberSharjith19:40 3 May '10  
QuestionHow to calculate angle between triangles Pinmembernsivabalan202020:50 31 Mar '10  
AnswerRe: How to calculate angle between triangles PinmemberSharjith7:17 1 Apr '10  
GeneralUnable to open other stl file PinmemberMember 460375420:12 14 Feb '10  
GeneralStereolithography file (STL) edit Pinmembernsivabalan202019:25 30 Nov '09  
GeneralWat knowledge should i must have to handle this task PinmemberDevelopmentNoob17:58 21 Apr '09  
GeneralIs there component out there that can recognize the demension of stl and iges files PinmemberMember 14020135:56 9 Apr '09  

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

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

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120517.1 | Last Updated 6 Mar 2003
Article Copyright 2003 by Sharjith
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid