Friday, October 2, 2015

3D Printing: Precise Color Changes: Step-by-Step Part 1- Planning

Last week, I described the overall process that I used to make quick color changes with my printer. This week, I'll show you exactly how these color changes are done.

The underlying principle is that the excess filament should be put somewhere that is out of the way of the rest of the print while the colors are changing. This consists of these actions:

1. Move the hotend above the print
2. Move it over to an area that is not occupied by the print
3. Begin printing a cube that is large enough to contain the filament already in the extruder and what needs to be switched
4. Switch the filament by hand
5. Let the cube finish printing
6. Move the hotend above the print
7. Return to the print




Setup


For this example, we'll be looking at the ever-popular CuteOcto design, and we'll make it part orange and part grey. We'll be using Slic3r 1.1.7, which is, in my opinion, one of the most stable and predictable updates to date.

You'll also need a filler cube STL. Mine is 14mm by 14mm by 16mm, and at 95% infill, it prints out about 170 mm of filament. This is usually enough for the print to change colors.


G-code generation

The first thing to do is to generate the CuteOcto g-code from its STL.


At 30% size, the CuteOcto file is approximately 25 mm square, and I'm putting it in the center of my printer's bed (coordinates: 70 mm Y, 95 mm X).

All other settings are pretty much irrelevant (infill, supports, etc) unless it affects the footprint of the print. Loops, however, do cause a change in the footprint. This print will have 3 loops 6 mm out around it, creating a larger footprint of about 47 mm square. We'll call it 50 mm square, just for an added safety margin.


One crucial thing to do before exporting the g-code is to add the commented line

; LAYER CHANGE

in the "Layer change G-code" category. This will make finding the precise layer that you want to change at later much easier. (A g-code comment is any line that starts with ";".)


Another quick thing to note is the layer height. This will make avoidance of the printed parts much easier. Here we can see that there is a starting layer height of 0.12 mm and a layer height for the rest of the print at 0.2 mm. Now we can generate the g-code.

Next, we need to generate the filler cube g-code from its STL:


Note that the filler cube needs no loops around it- that is to get the filament started and is unecessary for a piece in the middle of the print, such as this one.

The filler cube is approximately 15 mm square, so to print it far enough out of range of the CuteOcto print means that its center must be the distance of half of the CuteOcto plus the distance of half of this print away.

I want to put the cube on the left of the CuteOcto, so I will subtract to get the final answer for the X-coordinate.

The center of the CuteOcto print is at 95 mm X. Minus half the width of the entire CuteOcto print (50 mm / 2 = 25 mm) equals 70 mm. Minus half the width of the filler cube (15 mm / 2 = 7.5 mm) equals placement at 55 mm X at the minimum. I decided on placement at coordinates 70 mm Y, 40 mm X just to add some wiggle room in case I need it. (My extruder has a 25 mm radius, so I need to watch out for that as well.

Now moving on to the combination part!