Is there someone who has experience with pausing a print to continue the next day?
I mean pausing on some point, turn the printer and computer off and continue some other time. Do you have to cut the G-code in two?
It would be nice to have this option for large prints since I won’t let the printer print overnight.
Maybe you can cut the 3D object into two or more pieces? Afterwards, you just glue these pieces together with superglue. This same trick can help with difficult to print models as well.
[quote=“svdv”]I mean pausing on some point, turn the printer and computer off and continue some other time.[/quote]Some printers have that option, but not the Vertex.
You can cut the object with Netfabb basic (and then you’ll have to repair each half of the object with the same software to close the surfaces)
I am experimenting with cutting the G-code in 2 halves. So far I have good results but I am not a coder so everything goes by trial and error and the RepRap-codes wiki.
I can’t find out how the settings for ‘First layer height’ and ‘First layer extrusion width’ are translated in the G-code. Those two has to be disabled at the start of the second part of the G-code.
Can somebody help me?
Hello,
it is at least in theory possible by editing the G-Code. There are two ways on how to do that. But both have a strict requirements that have to be fulfilled for it to be possible
The first one requires close to perfect homing. It should probably be within 10 micron in every direction, otherwise the hotend either crashes into the old part or plugs the nozzle or the new layer is shifted. Also, the object has to be far enough to the front left, so that is does not collide with the head and the rods when it homes.
This method would be far easier if the home position had the print bed at the bottom.
The second method requires that the hotend is in the exact same position as it was when the machine was turned off. This position is basically a manual homing. (does not work, see below)
As you might have seen by now, the G-Code basically consists of three blocks. The start and the end are predefined in the Cura settings in the “G-Code” tab. The middle is generated by Cura by slicing the model up in accordance with the settings for layer height etc.
Here is an example of a G-Code file:
;Generated with Cura_SteamEngine 14.09
G28 ; Home extruder
G1 Z5 F600
G1 Z0 F600
M106 S165 ; Turn on fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
; Activate all used extruder
M104 T0 S200
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
M109 T0 S200
T0
M83
G1 E10 F100
M82
G92 E0 ; Reset extruder position
M117 Vertex is printing
G1 F1000 Z5
;Layer count: 189
;LAYER:0
M106 S255
G0 F9000 X70.370 Y89.362 Z0.210
G0 X72.489 Y87.856
;TYPE:SKIRT
G1 F1200 X73.482 Y87.299 E0.04773
G1 X74.615 Y86.767 E0.10021
G1 X75.780 Y86.323 E0.15248
G1 X76.966 Y85.964 E0.20443
G1 X78.175 Y85.694 E0.25637
(...)
Everything before “;Layer count: 189” is predefined in the Start G-Code.
If you cut the file in half this has to be added (in a modified version) to the second part.
Same with the end:
code
G0 F9000 X84.139 Y96.761
G1 F2280 X87.049 Y99.670 E682.79434
G1 F9000 E678.79434
G0 X87.049 Y99.670 Z25.000
; Disable all extruder
G91 ; Relative positioning
T0
G1 E-1 ; Reduce filament pressure
M104 T0 S0
M104 T1 S0
G90 ; Absolute positioning
G92 E0 ; Reset extruder position
M140 S0 ; Disable heated bed
G4 P30000 ; wait to cool down hotend
M107 ; Turn off fan
M84 ; Turn steppers off
T0
T1
T0[/code]
Everything after “;Disable all extruder” is predefined an has to be added to the end of the first part.
1. Method with homing
The really interesting part in the start of the file are the following:
G1 F1000 Z5 lowers the platform by 5mm after purging the hotend
- and -
after “;Layer:0”
G0 F9000 X70.370 Y89.362 Z0.210
The hotend moves to the defined x and y positions while the bed moves to 0.210mm below the homing position, which of course is up from the 5mm it was before. Everything is in absolute positions.
The 0.210 is here the first layer height (in my case 0.21mm)
The important part is simply that after heating up and purging the nozzle that bed is lowered more than would be necessary to move to the start position.
This has to be repeated, but now with a value that is well above the last printed layer.
Let’s say I want to cut my example file after Layer 130, I simply look for the comment “;Layer:131” in the G-Code
code
G1 F1080 X77.875 Y107.662 E469.94119
G0 F9000 X77.930 Y107.579
G0 X84.674 Y107.563
G0 X84.875 Y107.563
G1 F1080 X84.875 Y97.436 E470.09282
G0 F9000 X86.625 Y99.334
G1 F1080 X86.625 Y105.667 E470.18765
;LAYER:131
G0 F9000 X87.690 Y106.319 Z13.965
G0 X86.479 Y107.853
G0 X86.279 Y107.665
;TYPE:WALL-OUTER
G1 F960 X86.643 Y107.288 E470.19550
G1 X86.979 Y106.885 E470.20335
G1 X87.283 Y106.459 E470.21119
(…)[/code]
Note the Z-postion after the comment:
G0 F9000 X87.690 Y106.319 Z13.965
So the z-postion for the next layer is 13.965mm. If we cut here, and insert the start g-code from before, the line for the 5mm “lift” has to be altered to be ~5mm or more above the last layer. How much doesn’t really matter as long as it’s more.
G1 F1000 Z5 becomes now G1 F1000 Z19 (close enough to 5mm above 13.965)
So the new start code for the second file is:
G28 ; Home extruder
G1 Z5 F600
G1 Z0 F600
M106 S165 ; Turn on fan
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
; Activate all used extruder
M104 T0 S200
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
M109 T0 S200
T0
M83
G1 E10 F100
M82
G92 E0 ; Reset extruder position
M117 Vertex is printing
G1 F1000 Z19
;LAYER:131
G0 F9000 X87.690 Y106.319 Z13.965
G0 X86.479 Y107.853
G0 X86.279 Y107.665
;TYPE:WALL-OUTER
G1 F960 X86.643 Y107.288 E470.19550
G1 X86.979 Y106.885 E470.20335
G1 X87.283 Y106.459 E470.21119
(...)
But, as you can see, the hotend moves to home position first, that’s why there can not be any obstruction. This also has to be considered in the end g-code of the first part, because all axes move at the same time. If the head was front left above the object, it would crash into it when homing. So the head has to go out of the way before the machine is switched off for the night.
The end code has to be modified:
; Disable all extruder
G0 F1000 X200 Y200
G91 ; Relative positioning
T0
G1 E-1 ; Reduce filament pressure
M104 T0 S0
M104 T1 S0
G90 ; Absolute positioning
G92 E0 ; Reset extruder position
M140 S0 ; Disable heated bed
G4 P30000 ; wait to cool down hotend
M107 ; Turn off fan
M84 ; Turn steppers off
T0
T1
T0
G0 F1000 X200 Y200 was added here to move the hotend to the rear right position, which is right above the homing position. Therefore X and Y don’t move significantly when restarting and it can be checked whether the head or the rods would collide with the object when the bed moves up.
Your Start and End G-Code might look different, but that’s the basic idea.
2. Method: Telling the machine where it is
This doesn’t actually work, but in theory it would be possible to move the head to a known position, make sure it does not move over night and simply tell the machine where the head is instead of homing. The problem is that the steppers move a little when power is reconnected. And additionally the purging would now not work as the head is in mid air. The molten blob could be picked up with pliers, but if just a little mistake is made, the blob just sticks to the hot end and might ruin the print.
It would also be possible to measure the position, but that would be far more work than glueing two parts together and prone to mistakes as the measurement has to be exact to at least 0.01mm
EDITAnd to answer your second question about first layer height and extrusion width: It does not matter, because as all steppers are moved to absolute positions, it is included in the code for layer:0, not in the actual start script.
The absolute positions are also the reason why the numbers for the extrusion (G0 … Exxx) are very large in the end of the file.
Happy printing
Hi Sverenja,
Thank you very much for your detailed explanation. I am going to study it…
I had some good results with small objects, but indeed, it’s about the large ones.
It is quite a challenge. I will report my progress in due time.
Yeah,
Really nice detailed writeup Sverenja!
Kind regards
JeAfKe
Hi Sverenja,
Finally I had some time to study and try your instruction, it’s clear, thank you very much. Still printing small objects so I don’t have to wait so long to get the results, but the prints are very well.
Still I have some small issues to improve and was hoping you will have thoughts about it:
-
When starting the second half on the right place (inner wall), the extruder rattles for a moment (about 10 mm print) and gives to much filament. After that it is ok, but it leaves a little blob inside the object.
In the G-code, directly after the the first layer:x, I added G1 F9600 E-4.00000, but it doesn’t make any difference. -
In the end of the first half, why can’t the hotend moves to the X and Y home position? Instead of staying somewhere rear-right.
After your X200 Y200, I added the line G28 X Y to try, but it doesn’t do anything.
I can’t code… that’s clear
Edit
ad 2: This item is solved. I had wrong parking positions in the settings.
ad 1: I addressed the cause of the overextrusion. When starting the second part of the G-code, the E-value starts of course on a very high value that has to be reached first above the object. So it extrudes an amount of filament over there. I can change that extrusion point (in the G-code) to the place above the parking position, before it moves to the object. But that makes a little mess around the hotend.
Anybody who has an idea how to solve this?
Edit again
Finally got it right, had to finetune the Extrusion.
I can split the G-code in two (or more) halves now without blobs
Hello,
ah, very nice
about the issue with the extrusion: Do you mean the initial purging of the nozzle, which makes this blob at the home position?
I would not get rid of that, but have it in the same spot as normal, so it doesn’t make a mess on the nozzle.
Can you post your Start G-Code for the second half?
No, it’s after that, above the object.
The solution is that this line: G92 E0 ; Reset extruder position, has to be modified. E has to be the same value as the E of the first layer E.
;Generated with Cura_SteamEngine 14.09
G28 ; Home extruder
G1 Z5 F600
G1 Z0 F600
G90 ; Absolute positioning
M82 ; Extruder in absolute mode
M106 S80 ; Turn on fan
; Activate all used extruder
M104 T0 S200
G92 E0 ; Reset extruder position
; Wait for all used extruders to reach temperature
M109 T0 S200
T0
M83
G1 E10 F100
M82
G92 E225 ; Reset extruder position
M117 Vertex is printing
G1 F1000 Z26
;LAYER:201
M106 S255
;G1 F9600 E-4.00000
G0 F12960 X119.666 Y119.214 Z21.305
;TYPE:WALL-OUTER
G1 F540 X120.331 Y119.282 E225.31935
It now: G92 E225
Oh wow, right, good call. I didn’t even think of that.
Now That would be something in a really large print: “Extrude 65 meters of filament immediately” xD
Trial and error… a nice way to get what you want without knowledge
And it’s of course all about large objects!
I have tried this with S3D. There you have the option to stop a STL at a certain layer and start a STL at a certain layer.
I have made a knob for a M6 screw by printing the support and the first part to insert the screw,
Then printing the rest of the Head (knob)
But you should switch it off after using it, otherwise the next print starts in “nowhere”,
Because the print bed is far below the nozzle