Name Tag Auto Printing

Technologies used

Project worked on Summer 2015

At age 17

Project worked on for about 2-4 hours a day for about 6 weeks


The Name Tag Auto Printing app is a web-based application through which a user can order a customized 3-D printed name tag. The user can enter their name, see a preview image of what the name tag will look like, and submit their order. The application back end will then send the name tag order to one of the 3-D printers on the network. The app also has a management interface to alter the name tag queue and the printer configuration among other things.

Why I Built It

My 4-H Robotics Club's exhibit this summer included a set of 3-D printers, which we used to custom-3D-print name tags for fair-goers. An application was needed for placing orders and for automating the printing process.

Technical Details

Name tag order entry steps

  • On the Ordering Page enter the name to be printed on the name tag

  • A preview image is created and displayed

  • Approve/submit the name tag order

  • The order is added to the Order Queue

Name tag order processing steps

  • The Print Server checks every several seconds to see if there is a printer available (Active and Not printing)

  • The Print Server waits until there is a printer is available and there is a waiting name tag order

  • Assign the Order to the printer

  • Generate STL file

  • Slice the STL file, making a Gcode file

  • Upload Gcode file to the printer and set Printer state to "Printing"

When printer is finished

  • Web Server receives message from printer when printing is done and the operator pushes the Button

  • Order is removed from the Queue

  • Printer state is set to "Not printing"

What I Learned

  • I expanded my knowledge of the Spring framework and Java Beans

  • I learned how to execute background processes in web apps

  • I learned that you could execute OpenSCAD files with variables to programmatically generate CAD files

  • I learned how to use the Octoprint API

The Project's Story

I worked on this project together with my friend Tim Hollabaugh. In the first iteration of the project, Tim made a JavaFX desktop application that could take a name as an input, display a preview image, and then render and slice the name tag. Then I came onto the project and wrote Java code to multi-thread the application and allow it to upload the name tags to a printer. At this point we realized that for the application to perform the functions we needed, we would need to be able to handle multiple printers and be able to queue name tags. Part of the way through developing these functions, I realized that a web app would better suit our needs than a desktop application. So I re-implemented the code as a web app based on the Spring framework.