Just thought I’d type type this up briefly. The tl;dr is I was able to recover a failed print due to a clogged nozzle by clearing the clog, and then editing the gcode to start a “new” print exactly where it left off.
I have a pretty good calibration and decent slicer settings, but I printed an object for maximum strength using settings I haven’t tested before. It was going to be a 16 hour print, and I was only able to watch it run for about an hour before I had to go to bed. As I was headed to bed, it looked like it was possibly going to have an overextrusion issue, but I couldn’t tell what, if anything, needed to be changed.
Well, woke up, checked on the print, and it looks like after about 30m of filament were used there was a clog, the extruder gears chowdered the filament, and it started air printing.
The cause of the clog was overextrusion - the print changed geometry and all of the small amount of overextrusion was concentrated into a small area, completely blocking the nozzle, causing the gears to strip. This happened abruptly, so the rest of the model was still in good shape.
So I stopped the print, and did a cold pull. That was able to get all of the bits of ground up filament out of the nozzle, and afterwards I could easily feed filament through manually and it came out nice and round and smooth.
Next I brushed off the print to remove stringing filament as the nozzle was starting to clog. The rest of the print was in good shape and worth salvaging.
The model was sliced using Simplify3D, but Cura has similar features to what I’m about to describe. Measured the height of printed perimeter with a micrometer, and found the corresponding layer in S3D.Then I located the exact line it was printing (at least within a few mm) by replaying that layer in the preview, line by line. The exact line was 93,066, as reported by S3D.
Copied the gcode file and modified it. First, went to the last good printed line, 93,066 and looked up the file. Found the previous G92 E0 command, and changed it to what the previous extrusion was on line 93,065, which was E115.7035, and deleted all of the gcode in between, so when the print starts it won’t extrude 115mm of filament.
Then I scrolled up the the previous Z definition, and feedrate definition and modified the file so the print would go to the correct Z and set the correct feedrate.
Ultimately, I just kept the initial gcode where it sets temps, and homes. Then the file sets the XYZ position, feedrate, sets the extruder position with G92, and then continues.
Even though I restarted the print on the touchscreen after uploading the modified gcode, I kept the computer connected to the USB port with the S3D machine control panel open.
For the next 30 minutes I watched the layers get printed, while I made small adjustments to the flow rate. Since the touchscreen does not allow you to set the flow percentage during a print (using M221), I used the S3D control interface, but I have also done it just with a terminal and sending M221 commands.
If the print started becoming over extruded I would drop the flow percentage, if it looked underextruded I’d raise it. Eventually, after enough small tweaks the surface levelled out and the final flow percentage for this print turned out to be 95%.
This print is 100% solid infill, which clearly my slicer settings are not perfected for - I suspect S3D’s infill overlap percent that I currently use of 21% is too high for 100% infill. More testing will be required to see if this issue can be permanently fixed without affecting other types of infill densities.
Thanks for attending my TED talk.