Another option if you dont mind glueing 2 halves together is to sink the model into the bed, upto the desired layer and reslice and print just the top part.
GregValiant 1,342
@DivingDuck's code will work. There is a typo in there (because the printer will only understand uppercase in a command or parameter):
"G1 X5.00 y295.00 ;then go to back of print bed (you need to set a value that match with your
;bed dimensions and where the print head do not crash into the model)"
What you want is doable. Understand that the end stop switches aren't terribly accurate and you could well get a layer shift because after homing, the X0 Y0 Z0 may not be the exact same point in space that it was at the start of the print. The layer shift can be up to 0.50mm in the XY.
@obewan's solution is also an option. Doing it his way means there would be no layer shift, just the location of the person setting the two parts together for gluing.
I'd go with Diving Duck's method. It's the one I use when I have to stop a print for some reason. Right now the partial print is scrap and trying to save it is a good idea and I have done it...but my success rate is about 50%. Obewan's solution would have a better chance of success so long as you can properly locate the top and bottom when you bond them. It would also be more forgiving of a height error.
Edited by GregValiant- 1
DivingDuck 105
Good catch. I had overseen that lower case y. My firmware have no problem with lower case but other firmware may have and for good measure it is always good practice to us uppercase letters.
Edit:
Forgot to mention I use both methods if things go wrong. @obewan's method is the last one I use if every goes wrong ( print error or filament shortage when I'm not there, power loss and cold print bed etc). This is then mostly the only solution to rescue a print somehow.
Edited by DivingDuckGregValiant 1,342
I wrote a routine into my Greg's Toolbox app that will start a print from any location in a file. It works well using the "byte location" to return to a specific line or layer.
Homing remains an issue when restarting a print unless it can be done quickly. When I start a print with M24 I always send M18 S14400 to max out the Stepper Disarm Time on my Ender. I get 4 hours to fix my screwup. I can even take a nap before I bother to get to it.
The app has a lot of real estate dedicated to restarting a print.
Edited by GregValiant
Recommended Posts
DivingDuck 105
This is bad. Back on track with the paused print isn't really possible. You need do it manually as new print.
The gcode file is a text file. Use a tool like Notepad++, Visual Studio Code etc. for editing. What you can do is split the gcode file at the height you did measure (look for G0 ... Zxxxx.xxx where xxx.xx is the print height), then add the start code and alter it to do heating, purging a bit of filament out of the nozzle and manual homing. Before you start the print you need purge a bit filament out of the nozzle in the air.
Homing X and Y shouldn't be a problem because your print head is above the print (or you need to move the head to an position where it do not interfere with the existing print). For Z you need to move the head somewhere to a position where you can freely move the head to 0 e.g in the back of the print head.
Don't forget to reset the E step counter before you continue the print ( to 0 if you print with relative extrusion or to Exxxx if you print with absolute extrusion) like G92 E0 or G92 Exxxx.xxxxx where xxxx.xxxxx is the value to extrude from.
Something like this:
; Manual edited code... ; e.g. Print stops at LAYER:2119 at Z249.935 ; Search for Z249.935 ; see line 5692869 to 5692878: ; line 5692869: G0 F600 X156.533 Y178.621 Z249.935 ; line 5692870: G0 F7200 X160.478 Y181.304 ; line 5692871: G1 F3000 E3704.29793 ; line 5692872: G0 F7200 X160.588 Y181.539 ; line 5692873: TIME_ELAPSED:413513.366218 ; line 5692874: LAYER:2119 ; line 5692875: G1 F3000 E3701.29793 ; line 5692876: TYPE:WALL-INNER ; line 5692877: MESH:SS_Cinderella Castle Disney .3mf ; line 5692878: G1 F3000 E3704.29793 ; ;FLAVOR:Marlin ;TIME:417622 ;Filament used: 205.143m ;Layer height: 0.15 ;MINX:2.669 ;MINY:70.295 ;MINZ:0.36 ;MAXX:347.334 ;MAXY:279.078 ;MAXZ:339.225 ;Generated with Cura_SteamEngine main M140 S65 M105 M190 S65 M104 S225 M105 M109 S225 M82 ;absolute extrusion mode M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration M203 X500.00 Y500.00 Z10.00 E50.00 ;Setup machine max feedrate M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk M220 S100 ;Reset Feedrate M221 S100 ;Reset Flowrate G92 E0 ;Reset Extruder ;G28 ;Home ;G29 ;Automatic Leveling G28 X Y ;First home Axis in x and y G1 X5.00 y295.00 ;then go to back of print bed (you need to set a value that match with your ;bed dimensions and where the print head do not crash into the model) G28 Z ;Now home z G1 Z252.935 ;move the head a bit higher as the print was (e.g. Z252.935 if the print broke at 249.935mm) G1 X5.00 Y5.00 ;move the head to a start position outside the print (e.g. G1 X50 Y100). G1 E20 ; extrude 20mm filament to be sure to have filament ready. You need to remove that. ;G1 Z2.0 F3000 ;Move Z Axis up ;G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position ;G1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line ;G1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little ;G1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line ;G92 E0 ;Reset Extruder ;G1 Z2.0 F3000 ;Move Z Axis up G92 E3701.29793 ; Preperation, set E step counter to last known absolute value (wherever ;it was when the print failed at layer xxx) G1 X160.588 Y181.539 ; Preperation, set x,y to last known position G1 Z249.935mm ; Preperation, set z to last known position ; now delete all lines in a copy of the original file from line 1 to line 5692873 and insert this ; new start code at line 1
newStartCodeTemplate.gcode
Link to post
Share on other sites