OpenSource Solutions for Computer Aided Engineering Blog

OpenSource Solutions for Computer Aided Engineering

The OpenSource Solutions for Computer Aided Engineering Blog is the place for conversation and discussion about OpenSource Computer Aided Engineering (CAE) resources available for modern personal computers. There are a myriad of solutions available in the marketplace for a number of different engineering and scientific applications, but it is not always easy to find the most appropriate solution for a particular circumstance, because many of the packages emanate from University research departments or Government development projects that do not have access to sufficient resources to publicize their products adequately. While the primary focus will be on numerical analysis solutions (FEA, CFD, Signal Processing, SPICE electronic simulation, etc.), we will occasional touch on other aspects of CAE such as Computer-Aided Drafting (CAD), 3D modeling, data acquisition (Test and Measurement, etc.), and other such technologies that can add value to the engineering process.

Previous in Blog: Hidden Treasures of Open Source Software  

OpenSource Rapid Prototyping (3D Printing)

Posted May 07, 2012 9:00 AM by cwarner7_11

From the RepRap Wiki:

"The RepRap project is an initiative to develop a 3D printer that can print most of its own components...As an open design, all of the designs produced by the project are released under a free software license...Due to the self-replicating ability of the machine, authors envision the possibility to cheaply distribute RepRap units to people and communities, enabling them to create (or download from the internet) complex products without the need for expensive industrial infrastructure..."

Current versions of the machine are driven by the Arduino open-source micro-controller, which in turn controls a stepper motor controller, the "RepRap Arduino Mega Pololu Shield" (RAMPS). It includes plug in stepper drivers and extruder control electronics.

Everything about the RepRap project revolves around the OpenSource concept, and, were one so inclined, one could build totally from scratch (with the exception, probably, of the Arduino micro controler) from plans readily available on the Internet. All of the required software to make the system work, from the firmware for the Arduino board to the communications software and the software required to create the g-code commands (same as used in conventional CNC) is available as OpenSource.

I am not quite so adventuresome, so I purchased a kit from an outfit recommended on the RepRap organization Buyer's Guide (apparently, there are some shady dealers out there offering "kits" that leave a little to be desired). I have a little over $1000 invested, after shipping and import duties, which is about double what the cost of building from scratch is reported to be. The particular kit supplier I chose happens to have a very active community on Google Groups. For those interested in the details of the supplier I chose (I do not want to mention any particular companies on this blog, per my understanding of CR4 policies), as well as the trials and tribulations of putting together a complicated machine without a proper instruction manual, a more detailed history of my experiences is available here.

Meanwhile, this is what the kit looked like when I received it:

and here is what it looks like after it is put together:

It took us about six days from opening the box to my first print (working in my "spare" time). Some soldering was required, but nothing beyond the skills of a hobbyist. I probably spent a good deal more time surfing the Internet looking for the right instruction sets and software packages than actually building the system (the bane of the OpenSource community!).


There are a number of elements to the software chain, referred to as the "Tool Chain", that must be put together to get things running, described nicely here. Here is a nice picture from the Wiki:

Which should look familiar to those who have read my previous blog on OpenSource CNC.

There are many different options for software for the Prusa Mendel, detailed in part here. This can get a bit confusing, because everyone has their own idea about the "best" solution. One of the issues that must be addressed first is what operating system one is using for controlling the machine. In keeping with the OpenSource spirit, I prefer the Linux operating system (specifically, Ubuntu 10.04 LTS 64 bit- experiences may vary with some of the newer approaches to the graphics desktop being bandied about, like Unity or Gnome 3), but others apparently are working quite nicely with Windows and MAC OS.

We have had a lively discussion in the past on OpenSource CAD packages, and virtually any package that is ultimately capable of generating *.stl files will serve the purpose- even the over-priced commercial packages, if this is your preference. I personally prefer BrlCAD because it uses a CSG (Constructive Solid Geometry) approach, which means one starts with primitive solid shapes and adds and subtracts other primitive shapes to arrive at the final object. OpenSCAD is also offers a CSG approach, but I have trouble figuring out where I am in model space, which makes it difficult to position objects. I have the same problem with FreeCAD. Salome is a nice package as well. My preference for BrlCAD or Salome probably is related to the fact that I am more familiar with these packages. Also, were I more interested in artistic subjects, I would probably prefer Blender, but I find Blender a real trial to use for engineering-type objects (although others have done some pretty impressive engineering illustration with Blender).

Once we have the design in *.stl format, we need to "slice" the model into layers and generate the g-code that will be used to pass instructions to the printer. The easiest approach would seem to be to go with the RepRap basic solution, referred to as the "Host Software" (available here), which also integrates the communications software required to talk to the printer. I immediately had problems with this package, in that it is Java based, and Java has lost it's "cross-platform" advantage ever since Oracle bought Sun- and I am not convinced Oracle is going to leave Java as an Open Source solution. Personal preferences here, compounded by the fact that the RepRap software did not build on the first go on my system, and I have no real motivation to pursue it.

We finally settled on Slic3r, apparently the new kid on the block, but intuitive and very easy to use. This program provides a well-organized GUI that helps set the parameters for the print:

Most of the settings actually don't change that much between print jobs on a particular set-up, and one can save preferred settings in a configuration file. Very detailed descriptions of the various settings and default values are provided on the website. Many "builders" also share their configuration files on the Google Groups site, to help you get started.

Once the settings are where you want them, hit the "Slice" button, the program asks for the *.stl file to operate on, then generates a g-code file ready to print.

Now that we have the g-code, we move on to the communications program. I have opted for a program called "PrintRun":

Pretty intuitive, but the available documentation is severely limited. There is an "Options" menu that allows for setting a number of parameters, but play with these at your own risk. One of the settings that came in handy was the "slicecommand" setting, which allows one to integrate the slicer program with the controller program (I describe how to do this in my detailed project summary). One must turn the extruder heater and the bed heater on to let them warm up, and I always test the extruder with the manual "Extrude" button before printing. When ready, select "Load File" which asks for the g-code file you generated in the previous step, then select "Print" and go off and have a cup of coffee. When you get back, you should have something that looks like this:

Actually, you will only get something like this if you happened to print the same object I printed. Also, bear in mind, this is my first attempt- the "Caged Ball" is my idea of a good "gauge block" for determining the capabilities of the machine. I need to do a lot of tweaking to get a better surface finish (or maybe change to a different material). But it illustrates several features, like plane surfaces, right angles, curved surfaces, bridging over open spaces. I had designed the model such that the ball would be free of the cage when printed, but found that, as the machine is currently calibrated, it could not hold the 0.5 tolerance I had used (I had to cut the ball loose with a hobby knife to achieve my original intent). I also found that the print varied a bit dimensionally from my original model, but all three axes are orthogonal to as close as I can measure by hand.

There is still a lot of tweaking to do, and lots of experimentation awaiting, but I feel this is a pretty good start...

The wife did inquire as to why I printed this particular object, since she could see absolutely no practical use for it. My response? "Because I can..."


Interested in this topic? By joining CR4 you can "subscribe" to
this discussion and receive notification when new comments are added.
Hobbies - CNC - New Member Hobbies - DIY Welding - New Member Engineering Fields - Electromechanical Engineering - New Member

Join Date: Aug 2007
Posts: 22991
Good Answers: 416

Re: OpenSource Rapid Prototyping (3D Printing)

05/07/2012 9:35 AM


Breeze over it, but have no time to look at your links yet.

can't wait.

“ When people get what they want, they are often surprised when they get what they deserve " - James Wood

Join Date: Nov 2007
Location: Tijuana, MX
Posts: 40
Good Answers: 2

Re: OpenSource Rapid Prototyping (3D Printing)

05/07/2012 11:55 AM

Awesome! I hope you do a follow up on this. I'm interested to see how tight a tolerance you can achieve when properly calibrated.

"Because I can..."


Reply to Blog Entry 2 comments
Interested in this topic? By joining CR4 you can "subscribe" to
this discussion and receive notification when new comments are added.

Previous in Blog: Hidden Treasures of Open Source Software