Categories

Monkeyprint — An open-source 3d print software

Monkey see, monkey print! In the previous post you saw an overview of the 3d DLP printer I contributed one or two bits to. Now, I’d like to share what exactly these bits were: An open-source print software that is easy to use (at least I hope so) and does the pre-processing and print control for DLP printers.

DLP printers are not exactly new. They’ve been around for a couple of years now and multiple commercial and DIY versions are available. Still, we were determined to build our own for various reasons: fun, customization to our needs, fun, honing our designing and programming skills… oh, and fun.

So how does a 3d DLP printer work?

The working principle is pretty easy and does not require overly complex mechanics. The only things needed are:

a projector (preferably a DLP projector, hence the name),

a basin with transparent bottom that can be tilted and is positioned above the projector and

a vertical linear drive above the vat carrying the build platform

In principle, it looks like this:

The DLP printer setup consists of three main components: the projector, the resin basin (vat) and the build platform. The projector is placed under the tiltable vat. The build platform enters the vat from the top and can be moved upwards to “pull” the print out of the vat layer by layer.

During the print, the same routine is carried out repeatedly, layer per layer. Check out the picture below:

The print process is fairly simple. First, the build platform is positioned one layer height above the vat floor (A). Then, the projector exposes the first layer (B) and the vat tilts to separate the freshly cured layer from the vat floor (C). After the build platform has moved up by one layer height (D), the next layer is cured (E). This routine will continue until the model is finished (F).

The process requires a minimal mechanical set-up (e.g. compared to FDM printers) and this — in combination with the print results — is the main appeal of the method.

The electronic set-up is simple as well: A PC will send the black-and-white slices of the 3d model to the projector via HDMI as well as build platform and vat tilt movement commands to a micro controller via USB. The micro controller will then enable the stepper motors accordingly. The only problem here was that I couldn’t find a nice, all-in-one software to do this…

Custom made 3d print software

The only thing missing was an easy to use print software that would do the things mentioned above: prepare an stl file, generate supports, slice the whole thing and carry out the print job by controlling the projector and the stepper motors for tilt and build platform.

The missing link in the print work flow was the software that would pre-process and slice an stl file as well as control the projector and stepper motors during a print.

There is a program called Creation Workshop, but it does not natively run on Linux since it needs Microsoft .NET and was not really stable using the mono runtime emulator. Other approaches are using Printrun (a Pronterface derivate as far as I understand) but that seemed to be pretty confusing and complicated and I didn’t like the interface.

So, after some fiddling around with bash scripts to control the printer — which turned out to be a disaster concerning usability — I decided that there had to be a different, more user friendly solution and ended up writing a Python GUI print software from scratch: monkeyprint!

Features, features, features…

OK, here’s what it can do in a series of screenshots:

Upon loading an stl-file your are able to position, scale and rotate it in the build volume. The model is tested for build volume fit and will be resized or repositioned automatically to fit the build volume at all times.Monkeyprint has a simple parametric pillar-and-cone support structure. You can modify the overhang angle, support spacing and geometry of the support pillars. The algorithm behind this is fairly simple and leaves room for improvements, yet it does a good job…The slicer is not only able to slice the compound of bottom plate, supports and model with an adjustable layer height — it can hollow the model keeping a user defined wall thickness and create parametric fill structures as well. The hollowness and fill structures drastically reduce the force needed to separate the model from the vat floor and thereby save the coating from tearing. Note how the fill structures move to prevent stressing the same spots over and over again…The print control allows for setting the exposure time for base layer and all other layers independently. It also implements a pause before exposure to allow the resin to settle after moving the build platform. During the print you’ll see a status bar including the remaining time.

Where can I get it?

I have uploaded to code to Github, you can find the repository here. It is licensed under the General Public Licence. You need Python 2.7, VTK 5.8 and OpenCV 2.4 in order to use it.

Be kind…

Monkeyprint has many firsts: it’s my first python code, my first GUI program and my first software to be published as open-source under GPL license — so bear with me if the code is neglecting best practices or simply lacks elegance. Feel free to comment on these matters though…

Oh, and in case you wonder: Testing the printer with the new program was done using Blenders monkey head model, so that’s where the name comes from…

Monkey king and his mutant army. Blenders monkey head model was used extensively for testing during printer and software development — hence the print software’s name monkeyprint.

Well, that’s it. There will be improvements on the code and explanations on how to use the print software in the following posts. Until then I’d be happy to hear your comments and feature suggestions. If you use the software, make sure to post your results and tell me how you got along!