Jump to content
Ultimaker Community of 3D Printing Experts

Extruder Docking in Multi-Extruder Configuration

Recommended Posts

Dear Cura Users,

Please help if you can...


**Application Version**
Cura 3.6.0


Windows 10, 64 bit


Custom FDM multi-extruder.
Four extruders docked on the back wall. 


**Steps to Reproduce**
Print any multi-material model.


**Actual Results**
Last used "Extruder End G-code" is not executed.
Last used extruder remains attached to the tool holder.


**Expected results**
Last used "Extruder End G-code" should be executed.
Last used extruder would be properly docked to its' slot on the back wall.


**Additional Information**
On T[N] G-code command (where [N] is extruder index), N's "Extruder Start G-code" is executed and that code knows how to navigate to N's tool dock and attach it to the tool holder. At the end of the tool usage, N's "Extruder End G-code" is executed and it knows how to navigate to N's dock and disconnect it from the tool holder.


Cura should execute last used "Extruder End G-code", because only that code knows where the last extruder needs to be docked at.

I am a aware that Cura always executes "End G-code", but that code can not be conditioned on the docking location of the last used extruder. At least, I am not aware that such conditional statements exist.


I am also aware that in multi-extruder case, Cura also assumes T0 to always be the first and will not execute the T0's "Extruder Start G-code", but in that case I can at least inject T0's "Extruder Start G-code" into "Start G-code" knowing it is specific for T0.


I don't know why wouldn't it make sense to always execute "Extruder Start G-code" and "Extruder End G-code" even on single extruder printers. Developers could always leave those sections blank if no extruder specific action is required.


Thank you and kind regards.

Edited by UticaTechClub
To clarify

Share this post

Link to post
Share on other sites

To fix my problem, one of two things needs to happen:
   a) Figure out if Cura could invoke "Extruder End G-Code" on the last used extruder. I am sure there is a good reason(s) as to why Cura doesn't do it.
   b) Figure out how to condition gcode invoked in "End G-Code" section. After much reading, I believe this is currently not possible in Cura.

Share this post

Link to post
Share on other sites

Perhaps there is another way to make "End G-Code" conditional as found in


The idea is to define value property in (.def.json) and embed Python expression to be evaluated like in the following example:

"machine_end_gcode": { "value": "'G29 P' + str(int(machine_width/25))" },

So in my case, I could pass proper X,Y offset to G1 based on {current_extruder} property.

I think it should work... 

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

  • Our picks

    • Ultimaker Cura | a new interface
      We're not only trying to always make Ultimaker Cura better with the usual new features and improvements we build, but we're also trying to make it more pleasant to operate. The interface was the focus for the upcoming release, from which we would already like to present you the first glance. 
      • 130 replies
    • "Back To The Future" using Generative Design & Investment Casting
      Designing for light-weight parts is becoming more important, and I’m a firm believer in the need to produce lighter weight, less over-engineered parts for the future. This is for sustainability reasons because we need to be using less raw materials and, in things like transportation, it impacts the energy usage of the product during it’s service life.
        • Like
      • 12 replies

Important Information

Welcome to the Ultimaker Community of 3D printing experts. Visit the following links to read more about our Terms of Use or our Privacy Policy. Thank you!