Support of COPY and MIRROR modes for IDEX

Reproduction Steps:

G28
T1
G28 X

T0 is now active
Parking macros throw errors because coordinates do not match the current tool

Console output:

15:31:28 
$ G28
T1
G28 X
T1
15:31:35 
// Activating extruder extruder1
15:31:37 
!! Move out of range: 281.000 -26.000 -1.756 [0.000]
15:31:37 
!! Move out of range: 281.000 -26.000 -1.756 [0.000]
15:31:37 
!! Move out of range: 281.000 -26.000 -1.756 [0.000]

After fix:

ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=0

printer (2).cfg (8.4 KB)

Ah, I see, so the report is not about a bug in the Klipper code itself, but rather in the sample config and macros there. I agree that indeed it does not work well and I’ll need to update the sample config to account for that.

Hi,

I’m trying to run this on a Tenlog TL-D3 and I’m running into issues.

After hitting Home All, I set it to activate copy mode, and I’ve got the rough distance I want Extruder 2 to move to dialed in as it synchronizes.

After this, Extruder 2 does nothing; Extruder 1 moves on to go print the part while Extruder 2 just sits there. Is there something I’m doing wrong? (I’m generally having issues getting Extruder 2 to do much of anything).

What’s about sharing the klippy.log?
Without it, everything are wild guesses.

Sorry. Please forgive me, I’m a Klipper n00b.

klippy(1).zip (1.2 MB)

I have a similar situation with my Tenlog TL-D3 Pro. T1 moves into place, but does not follow any X commands from T0, despite being in Copy or Mirror mode. Got the idex_modes.py, cartesian.py from the branch above, but no difference. Did you figure it out?

EDIT: I found my issue. Klipper 0.12 natively supports COPY and MIRROR modes. I had to update my T0 and T1 macros to save and restore the Dual carriage state.

Examples below:

Activate the primary extruder

[gcode_macro T0]
gcode:
SAVE_DUAL_CARRIAGE_STATE NAME=DC0
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=0
SET_GCODE_OFFSET Y=0 X=0
RESTORE_DUAL_CARRIAGE_STATE NAME=DC0 MOVE=0

[gcode_macro T1]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
SET_GCODE_OFFSET X=48.2 Y=0.60