How to recover a failed or paused 3D Print. - Draft

**Sorry about the wall of text.  Working on some interesting pictures, but had a few people asking and wanted to get a draft posted.  Feel free to message me to poke at any aspects so I can correct.**


Home user?  Design, slice, print, wait...  wait...  POWER OUTAGE!  swear your head off.  Start from the beginning.    

Happened to you?

Institutional user?  Student comes to you with a print, you start it, then realize that the day is almost over, there are still two hours left in the print, and you're not allowed to leave the printer running unattended.  

Sound familiar?

3D Printing is awesome, but sometimes things go wrong.   A few printers have after market add ons or software modifications that give you the ability to resume a print after a failure or to resume a print after a power cycle.  What can you do if you need to have an extended pause or resume a print after failure if you don't have these features?

A few months back, our friend Vicky of TGAW3D published her solution to this problem.  Her method involves Simplify3D software to generate the code and connection over USB to determine the object height.  It is a great method if the specific set of conditions apply to your situation.  

A few weeks ago, I had the opportunity to come up with a different method.  I'm sure I didn't invent this method since it seemed pretty obvious after the fact, but it was new to me, and I figure it might be new to some of you as well so I'm sharing.  

Here's the scene:

It was a stormy day at Printed Solid HQ.  We were busy running all the printers preparing for Dover Comicon 2016.  The weather looked so nasty that I had superstar summer help Jack run extension cords all around so that the printers running longer prints were on UPS.  


We were printing a Tardis on the Lulzbot Mini and cool stuff on all our other machines.  

The storm ended and it was time to go home for the day.  

There was no power outage and no power surge (perhaps thanks to the UPS).  I walked around turning power off on all the printers...  including the Mini that still had only about 15 minutes left.  AAARRRGHHH!

I immediately realized my mistake and confessed what I had done to Jack.  Then I turned the lights out, locked the doors, and went home frustrated that I had lost all that printing time.  

During the night, I reflected on what Vicky had done in her video and decided I could save that print, but I hadn't sliced it in Simplify3D, so I couldn't quite use her method.  

In the morning, I tried out my method and it worked great.  I didn't document anything at the time, but I've recreated the scene on the Ultimaker Go.  

Here are some instructions to repeat what I did on your printer.  

0)  Before doing anything, manually set the bed temperature to whatever it is presently at so that it doesn't pop the part off the plate  i.e. If the bed is all the way down to room temperature, leave it there.  If the bed is still sitting at your printing temperature, leave it there.  If it has fallen to some random number in between, leave it there.  

If the build plate has cooled down to room temperature, do not heat it back up.

Reason for this is that every time your bed changes temperature, it stresses the interface between the bed and the bottom layer, which will make it more likely for your part to pop off.  (as an aside, one trick for removing a really stubborn print is to heat and cool the bed several times)

1) Measure how tall the incomplete print sitting on the bed is.  Using the depth gage on calipers is a great way to do this pretty accurately.

{insert picture here}

2) Open your gcode in a text editor and search for the z-axis move nearest to what you measured.  You have a choice here.  You can either choose to go to the exact number (if you find it) or one layer below OR one layer above.  Going to the exact number or one layer below will potentially give you a small ridge in your part whereas going above will likely give you a weak point.  In most cases, you will want to choose the exact number or one layer below.  Choose wisely.

3) Copy all text from the line identified above all the way to the end of your code and paste it into a new file.  

4) Add in the following lines at the beginning of the code:

M17 ; engages the steppers


G92 E0 ZX; where X is the z-height of the line selected in step 2.  This will tell the printer that the height the head is currently sitting at is X.

G28 X0 Y0; this will home the printer in X and Y direction.

M109 SX; where X is the temperature you are printing at 

G1 E6; this will purge some filament from the nozzle

M106 S255; This line will be unnecessary in some slicers where your fan speed is adjusted with layer time or by feature type.  This assumes you are running PLA at full cooling.  If you are running a different material, adjust to a number between 0 and 255 to reflect % cooling you are using.  

Now save this file as something like OLDFILENAME_RESCUE.GCODE

5) Now you need to adjust the nozzle height so that it is approximately at where you want the print to resume in the z-direction.  Do this using either the move menu on an LCD or via USB control in your control program if moving via LCD isn't applicable to you.  Or you can just manually turn the lead screw.  After you've moved the nozzle to the correct height, leave it there.

6) Load the code you've generated onto your printer using SD, upload, or whatever applies to you.  

7) Press print.  If it doesn't purge out some filament prior to moving over to the part, turn the power off, check your code, and try again.  If all is going smoothly, stay at the printer through the first few resumed layers just to make sure everything is going OK.   

8) Bask in the glory of not losing all that filament and time!

9) Wait for print to complete.  Remove from build plate.  Take a victory lap around the room, and then tell everyone you can think of how awesome you are for saving that print.  


I'll end this with a caveat.  There are some printers that will not tolerate this method and some that may require further post processing steps.  For example, the Makerbot derivatives using the X3G file type need the gcode to be converted into that format and some other printers have their own proprietary formats (boo!) so be careful and try not to be too dissapointed if this doesn't work for you.  You may also find some funkiness with autoleveling setups depending on exactly how the print failed. Maybe you can take the idea and improve on it for your machine.  Feel free to comment if you've done so I can add your machine specific tips to the writeup.  




Back to blog