Looking for clarifications on retraction settings and behavior (CuraEngine / Host)
Hello,
As I am currently dealing with some unwanted retraction behavior at the beginning of my prints, and therefore I would like to get a full understanding on how retraction behaves when using CuraEngine with Host
1 - First of all, looking at the Gcode generated by CureEngine, the differences I see between Retraction enabled and disabled are as follows :
Some FXX EYY instructions show up in the "Retraction enabled" Gcode (right). I assume that these are Feed values and Extrusion distances for the extruder ... But how do these relate to actual retraction ? Shouldn't the gcode simply have some negative values for E ?
2 - Also and If I am not mistaken, Host seems to be interpreting any line of gcode that does not have any E value as a signal to retract the filament. Am I correct on this ? And if so, is there a way to disable this behavior completely ? (I am currently dealing with a very annoying issue at the beginning of almost all my prints, with the extruder deciding to eject a lot of filament right before laying down the first layer. I suppose this is related to some Printer Settings, but I cannot seem to figure out which ones.
Thank you in advance for your help.
As I am currently dealing with some unwanted retraction behavior at the beginning of my prints, and therefore I would like to get a full understanding on how retraction behaves when using CuraEngine with Host
1 - First of all, looking at the Gcode generated by CureEngine, the differences I see between Retraction enabled and disabled are as follows :
Some FXX EYY instructions show up in the "Retraction enabled" Gcode (right). I assume that these are Feed values and Extrusion distances for the extruder ... But how do these relate to actual retraction ? Shouldn't the gcode simply have some negative values for E ?
2 - Also and If I am not mistaken, Host seems to be interpreting any line of gcode that does not have any E value as a signal to retract the filament. Am I correct on this ? And if so, is there a way to disable this behavior completely ? (I am currently dealing with a very annoying issue at the beginning of almost all my prints, with the extruder deciding to eject a lot of filament right before laying down the first layer. I suppose this is related to some Printer Settings, but I cannot seem to figure out which ones.
Thank you in advance for your help.
Comments
What does this actually mean ? Since Gcode is just a set of instructions for the motors, and since the printer itself is completely blind, the machine has no way of knowing that it may be moving "over a none-printed area" when printing. Therefore this tickbox must refer to either :
• The ruleset for the slicing of the mesh and gcode generation
and/or
• Some kind of realtime behavior that Host is adding by itself on top of the gcode instructions, forcing retraction whenever the printhead is moving but the extruder is not told to extrude material.
So, which one is it ?
For context and as stated above, I am currently dealing with some strong unwanted retraction before a print is even started, as the nozzle travels from parked position to the starting point of the print near the middle of the build plate - even though nothing in the Gcode seems to instruct the extruder to do so, and even though I have "Enable Retraction" turned off !! What could possibly be causing this ?
Then for understanding - yes printer is dump that is why all logic is in the slicer, which is an external program that optimizes moves to get best quality. Part of this are retraction before moves. Reason is that on pure moves (no E) the pressure from extrusion will leave more or less fat strings on the print which are ugly. If you retract filament then there is no pressure (if distance and speed were good for printer) and you get a much cleaner result. Slicer also knows the path as it writes them so slicer can say move is crossing perimeter or just over inner parts where stringing is not as relevant.
E values can be in relative mode or absolute. In your example they are in absolute mode so reducing E means retracting the difference. But that should be faster then 60mm/min. Minimum speed would be 30mm/s. You want to reduce pressure fast and it also reduces print time.
I should have mentioned that I am actually perfectly fine with my current print settings as generated by the ancient CuraEngine. I am used to recent/regular Cura slicing with modern machines (Ultimaker, Creality ...), but my questions here relate specifically to CuraEngine+Repetier+a Printrbot that I am reviving. All that to say that I am indeed new to Repetier, but not to the concepts one needs to understand for clean prints.
I am getting some excellent print quality results at the moment, except for that *one* odd filament ejecting issue at the beginning of the prints when using CuraEngine. Now I didn't consider that E values could possibly be relative (since an extruder has no 0), so perhaps this is it indeed. Will investigate asap.
I see that it is receiving a high F-rate of 3840 on line 5 (from where it is getting this value from, I don't know), but no extrusion command. And then on line 7, another high-ish F-rate of 960, and a first extrusion value of E0.02025, followed by E0.03907.
Now why would this code cause the extractor to immediately start retracting filament at high speed, as opposed to extracting ... nothing ?
G92 E0
before :LAYER:0 otherwise depending on your last E position this can be a big retract or extrusion that is unexpected. You need to put that in cura start g-code after your manual extrusions if you do any.
Well, this was it This tiny bit of gcode did it, and everything is now behaving as expected. Much thanks !
Going back to some of the earlier points : I do understand that CuraEngine is quite barebones and limited compared to all the advanced features of regular Cura of Slic3r/PrusaSlicer. But as far as I am concerned, being able to handle everything within the very tight and unified Repetier UI is great. I do have PrusaSlic3r dialed in for the more complex prints and it works great too, with obviously smoother acceleration/jerk control and so on. But for most of my needs, quickly adjusting the settings with CuraEngine is just faster. And the global speed slider is a *fantastic* feature.
- - - - -
Also, on a somewhat related note : from a UX standpoint, the fact that the CuraEngine integration requires a click on "Save" just to pass the current settings to the big slicer button really is an issue. I can't count the number of time I've tweaked settings, sliced, and launched a print ... without realizing that the change of settings had been ignored. This area of the UI absolutely needs more automatic error prevention imho, especially with CuraEngine being the default slicer.