What's New in 3D Printing, Part III: the Software

This article is the third part of a four-part series that examines some of the changes in 3D printing that have occurred in the past three years since my first articles on the subject. Because this is Linux Journal, instead of discussing the entire 3D printing world, I'm focusing on the sections of the topic most relevant to open source and open hardware. In the first article, I gave a general overview on the current state of 3D printing. In the second, I covered what's changed in 3D printing hardware during the past three years, including the shift away from open hardware and which printers still hold onto their open hardware roots. In this article, I discuss the changes in 3D printing software, and then in the final piece, I'll walk through setting up OctoPrint on a Raspberry Pi to control your printer remotely.

The software side of 3D printing three years ago was a model example of the power of open-source software. Just about any popular hobbyist printer you could choose used open-source software, all the way from the firmware (often Marlin) on the Arduino-based boards, to the software that sent Gcode to the printers (the Printrun suite of tools), to the slicers that took 3D models and converted them into the Gcode the printer understood (Slic3r and Repetier among others), to the software you could use to create the 3D models to begin with (OpenSCAD, FreeCAD and Blender, among others). All of this software ran on Linux, so you could work with every part of the 3D printing life cycle without proprietary software. As interest in 3D printing grew, the open nature of all the software helped drive a lot of the innovation we see today.

Unfortunately, if not predictably, as 3D printing grew in popularity and new companies entered the market driven more by profit than by the health of the community, we saw the software side of 3D printing close up and become proprietary, just as we saw with the hardware side. In many cases, a company would enter the market with a proprietary 3D printer but still rely on open-source software to drive it to buy time to write up a proprietary alternative. Just like we saw Makerbot start to close up its hardware designs, we saw once open-source software like Repetier (previously under an Apache license) switch to be closed source. A number of companies that produce commercial CAD software, such as AutoCAD, also have entered the consumer market with proprietary host- and cloud-based CAD software, along with software to slice 3D models and control the 3D printers themselves.

All this talk of proprietary software might make the software side of 3D printing seem rather bleak, but among all those clouds is some silver lining. While Printrun and Slic3r still are running strong, Ultimaker, the creator of the open hardware Ultimaker line of 3D printers, has released its own slicing and printer control software called Cura that has become the popular choice among many in the 3D printing community. Cura combines the 3D printer control features of Printrun (with a similar control panel, in fact) with a fast slicer and a sophisticated interface that makes it easy to view, rotate and scale 3D models before you print. Ultimaker even provides packages for a number of common Linux distributions so you don't have to bother building the software if you don't want to.

Although Cura was created for the Ultimaker printers, at startup, it launches a wizard that contains calibration settings for a number of popular 3D printers, including the full Printrbot line among others. In fact, Cura is now the recommended slicing and control software for Printrbot printers. Once the startup wizard completes, Cura knows the basic settings about your printer, such as the default size of the hot end, what size filament it takes and the overall size of the print bed. That doesn't mean you may not have to do some tweaking, however. In my case, I needed to modify the Gcode Cura used at the beginning and end of a print based on Printrbot's recommendations to make sure that the auto-leveler functioned appropriately and that the extruder counter reset properly.

The default Cura interface is relatively straightforward (Figure 1), and if you click Expert→Switch to quickprint, it provides a simplistic view that hides a lot of the more advanced settings you may want to tweak. In fact, it even hides the more advanced printer control interface in favor of something simpler. When printing an object in this simplistic mode, you just select among a few different quality settings that set reasonable defaults for speed and layer height. The main window gives you a clear view of any 3D objects you have loaded and allows you to use your mouse to rotate and move the option around as well as scale it up and down, much like with CAD software. One nice feature of Cura is that it not only slices very quickly, it also starts slicing the moment any setting changes instead of waiting for you to tell it to do it, so once you are ready to print the object, Cura likely already has generated the Gcode.

Figure 1. Default Cura Interface

Those basic printing presets are geared toward Ultimaker printers, so if you use a different printer, you probably will want to switch over to the advanced settings view by clicking Expert→Switch to full settings (Figure 2). In the advanced view, you can tweak just about any slicing setting you need once you settle on a configuration that works for your printer, and if that isn't enough, you can go into the expert settings window and tweak even more. When you get things exactly how you like them, you can save various profiles. This is particularly useful for some of the more exotic materials, such as Ninjaflex. I like to have a basic default profile for the normal PLA I use with average quality prints, and I've created custom profiles for Ninjaflex and for PLA with higher quality settings.

Figure 2. Advanced Cura Settings

The CAD world from the open-source perspective is one area that is still relatively similar to what it was three years ago. Tools like OpenSCAD and Blender still dominate, and OpenSCAD has seen variants like OpenJSCad that uses JavaScript as the language to build 3D objects. Most of the growth in CAD software appears to be on the free-in-cost-but-proprietary front from companies like AutoCAD that aim to provide a simple set of CAD features in a desktop or Web tool as an introduction to its more sophisticated suite of CAD software for sale down the line. Apart from the obvious downsides this presents to open-source advocates, it also means that although the .stl files these tools generate can be opened and printed by everyone, the source project files (which make modifying a model much easier, like a GIMP project file instead of a .png) require that proprietary software to open.

Three years ago, the primary site you would use to share and download 3D printed objects was Thingiverse. Although Thingiverse is still a popular choice, there was some community backlash a few years ago due to some changes to its Terms of Use that gave it more rights over user-submitted prints than some in the community were comfortable with. This prompted a backlash, and protesters uploaded protest statement objects to the site. One result of this controversy was that a number of other sites sprang up to share 3D models. The most notable one for the Open Source community is probably YouMagine, which is run by Ultimaker and is a popular choice by those in the Open Source community for sharing models.

The final interesting advance in open-source 3D printing software is a big enough topic that my final article in this series will be devoted just to it: OctoPrint. With the OctoPrint project, you can turn a Raspberry Pi (or really any Linux computer) into a standalone Web-based controller for your 3D printer. OctoPrint supports Webcams and the Raspberry Pi camera specifically, so you can watch the progress of your print from another room or another location entirely and take time-lapse videos of your prints. Even though I use Cura as my slicing software, and Cura easily could control my printer as well, I still use OctoPrint to manage my print jobs so I get the benefit of the video and the remote control. It's handy to start a print in my office and then be able to monitor it from the living room. If this sounds interesting to you, be sure to check next month's issue where I will describe how to set up and use OctoPrint in detail.

Resources

Cura: https://ultimaker.com/en/products/software

OpenSCAD: http://openscad.org

OpenJSCad: http://openjscad.org

OctoPrint: http://octoprint.org

______________________

Kyle Rankin is a VP of engineering operations at Final, Inc., the author of a number of books including DevOps Troubleshooting and The Official Ubuntu Server Book, and is a columnist for Linux Journal. Follow him @kylerankin.