Restart print at specified layer
-
Maybe this should be in firmware wish list, but I was wondering if there were some trick to do this already.
So overnight I was printing a large variable power supply enclosure and the nozzle must have met some resistance, as the Capricorn bowden tube had forced itself out of the extruder despite the retaining clip (I wish the outside wasn't quite as slippery as the inside). My office was nicely decorated with filament.
Despite this, what had been printed was fine, so if I could find the exact layer height at which it failed, it should be possible to restart the print, sure with artefacts, but I could clean it up afterwards. I could try and do this from the slicer and output a new file, tweak some settings to coax the printer into starting at the right height. It would be nice if there was some sort of macro/gcode console command to easily restart the print from a specific point, is there such a thing already? When you've been printing for 48 hours using x amount of filament, these failures are hard to swallow as I'm sure we've all experienced…
(Another wish list item for future hardware/firmware... possibility for a macro that could jog the print head to specific point on model > calculate where in the gcode this position/height is > go to xy home > heat up, wipe nozzle > start printing from specified point)
-
It's not automatic, but you could do the following:
1. When you detect the problem, pause the print. That will create a resurrect.g file.
2. Locate the point in the original GCode file where you want to resume the print from:
- Open the resurrect.g file in the System Editor and pick out the offset in the file where you paused the print. It's the long number in the S parameter of the M26 command.
- Open the gcode file you were printing in Notepad++, press control-G, in the popup box select "Offset", then enter the file offset. That should take you to the line where the print would resume from if you un-paused it. Now go back as many lines of the GCode file as you want until you find the position you want to restart it from, for example at the start of the previous layer change sequence.
- Place the cursor at the start of the line where you want to resume from, press control-G and select Offset again. The offset of that line will pre-populate the offset box.
- Edit that new offset into the M26 S parameter in resurrect.g.
3. Rename the resurrect.g file, because when you cancel the print it will be deleted!
4. After cancelling the print, rename it back to resurrect.g.
5. Then if you resurrect the print, it will restart from that point. Make sure you have set up your resurrect-prologue.g file first.
EDIT: added steps 3 and 4.
-
Awesome, thanks David, it's one of those thing that is certainly worth a punt on long prints where quality isn't crucial.