As I mentioned in a previous post, we have encountered two problems with our design process using Mathematica that produce models that might not successfully print. I’ve found some ways to solve these problems using a free 3D design software package called Blender, and I’ll detail them here.
Thickening CountourPlot3D designs:
For some of our models, we are using Mathematica’s CountourPlot3D command to generate plots of algebraically defined surfaces. Here’s a simple example:
As you can see, Mathematica gives us a paper-thin representation of the cylinder, which will not work well for printing. (Mathematica’s various Thickness commands don’t work with CountourPlot3D.)
This problem is easily solved in Blender. After exporting an .stl file of my cylinder, I imported it into Blender.
Blender has a bit of learning curve, but there is a ton of good documentation and plenty of video demos online. For basic manipulation of your model, use the “G” key to “grab” your model, and move it around with your mouse. The “S” key does the same thing for scaling, and the “R” key for rotating. Two fingers on your laptop trackpad rotate your viewpoint; pinching with two fingers zooms.
To thicken this model, do the following. First, make sure your model is selected and outlined in yellow. You can do this by clicking on its name in the window at top right. You should also make sure that you are in Object mode (see bottom of main view window). At the top of the tall window on the right-hand side of the display is a row of icons:
Select the wrench, which stands for “Modifiers.” From the “Add Modifier” dropdown menu, select “Solidify.” Adjusting the “Thickness” option that “Solidify” gives (click on the Thickness number and drag to the right or left) will allow you to thicken your model.
When it looks good to you, hit “Apply” and Blender will update your model to the thickened version. Export your model (under File menu) as an .stl and print it!
To see a demonstration, try this YouTube clip, which is where I learned everything I know.
Dealing with Overlaps: Many of our models consist of several overlapping pieces, and Makerware has trouble with this.
Seen here in Blender, this pair of spheres is going to cause major problems for Makerware. I exported them, and produced .gcode printing instructions in Makerware, and then looked at the results in a .gcode viewer (following the instructions in this post). There I can see that when the printer is about halfway through printing this design, it will be printing slices that look like this:
You can see that Makerware has interpreted the overlap between these two spheres as “outside” rather than “inside” the model. It is not printing any support lattice in this area, and is not connecting the two ‘half-moon’ shapes together. When this model prints, there’s a very good chance that the two sphere pieces will not be connected together, and the whole thing will fall apart.
We can fix this in Blender, using some modifiers. First, I selected each sphere individually and applied the “Triangulate” modifier. This just helps the next step work better. (Sometimes, it may even be helpful to do some subdivide operations and then triangulate if the latter steps don’t work well.) Then I selected one sphere, added a “Boolean” modifier, chose the “Union” option, and selected the other sphere as the object to union with my first sphere.
This tells Blender to take the union of these two spheres. Just like in your math classes the union means “create a new object which consists of all points which are in one or both of the spheres.” Crucially, it doesn’t treat the points in both spheres differently from how it deals with those in one sphere. Hit “Apply” and delete the second sphere — you should be left with just one object — the two spheres joined together.
I selected the unioned spheres, exported them as .stl, ran them through Makerware, and examined the .gcode file, and here’s what I got for a slice about midway through the printing:
That’s just what we want! Now the printer will fill in the overlap of the two spheres will support lattice as part of the inside of the model, just like we wanted.
More complicated models have produced mixed results using union, but this should at least get us started. See me if you’re having any trouble, and I can try to help.