Select a default tool in a toolchanger arrangement
-
Hello
I am using PrusaSlicer as my standard slicing tool for my toolchanger. If I do not select a specific tool the printer starts printing with the end stop swich for the z-axis and kills it.
The firmware complains, that extuding is not possible, but continues the job.
Right now I fix it with this start code which causes other issues in the startup process:if state.currentTool = -1 ;check if a tool selected code added because slicer does not select T0 at the very beginning T0
Is there another way to stop the print or use T0 as the standard tool?
Thanks!
Mike -
Well one of the first things I did was add a micro-switch to the changer which would signal when a tool was actually mounted.
This helped a lot as the state (mounted/not mounted) was known at all times, separate from the firmware keeping track of what tool commands were executed.
I don't know that slicer well but I think it should be inserting a tool command.
Frederick
-
@fcwilt
I am using PrusaSlicer 2.9.1. and i regularly forget to select a tool.
Unfortunately the custom gcode starts before a tool is selected in the gcode. So a tool is picked up every time for no reason. A switch would unfortunately not work for the same reason. Or do I miss something?
Mike -
@Mike-1 said in Select a default tool in a toolchanger arrangement:
@fcwilt
I am using PrusaSlicer 2.9.1. and i regularly forget to select a tool.
Unfortunately the custom gcode starts before a tool is selected in the gcode. So a tool is picked up every time for no reason. A switch would unfortunately not work for the same reason. Or do I miss something?
MikeI will take a look at the startup code the slicer generates.
In the past, for other slicers, I have had to pick certain options to get the code I need.
Frederick
-
OK here is the startup code from 2.9.1. Notice the first thing it does is call print_begin.g which is my code to begin the print.
What are you seeing from 2.9.1?
; generated by PrusaSlicer 2.9.1 on 2025-03-15 at 08:07:23 UTC ; ; external perimeters extrusion width = 0.45mm ; perimeters extrusion width = 0.45mm ; infill extrusion width = 0.45mm ; solid infill extrusion width = 0.45mm ; top infill extrusion width = 0.40mm ; first layer extrusion width = 0.42mm ;TYPE:Custom M98 P"print_begin.g" G21 ; set units to millimeters G90 ; use absolute coordinates M82 ; use absolute distances for extrusion G92 E0 M98 P"print_filament_change_begin.g" M107 ;LAYER_CHANGE ;Z:0.35 ;HEIGHT:0.35 G1 E-2 F2400 G92 E0 G1 Z.35 F7800 G1 X21.124 Y-.893 G1 E2 F2400 ;TYPE:Skirt/Brim ;WIDTH:0.42
-
You could add
T0 P0
at the end of config.g to have a default tool selected, or in start.g which is executed before the gcode file (P0 to avoid running the pre and post macros, so leave out if you want to but at the end of config.g without being homed it'll likely throw an error). -
@Mike-1 I set up my toolchanger as multiple printers in PrusaSlicer. For example I have a printer called E3D Tool Changer using tool 2. Then in Custom GCode for that printer I have this in the Start GCode section:
M140 S[bed_temperature] G10 P2 S[first_layer_temperature] T2 M116
-
I recently went through this exact thing with my multi-tool printer. I discovered that with Prusa Slicer and multiple tools, if you use only tool 1 (tool number in slicer number = RRF tool0), Prusa slicer does not include a T0 in it's output. But if you use any other tool as the only tool, or if you use multiple tools, then T0 is included in the gcode. I added the following to my printer's custom gcode:
; set the tool if only the first extruder is used {if is_extruder_used[0] and not is_extruder_used[1] and not is_extruder_used[2]}T0{endif}
And while I'm sharing, I also include the following to set tool active and standby temperatures only when the tools are used:
;Set standby temperatures for extruders that are used in this print {if is_extruder_used[0]} M568 A1 P0 R{temperature[0] -5}{endif} {if is_extruder_used[1]} M568 A1 P1 R{temperature[1] -5}{endif} {if is_extruder_used[2]} M568 A1 P2 R{temperature[2] -5}{endif}
Note that in the user interface Prusa refers to extruders starting with #1, but in their gcode output, they start numbering at 0.