Looking for clarifications on retraction settings and behavior (CuraEngine / Host)

edited May 2022 in CuraEngine
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.


  • P_OP_O
    edited May 2022
    3 - And also, I do not understand the following help hint : 

    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
    • 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 ?
  • First, since you seem to be a new user - CuraEngine is quite old as newer version are not compatible any more. It works fine but using PrusaSlicer for new users would be the best solution as it creates better g-code.

    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.
  • P_OP_O
    edited May 2022
    Hello ! Thank you for your replies.

    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.
  • P_OP_O
    edited May 2022
    Might aswell share the problematic Gcode. Here is the beginning of what I am getting, with "Enable Retraction" turned off in the CuraEngine settings :

    M106 S63
    G0 F3840 X16.196 Y41.247 Z0.310
    G1 F960 X16.578 Y41.110 E0.02025
    G1 X16.944 Y41.018 E0.03907

    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 ?
  • You need a 
    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.
  • P_OP_O
    edited May 2022
    Hello again !
    Well, this was it :D 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.
Sign In or Register to comment.