Jump to content
Ultimaker Community of 3D Printing Experts
tonycstech

2 ways to resume print from last layer

Recommended Posts

Due to new filament extruder, my filament is far from perfect and gets jammed in the nozzle from time to time preventing me to complete my print 100%.

So, to avoid having to reprint the model from a scratch and replacing the tape and wait time to heat the bed and cry over wasted filament i decided to just resume the print from its last layer.

CURA and CRAFTWARE making it really eazy so why not post a tutorial.

NOTES:

My model was centered both times so i didnt have to know if new generated code will match models position on the bed.

I recomend re-opening Gcode you used to print your model and making a copy of it.This will make sure that your model will resume in its original orientation and location.

:cool: Yes you can turn off your printer and come back doing it tomorrow. :cool:

METHOD #1

#1 Look at your model and find easiest spot from which to count layers.

#2 Count layers from the eazy spot (as described in step #1) using a toothpick or a needle for accuracy.

#3 Open Gcode used to print this model (if you 100% sure orientation and location are the same, you can generate new one, just make sure all parameters are the same)

#4 Go into layer preview mode and find your easy to spot layer (as described in step #1)

#5 Add what ever number of layers you counted (as in step #2) to currently viewing layer.

#6 Due to the nature of CURA starting layers from 0 (Brim and Raft have negative values and need to be concidered as well when editing Gcode) drop 1 number. For example: Your print failed at layer 44. Drop 1 number and your target layer is 43

#7 Open Gcode in text editor (or what ever) and search for ;LAYER:X (X is the layer number you determined)

#8 Delete everything before this layer leaving parameter values such as temperature/home for XYZ etc all the way down to M117 Printing...

Your code should now look something like this:

 


M109 T0 S240.000000
T0
M80
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G1 Z15.0 F13200 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E3 ;extrude 3mm of feed stock
G92 E0 ;zero the extruded length again
G1 F13200
;Put printing message on LCD screen
M117 Printing...
;LAYER:43
G0 F13200 X92.25 Y136.17 Z13.20
;TYPE:WALL-INNER
G1 F2700 X91.17 Y136.16 E4987.93047
G1 X84.75 Y136.16 E4988.28186
G1 X84.75 Y134.41 E4988.37760
G1 X101.42 Y134.51 E4989.29061
G1 X123.58 Y134.51 E4990.50320
G1 X140.25 Y134.41 E4991.41615

#9 Make sure that line with (below)

 


G1 Z15.0 F13200 ;move the platform down 15mm

has Z value higher then Z value for the layer you resuming from (below)

 


;LAYER:43
G0 F13200 X92.25 Y136.17 Z13.20

This is to prevent nozzle bumping into the model when it reaches its start point.

#10 Save the Gcode and print using newlyu saved/modified Gcode.

METHOD #2

#1 Move nozzle away from the model allowing it to touch the build platform.

#2 Home your Z axis.

#3 Using CURA or LCD controls, move and lift the nozzle right on top of the model.

Write down the distance you had to lift the nozzle. (for example 43.5mm)

#4 Open Gcode used to print the model and search for (Z43) do not specify the 5 because it may be 3,4 or 6 or 7 depending on your print layer height.

Found result shoud look like this

 


;LAYER:43
G0 F13200 X92.25 Y136.17 Z43.6

#5 If you print at 0.1mm layer height, then you need to match exact height, if not, then you need to pick the closest one. I print at 0.3mm so closes to my estimated 43.5 height is 43.6 and previous layer would be 43.3 (obviously -0.3)

#6 You want to find the lilne where next layer start. This is becayse you dont want to start printing from this layer but from the next. So scroll down untill you find ;Layer:44 (in this example its 44)

#7 Delete all layers before layer 44 leaving general print parameters (see example below)

 


M109 T0 S240.000000
T0
M80
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G1 Z15.0 F13200 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E3 ;extrude 3mm of feed stock
G92 E0 ;zero the extruded length again
G1 F13200
;Put printing message on LCD screen
M117 Printing...

#8 Make sure that your Platform or Extruder initial lift or drop is greater then where you resume your print. In this example, print resumes at 43.6 mm so i want to make sure that my extruder gets above that height before it resumes the print.

I do this by editing this line and changing Z15.0 to Z45. Nearly 2mm's higher

 


G1 Z15.0 F13200 ;move the platform down 15mm

#9 Save your file, reupload to SD card or print from CURA, how ever you want.

#10 Watch your print. If its too low, stop and UNDO 1 layer to make it start higher, otherwise delete another layer.

 

 

  • Like 2

Share this post


Link to post
Share on other sites

Excellent writeup!

One problem with this:

 


;Put printing message on LCD screen
M117 Printing...
;LAYER:43
G0 F13200 X92.25 Y136.17 Z13.20
;TYPE:WALL-INNER
G1 F2700 X91.17 Y136.16 E4987.93047

The red part above will have the extruder try to rotate 4.9 Meters of filament! So you should add a

G92 E4987.93047

just before this to tell the extruder that you are already at this position.

I like your method #1. I have only tried method #2. I never tried counting layers from a known layer! smart!

 

Yes you can turn off your printer and come back doing it tomorrow

 

Well on the Ultimaker2 if your bed is not at room temperature then you must leave the printer on and keep the bed at the same temperature. But yes, I've done this. Gone to bed and continued the print the next day. So if your bed is at 60C you MUST KEEP THE BED AT 60C UNTIL THE PRINT IS DONE. If not it will very likely pop off the bed when it gets cold.

Here's my version of the same thing:

read all gr5 posts here:

http://umforum.ultimaker.com/index.php?/topic/4213-ideas-for-recovering-failed-prints/?p=34788

post #9 here has specific code change example for um2 (ultigcode):

http://umforum.ultimaker.com/index.php?/topic/5269-um²-printing-more-than-24-hours-non-stop/?p=46704

 

 

Share this post


Link to post
Share on other sites

 


The red part above will have the extruder try to rotate 4.9 Meters of filament! So you should add a

G92 E4987.93047

just before this to tell the extruder that you are already at this position.

 

Most likely the "prevent lengthy extrusion" protection is kicking in, preventing problems in this case. But I wouldn't relay on that and it would be better to add the G92

 

Share this post


Link to post
Share on other sites

I update my program to allow users to select starting and ending layers (as range) to be removed from the code and saved as new file (preserving original code unchanged in case of need make changes)

It also has height search function to find what layer has given height.

Newest version is here

http://umforum.ultimaker.com/index.php?/topic/4185-tweak-at-layer-number-windows-application/

Hope you guys find it usefull.

 

Share this post


Link to post
Share on other sites

I'd also suggest slowing the printer down when it resumes, to make it more likely that the first new layer will adhere to the existing part. After the first few layers are down, it should be okay to turn the speed back up.

And is there any way to compensate if the new layers are shifted out of position when the print resumes? I was having a nice and successful 40 hour print:

DSC00599 crop

...up until this thing (I think it's a piece of fur from the cat) managed to make it all the way to the nozzle and then decide that it wasn't going to go any further:

DSC00606 crop

 

I managed to track down the right layer to resume from and edit the Gcode, but the new layers are all shifted back a few mm from where they should be:

DSC00603 crop

Is there some way to correct that sort of thing when editing the Gcode?

 

Share this post


Link to post
Share on other sites

Slowing down print ? I print large objects with cooling fan on. By the time 1/4 of the layer is printed, rest is already cold.

Dont think it matters.

Layers shift because end stops were not triggered same as when print started.

I had it happen to me few times.

I forced the bed/extruder to move to where i need. I was off by very little.

Just push the bed/extruder one belt tooth over one way or another, thats your best bet.

Otherwise you need to tweak your endstops.

If you were printing angels, print would not get ruined. Try printing something less satanic :mrgreen:

 

Share this post


Link to post
Share on other sites

I've already got success in restarting a printing job using method #2, however, I was just wondering why Cura does not log in a file the layers that were successfully completed. It would make our lives much easier when restarting a jog. Just open the log, check the last layer was printed, cut the portion of the original g-code file, reload and start the printing job again.

What no log is created by Cura while printing? (or if it's created... where it is?)

 

Share this post


Link to post
Share on other sites

It doesnt know the layer was "properly" printed. The human eye tell that its good or not but not the machine. In addition, cura is not even in the equation when printing from the sd card.

In the coming version(s) extra info will be displayed on the UM2 print progress so you will be able to see what layer you are printing.

Share this post


Link to post
Share on other sites

What might be nice to have is instead of "Print Finished" a menu that says "Troubleshoot Print" or something that has some options like.. resume from layer, move to layer, set extent (set extent being setting the position of the head by finding the furthers point in one of two directions and using the wheel to position X and Y over that point, to avoid layer shifts when starting over)

It's great we'll be able to see the layer as it prints, but for me and other posts I've seen these problem occur when we walk away on very long running prints.

Share this post


Link to post
Share on other sites

Has anyone done this with Cura 2?  I have a large print which ran out of filament overnight.  I've worked out I want to restart on layer 510.  Here's the start of the original file

 

;FLAVOR:UltiGCode;TIME:300436;MATERIAL:909681;MATERIAL2:0;NOZZLE_DIAMETER:0.6;Generated with Cura_SteamEngine 2.1.3;LAYER_COUNT:999;LAYER:0M107G10G0 F9000.000000 X5.962 Y40.132 Z0.400G0 X6.110 Y40.115;TYPE:SKIRTG11G1 F1800.000 X6.515 Y40.087 E0.09256G1 X6.550 Y40.085 E0.10055G1 X7.189 Y40.077 E0.24626

 

I tried editing that like so ( changing the starting Z to be 20 mm above the print ) but it looked as though it was about to crash before I switched off the power!

 

;FLAVOR:UltiGCode;TIME:300436;MATERIAL:909681;MATERIAL2:0;NOZZLE_DIAMETER:0.6;Generated with Cura_SteamEngine 2.1.3;LAYER_COUNT:999;LAYER:0G0 F9000.000000 X5.962 Y40.132 Z132.600G11 ;unretractM107 ;fan off ( switch it on at layer 511 )G92 E3167.82512  ;very important step - this is the last extruder position on layer 509;from here nothing is changed;LAYER:510G10G0 X202.930 Y114.190 Z112.600G0 X202.439 Y114.120G0 X202.414 Y114.090

 

Any suggestions?

Edited by Guest

Share this post


Link to post
Share on other sites

I have a problem that I believe is caused by my Z offset. I have it set very high to compensate for an auto bed leveling sensor. (2.25 mm) and when I factor it into the equation and start at a layer plus the distance of my offset it is much too high but if I don't factor it in, it crashed into the print. I used a layer height of .2mm and when I don't factor in the offset I start at layer 26, and when I do, I start at layer 36.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Terms of Use Privacy Policy