Permeable prints

In some cases you might want a 3D print with a very permeable structure. For example when using a 3D print as a mold for vacuforming, the permeability is used to transport the air out. Another example is when combining 3D printing materials with casting materials; in order to optimize the adhesion between the two materials, the casting materials permeates a bit into the 3D printed structure.

There are several ways in which to create such a structure. In this post I describe one which consists of a couple of simple Cura settings.

The idea is to print the whole object with infill only, so we set the Top/Bottom Thickness and the Wall Thickness to zero.
Then we set the Infill Pattern to Zig Zag and the Infill Density to 50%.

Now here’s the catch: we set the Infill Line Directions to [ 0,0,0,0,0,0,90,90,90,90,90,90 ]

We end up with a print which is rather porous and has little resistance to air flow.

I’ve printed one with TPU. Here’s the result.


Voxel models

Cura now supports voxel models, by loading in a sequence of images if the first image ends in a number.

The XY are stretched so that the object fits inside while the XY ratio is maintained.
The Z of the images is independently stretched so that all images cover the whole 3D model.

I’ve used it to create some prints which are based on DICOM files from CT-scans.

Note that the surface model is extracted from the DICOM files in a separate program (3D slicer).
I converted the DICOM files into standard png images using MATLAB.

Then I converted the images such that the highest density equaled the density I had set in Cura and a cropped them to where the surface model reached.

This is the result:

This is a sample MATLAB code:

files = dir('osseux/*.dcm');
for file = files'
path = strcat(file.folder, "/",;
a = dicomread(path);
min_val = 300.0 / 32768.0 + .5;
max_val = 1800 / 32768.0 + .5;
minn = min(min(a));
maxx = max(max(a));
a_mapped = uint16(int32(a) + 32768);
adjusted = imadjust(a_mapped, [min_val max_val], [0.0 1.0], 1.2);
[filepath,name,ext] = fileparts(;
outfile = strcat(file.folder, '/output/', name, ".png");
imwrite(65535 - adjusted, outfile{1});

Don’t blame me if this crappy hacked together code doesn’t work on your machine! 😉

Here’s a sample converted .cdm file:

Evaluation meeting

Today I had to present my Evaluation report, which covers the research topic, the progress and the planning (a.o.).

I got a provisional Go, which means that if I keep it up I can expect to continue my PhD research after the Go/NoGo meeting at 12 months into the research.

Variable Fuzzy Skin

I realized that after having implemented Fuzzy skin texture mapping I have never showed any examples using the method.

Perhaps this is an interesting line of research after all.

I’ve printed an example below to show the capabilities of the technology.
However, this is not really a good real world example.

This technique could be interesting for making the surface of a handle bar more rough to give it more grip, while keeping the rest of the object smooth.

Top of the can showing 3 different roughness levels:

Side showing the word ‘making’ in a more rough surface finish.

Side showing the word ‘in’ in a more rough surface finish.

Side showing the Cura logo in two different levels of roughness.

Making my chairs at home scratch-safe

I’ve been having trouble getting my chairs at home not to scratch my floor and after several failed attempts at solving the problem I have considered the solution which should have been obvious to me: 3D printing the anti-scratch thingies!

The final working design envelops the foot of the chair and plugs into the hole in the foot of the chair.

3D model file on YouMagine

By beautiful chair:

The bottom side of the leg:

The bottom side of the leg with the printed sock:

The top side of the leg with the printed sock: