diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index 5bcfa97d1..5ff732ade 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/default/Configuration.h b/Marlin/src/config/default/Configuration.h
index 5bcfa97d1..5ff732ade 100644
--- a/Marlin/src/config/default/Configuration.h
+++ b/Marlin/src/config/default/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration.h b/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration.h
index a1d4099e4..814495b81 100644
--- a/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration.h
+++ b/Marlin/src/config/examples/AlephObjects/TAZ4/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/AliExpress/CL-260/Configuration.h b/Marlin/src/config/examples/AliExpress/CL-260/Configuration.h
index ea3ee5956..fbaf4bf5d 100644
--- a/Marlin/src/config/examples/AliExpress/CL-260/Configuration.h
+++ b/Marlin/src/config/examples/AliExpress/CL-260/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Anet/A2/Configuration.h b/Marlin/src/config/examples/Anet/A2/Configuration.h
index b913182ae..469e9b6c7 100644
--- a/Marlin/src/config/examples/Anet/A2/Configuration.h
+++ b/Marlin/src/config/examples/Anet/A2/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Anet/A2plus/Configuration.h b/Marlin/src/config/examples/Anet/A2plus/Configuration.h
index f0c53291f..3f80ea367 100644
--- a/Marlin/src/config/examples/Anet/A2plus/Configuration.h
+++ b/Marlin/src/config/examples/Anet/A2plus/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Anet/A6/Configuration.h b/Marlin/src/config/examples/Anet/A6/Configuration.h
index 81e5eac56..ac7c75aa6 100644
--- a/Marlin/src/config/examples/Anet/A6/Configuration.h
+++ b/Marlin/src/config/examples/Anet/A6/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Anet/A8/Configuration.h b/Marlin/src/config/examples/Anet/A8/Configuration.h
index 84d65e107..5faaba065 100644
--- a/Marlin/src/config/examples/Anet/A8/Configuration.h
+++ b/Marlin/src/config/examples/Anet/A8/Configuration.h
@@ -156,6 +156,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Azteeg/X5GT/Configuration.h b/Marlin/src/config/examples/Azteeg/X5GT/Configuration.h
index 947bb82d9..595b1c936 100644
--- a/Marlin/src/config/examples/Azteeg/X5GT/Configuration.h
+++ b/Marlin/src/config/examples/Azteeg/X5GT/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration.h b/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration.h
index d0a6c5e64..6efca2a7d 100644
--- a/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration.h
+++ b/Marlin/src/config/examples/BIBO/TouchX/cyclops/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/BIBO/TouchX/default/Configuration.h b/Marlin/src/config/examples/BIBO/TouchX/default/Configuration.h
index 6728218d5..485e59d65 100644
--- a/Marlin/src/config/examples/BIBO/TouchX/default/Configuration.h
+++ b/Marlin/src/config/examples/BIBO/TouchX/default/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/BQ/Hephestos/Configuration.h b/Marlin/src/config/examples/BQ/Hephestos/Configuration.h
index 20d9ec592..43b500294 100644
--- a/Marlin/src/config/examples/BQ/Hephestos/Configuration.h
+++ b/Marlin/src/config/examples/BQ/Hephestos/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/BQ/Hephestos_2/Configuration.h b/Marlin/src/config/examples/BQ/Hephestos_2/Configuration.h
index 01827fce7..dee62ff2c 100644
--- a/Marlin/src/config/examples/BQ/Hephestos_2/Configuration.h
+++ b/Marlin/src/config/examples/BQ/Hephestos_2/Configuration.h
@@ -163,6 +163,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/BQ/WITBOX/Configuration.h b/Marlin/src/config/examples/BQ/WITBOX/Configuration.h
index 659011de9..718fb1b79 100644
--- a/Marlin/src/config/examples/BQ/WITBOX/Configuration.h
+++ b/Marlin/src/config/examples/BQ/WITBOX/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Cartesio/Configuration.h b/Marlin/src/config/examples/Cartesio/Configuration.h
index 01bf13435..c0cb2308a 100644
--- a/Marlin/src/config/examples/Cartesio/Configuration.h
+++ b/Marlin/src/config/examples/Cartesio/Configuration.h
@@ -156,6 +156,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/CR-10/Configuration.h b/Marlin/src/config/examples/Creality/CR-10/Configuration.h
index fe7de2e8d..699e0cda6 100755
--- a/Marlin/src/config/examples/Creality/CR-10/Configuration.h
+++ b/Marlin/src/config/examples/Creality/CR-10/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/CR-10S/Configuration.h b/Marlin/src/config/examples/Creality/CR-10S/Configuration.h
index e0bd4754c..e25fe9227 100644
--- a/Marlin/src/config/examples/Creality/CR-10S/Configuration.h
+++ b/Marlin/src/config/examples/Creality/CR-10S/Configuration.h
@@ -159,6 +159,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/CR-10mini/Configuration.h b/Marlin/src/config/examples/Creality/CR-10mini/Configuration.h
index 66b9e567b..b00891d6b 100644
--- a/Marlin/src/config/examples/Creality/CR-10mini/Configuration.h
+++ b/Marlin/src/config/examples/Creality/CR-10mini/Configuration.h
@@ -164,6 +164,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/CR-8/Configuration.h b/Marlin/src/config/examples/Creality/CR-8/Configuration.h
index 81f66c6a0..020775354 100644
--- a/Marlin/src/config/examples/Creality/CR-8/Configuration.h
+++ b/Marlin/src/config/examples/Creality/CR-8/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/Ender-2/Configuration.h b/Marlin/src/config/examples/Creality/Ender-2/Configuration.h
index 771cb34cb..15946881e 100644
--- a/Marlin/src/config/examples/Creality/Ender-2/Configuration.h
+++ b/Marlin/src/config/examples/Creality/Ender-2/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/Ender-3/Configuration.h b/Marlin/src/config/examples/Creality/Ender-3/Configuration.h
index 92dc8f4c0..325446d67 100644
--- a/Marlin/src/config/examples/Creality/Ender-3/Configuration.h
+++ b/Marlin/src/config/examples/Creality/Ender-3/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Creality/Ender-4/Configuration.h b/Marlin/src/config/examples/Creality/Ender-4/Configuration.h
index dc1b17581..2e1ca2749 100644
--- a/Marlin/src/config/examples/Creality/Ender-4/Configuration.h
+++ b/Marlin/src/config/examples/Creality/Ender-4/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Einstart-S/Configuration.h b/Marlin/src/config/examples/Einstart-S/Configuration.h
index 57637bd7b..6f499527c 100644
--- a/Marlin/src/config/examples/Einstart-S/Configuration.h
+++ b/Marlin/src/config/examples/Einstart-S/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Felix/Configuration.h b/Marlin/src/config/examples/Felix/Configuration.h
index a797130b9..54b631220 100644
--- a/Marlin/src/config/examples/Felix/Configuration.h
+++ b/Marlin/src/config/examples/Felix/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Felix/DUAL/Configuration.h b/Marlin/src/config/examples/Felix/DUAL/Configuration.h
index 1181d0516..d90fedf12 100644
--- a/Marlin/src/config/examples/Felix/DUAL/Configuration.h
+++ b/Marlin/src/config/examples/Felix/DUAL/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration.h b/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration.h
index bd6bae8a3..5fb3adf3f 100644
--- a/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration.h
+++ b/Marlin/src/config/examples/FolgerTech/i3-2020/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Formbot/Raptor/Configuration.h b/Marlin/src/config/examples/Formbot/Raptor/Configuration.h
index f0dd50010..922ad228b 100644
--- a/Marlin/src/config/examples/Formbot/Raptor/Configuration.h
+++ b/Marlin/src/config/examples/Formbot/Raptor/Configuration.h
@@ -196,6 +196,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Formbot/T_Rex_2+/Configuration.h b/Marlin/src/config/examples/Formbot/T_Rex_2+/Configuration.h
index d0f5d8bf8..a1b65fe2d 100644
--- a/Marlin/src/config/examples/Formbot/T_Rex_2+/Configuration.h
+++ b/Marlin/src/config/examples/Formbot/T_Rex_2+/Configuration.h
@@ -158,6 +158,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Formbot/T_Rex_3/Configuration.h b/Marlin/src/config/examples/Formbot/T_Rex_3/Configuration.h
index 7ee67af0b..b0c0776fc 100644
--- a/Marlin/src/config/examples/Formbot/T_Rex_3/Configuration.h
+++ b/Marlin/src/config/examples/Formbot/T_Rex_3/Configuration.h
@@ -159,6 +159,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/GT2560/Configuration.h b/Marlin/src/config/examples/Geeetech/GT2560/Configuration.h
index 01dd31e0b..ce83a71bb 100644
--- a/Marlin/src/config/examples/Geeetech/GT2560/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/GT2560/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h b/Marlin/src/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
index 62a5ecf1c..409ac78ff 100644
--- a/Marlin/src/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/I3_Pro_X-GT2560/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/MeCreator2/Configuration.h b/Marlin/src/config/examples/Geeetech/MeCreator2/Configuration.h
index 37af96e76..84dc0cf72 100644
--- a/Marlin/src/config/examples/Geeetech/MeCreator2/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/MeCreator2/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
index 6e0a691b1..6217e2e53 100644
--- a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/bltouch/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
index 7d3f4b9e0..4f1e9e7e5 100644
--- a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro B/noprobe/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
index b0dcb677d..69d44c9e6 100644
--- a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro C/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
index 48842ba08..4d02fe110 100644
--- a/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
+++ b/Marlin/src/config/examples/Geeetech/Prusa i3 Pro W/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Infitary/i3-M508/Configuration.h b/Marlin/src/config/examples/Infitary/i3-M508/Configuration.h
index 90506121f..4784c78db 100644
--- a/Marlin/src/config/examples/Infitary/i3-M508/Configuration.h
+++ b/Marlin/src/config/examples/Infitary/i3-M508/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/JGAurora/A5/Configuration.h b/Marlin/src/config/examples/JGAurora/A5/Configuration.h
index fed11676d..2e230c76c 100644
--- a/Marlin/src/config/examples/JGAurora/A5/Configuration.h
+++ b/Marlin/src/config/examples/JGAurora/A5/Configuration.h
@@ -160,6 +160,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/MakerParts/Configuration.h b/Marlin/src/config/examples/MakerParts/Configuration.h
index a884c1dff..506a12abf 100644
--- a/Marlin/src/config/examples/MakerParts/Configuration.h
+++ b/Marlin/src/config/examples/MakerParts/Configuration.h
@@ -175,6 +175,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Malyan/M150/Configuration.h b/Marlin/src/config/examples/Malyan/M150/Configuration.h
index 10c375b36..83a57148d 100644
--- a/Marlin/src/config/examples/Malyan/M150/Configuration.h
+++ b/Marlin/src/config/examples/Malyan/M150/Configuration.h
@@ -160,6 +160,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Malyan/M200/Configuration.h b/Marlin/src/config/examples/Malyan/M200/Configuration.h
index 4da1d5a3c..9c4099ec9 100644
--- a/Marlin/src/config/examples/Malyan/M200/Configuration.h
+++ b/Marlin/src/config/examples/Malyan/M200/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Micromake/C1/basic/Configuration.h b/Marlin/src/config/examples/Micromake/C1/basic/Configuration.h
index 089e129f3..d60955fd6 100644
--- a/Marlin/src/config/examples/Micromake/C1/basic/Configuration.h
+++ b/Marlin/src/config/examples/Micromake/C1/basic/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration.h b/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration.h
index 7a56d29f6..0d03ee3aa 100644
--- a/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration.h
+++ b/Marlin/src/config/examples/Micromake/C1/enhanced/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Mks/Sbase/Configuration.h b/Marlin/src/config/examples/Mks/Sbase/Configuration.h
index 02aab0e68..0c9b76576 100644
--- a/Marlin/src/config/examples/Mks/Sbase/Configuration.h
+++ b/Marlin/src/config/examples/Mks/Sbase/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/RepRapPro/Huxley/Configuration.h b/Marlin/src/config/examples/RepRapPro/Huxley/Configuration.h
index af0127d6e..47de65122 100644
--- a/Marlin/src/config/examples/RepRapPro/Huxley/Configuration.h
+++ b/Marlin/src/config/examples/RepRapPro/Huxley/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/RepRapWorld/Megatronics/Configuration.h b/Marlin/src/config/examples/RepRapWorld/Megatronics/Configuration.h
index 4f0402611..376ad4839 100644
--- a/Marlin/src/config/examples/RepRapWorld/Megatronics/Configuration.h
+++ b/Marlin/src/config/examples/RepRapWorld/Megatronics/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/RigidBot/Configuration.h b/Marlin/src/config/examples/RigidBot/Configuration.h
index 113a9a829..12f768fb0 100644
--- a/Marlin/src/config/examples/RigidBot/Configuration.h
+++ b/Marlin/src/config/examples/RigidBot/Configuration.h
@@ -158,6 +158,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/SCARA/Configuration.h b/Marlin/src/config/examples/SCARA/Configuration.h
index c8ee618f7..aa1061657 100644
--- a/Marlin/src/config/examples/SCARA/Configuration.h
+++ b/Marlin/src/config/examples/SCARA/Configuration.h
@@ -186,6 +186,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/STM32F10/Configuration.h b/Marlin/src/config/examples/STM32F10/Configuration.h
index 9808e74df..be3da5e39 100644
--- a/Marlin/src/config/examples/STM32F10/Configuration.h
+++ b/Marlin/src/config/examples/STM32F10/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/STM32F4/Configuration.h b/Marlin/src/config/examples/STM32F4/Configuration.h
index 4da899f46..32b7c98e8 100644
--- a/Marlin/src/config/examples/STM32F4/Configuration.h
+++ b/Marlin/src/config/examples/STM32F4/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Sanguinololu/Configuration.h b/Marlin/src/config/examples/Sanguinololu/Configuration.h
index 41e1629d2..a28132658 100644
--- a/Marlin/src/config/examples/Sanguinololu/Configuration.h
+++ b/Marlin/src/config/examples/Sanguinololu/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/TheBorg/Configuration.h b/Marlin/src/config/examples/TheBorg/Configuration.h
index 8e0136dc6..38d43af9a 100644
--- a/Marlin/src/config/examples/TheBorg/Configuration.h
+++ b/Marlin/src/config/examples/TheBorg/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/TinyBoy2/Configuration.h b/Marlin/src/config/examples/TinyBoy2/Configuration.h
index 0a4ca2455..2328e3beb 100644
--- a/Marlin/src/config/examples/TinyBoy2/Configuration.h
+++ b/Marlin/src/config/examples/TinyBoy2/Configuration.h
@@ -177,6 +177,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Tronxy/X1/Configuration.h b/Marlin/src/config/examples/Tronxy/X1/Configuration.h
index fb91a54ad..f0d237726 100644
--- a/Marlin/src/config/examples/Tronxy/X1/Configuration.h
+++ b/Marlin/src/config/examples/Tronxy/X1/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Tronxy/X3A/Configuration.h b/Marlin/src/config/examples/Tronxy/X3A/Configuration.h
index 63864bc7d..c1f609d62 100644
--- a/Marlin/src/config/examples/Tronxy/X3A/Configuration.h
+++ b/Marlin/src/config/examples/Tronxy/X3A/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Tronxy/X5S/Configuration.h b/Marlin/src/config/examples/Tronxy/X5S/Configuration.h
index 6ce684d4c..a5f7db375 100644
--- a/Marlin/src/config/examples/Tronxy/X5S/Configuration.h
+++ b/Marlin/src/config/examples/Tronxy/X5S/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Tronxy/XY100/Configuration.h b/Marlin/src/config/examples/Tronxy/XY100/Configuration.h
index d7ae94c45..ffc3316ec 100644
--- a/Marlin/src/config/examples/Tronxy/XY100/Configuration.h
+++ b/Marlin/src/config/examples/Tronxy/XY100/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/UltiMachine/Archim2/Configuration.h b/Marlin/src/config/examples/UltiMachine/Archim2/Configuration.h
index c4874e695..86f5c137c 100644
--- a/Marlin/src/config/examples/UltiMachine/Archim2/Configuration.h
+++ b/Marlin/src/config/examples/UltiMachine/Archim2/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Velleman/K8200/Configuration.h b/Marlin/src/config/examples/Velleman/K8200/Configuration.h
index a54d5c74d..27e520237 100644
--- a/Marlin/src/config/examples/Velleman/K8200/Configuration.h
+++ b/Marlin/src/config/examples/Velleman/K8200/Configuration.h
@@ -175,6 +175,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Velleman/K8400/Configuration.h b/Marlin/src/config/examples/Velleman/K8400/Configuration.h
index 7fad7c7f1..7866ae025 100644
--- a/Marlin/src/config/examples/Velleman/K8400/Configuration.h
+++ b/Marlin/src/config/examples/Velleman/K8400/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Velleman/K8400/Dual-head/Configuration.h b/Marlin/src/config/examples/Velleman/K8400/Dual-head/Configuration.h
index fee73ac89..8b8faa13d 100644
--- a/Marlin/src/config/examples/Velleman/K8400/Dual-head/Configuration.h
+++ b/Marlin/src/config/examples/Velleman/K8400/Dual-head/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration.h b/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration.h
index 0ff39029d..f6b7858f4 100644
--- a/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration.h
+++ b/Marlin/src/config/examples/Wanhao/Duplicator 6/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/adafruit/ST7565/Configuration.h b/Marlin/src/config/examples/adafruit/ST7565/Configuration.h
index cfb1e091b..3fdd3cf2d 100644
--- a/Marlin/src/config/examples/adafruit/ST7565/Configuration.h
+++ b/Marlin/src/config/examples/adafruit/ST7565/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/Anycubic/Kossel/Configuration.h b/Marlin/src/config/examples/delta/Anycubic/Kossel/Configuration.h
index 1063bc60c..963946042 100644
--- a/Marlin/src/config/examples/delta/Anycubic/Kossel/Configuration.h
+++ b/Marlin/src/config/examples/delta/Anycubic/Kossel/Configuration.h
@@ -168,6 +168,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration.h b/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
index 0fc0ea47b..bd56066cb 100644
--- a/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
+++ b/Marlin/src/config/examples/delta/FLSUN/auto_calibrate/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration.h b/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration.h
index fea8748c3..1dbd9047b 100644
--- a/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration.h
+++ b/Marlin/src/config/examples/delta/FLSUN/kossel/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration.h b/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration.h
index 8842d3e3e..0dbf38584 100644
--- a/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration.h
+++ b/Marlin/src/config/examples/delta/FLSUN/kossel_mini/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/Hatchbox_Alpha/Configuration.h b/Marlin/src/config/examples/delta/Hatchbox_Alpha/Configuration.h
index d2a966665..327ec18f2 100644
--- a/Marlin/src/config/examples/delta/Hatchbox_Alpha/Configuration.h
+++ b/Marlin/src/config/examples/delta/Hatchbox_Alpha/Configuration.h
@@ -160,6 +160,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/generic/Configuration.h b/Marlin/src/config/examples/delta/generic/Configuration.h
index 60c0b1582..edc5855fd 100644
--- a/Marlin/src/config/examples/delta/generic/Configuration.h
+++ b/Marlin/src/config/examples/delta/generic/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/kossel_mini/Configuration.h b/Marlin/src/config/examples/delta/kossel_mini/Configuration.h
index 3d8436202..99a254380 100644
--- a/Marlin/src/config/examples/delta/kossel_mini/Configuration.h
+++ b/Marlin/src/config/examples/delta/kossel_mini/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/kossel_pro/Configuration.h b/Marlin/src/config/examples/delta/kossel_pro/Configuration.h
index a4878e7f2..b85a241fe 100644
--- a/Marlin/src/config/examples/delta/kossel_pro/Configuration.h
+++ b/Marlin/src/config/examples/delta/kossel_pro/Configuration.h
@@ -159,6 +159,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/delta/kossel_xl/Configuration.h b/Marlin/src/config/examples/delta/kossel_xl/Configuration.h
index 0cf1a9879..30c45f5db 100644
--- a/Marlin/src/config/examples/delta/kossel_xl/Configuration.h
+++ b/Marlin/src/config/examples/delta/kossel_xl/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration.h b/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration.h
index 13ea8ccdc..8fa2709f2 100644
--- a/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration.h
+++ b/Marlin/src/config/examples/gCreate/gMax1.5+/Configuration.h
@@ -160,6 +160,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/makibox/Configuration.h b/Marlin/src/config/examples/makibox/Configuration.h
index d8c191957..615e62e08 100644
--- a/Marlin/src/config/examples/makibox/Configuration.h
+++ b/Marlin/src/config/examples/makibox/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/stm32f103ret6/Configuration.h b/Marlin/src/config/examples/stm32f103ret6/Configuration.h
index c9583f21e..746e5edf9 100644
--- a/Marlin/src/config/examples/stm32f103ret6/Configuration.h
+++ b/Marlin/src/config/examples/stm32f103ret6/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/tvrrug/Round2/Configuration.h b/Marlin/src/config/examples/tvrrug/Round2/Configuration.h
index d5a2dde9a..705460184 100644
--- a/Marlin/src/config/examples/tvrrug/Round2/Configuration.h
+++ b/Marlin/src/config/examples/tvrrug/Round2/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/config/examples/wt150/Configuration.h b/Marlin/src/config/examples/wt150/Configuration.h
index 43079c89c..b1ab4d40a 100644
--- a/Marlin/src/config/examples/wt150/Configuration.h
+++ b/Marlin/src/config/examples/wt150/Configuration.h
@@ -155,6 +155,18 @@
// For Cyclops or any "multi-extruder" that shares a single nozzle.
//#define SINGLENOZZLE
+#if ENABLED(SINGLENOZZLE)
+ // Length of filament to retract and prime on toolchange
+ //#define SINGLENOZZLE_SWAP_LENGTH 12.0
+ //#define SINGLENOZZLE_SWAP_RETRACT_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PRIME_SPEED 3600 // (mm/m)
+ //#define SINGLENOZZLE_SWAP_PARK
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #else
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+#endif
/**
* Průša MK2 Single Nozzle Multi-Material Multiplexer, and variants.
diff --git a/Marlin/src/feature/pause.cpp b/Marlin/src/feature/pause.cpp
index 082887587..bda88ec6e 100644
--- a/Marlin/src/feature/pause.cpp
+++ b/Marlin/src/feature/pause.cpp
@@ -112,7 +112,7 @@ static bool ensure_safe_temperature(const AdvancedPauseMode mode=ADVANCED_PAUSE_
return thermalManager.wait_for_hotend(active_extruder);
}
-static void do_pause_e_move(const float &length, const float &fr) {
+void do_pause_e_move(const float &length, const float &fr) {
current_position[E_AXIS] += length / planner.e_factor[active_extruder];
planner.buffer_line(current_position, fr, active_extruder);
planner.synchronize();
diff --git a/Marlin/src/feature/pause.h b/Marlin/src/feature/pause.h
index 5eb39a5e1..2f607989f 100644
--- a/Marlin/src/feature/pause.h
+++ b/Marlin/src/feature/pause.h
@@ -77,6 +77,8 @@ extern uint8_t did_pause_print;
#define DXC_PASS
#endif
+void do_pause_e_move(const float &length, const float &fr);
+
bool pause_print(const float &retract, const point_t &park_point, const float &unload_length=0, const bool show_lcd=false DXC_PARAMS);
void wait_for_filament_reload(const int8_t max_beep_count=0 DXC_PARAMS);
diff --git a/Marlin/src/gcode/config/M217.cpp b/Marlin/src/gcode/config/M217.cpp
new file mode 100644
index 000000000..630c826d4
--- /dev/null
+++ b/Marlin/src/gcode/config/M217.cpp
@@ -0,0 +1,63 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+#include "../../inc/MarlinConfigPre.h"
+
+#if ENABLED(SINGLENOZZLE)
+
+#include "../gcode.h"
+#include "../../module/tool_change.h"
+
+#if NUM_SERIAL > 1
+ #include "../../gcode/queue.h"
+#endif
+
+void M217_report(const bool eeprom=false) {
+ #if NUM_SERIAL > 1
+ const int16_t port = command_queue_port[cmd_queue_index_r];
+ #endif
+ serialprintPGM_P(port, eeprom ? PSTR(" M217") : PSTR("Singlenozzle:"));
+ SERIAL_ECHOPAIR_P(port, " S", singlenozzle_swap_length);
+ SERIAL_ECHOPAIR_P(port, " P", singlenozzle_prime_speed);
+ SERIAL_ECHOLNPAIR_P(port, " R", singlenozzle_retract_speed);
+}
+
+/**
+ * M217 - Set SINGLENOZZLE toolchange parameters
+ *
+ * S[mm] Swap length
+ * P[mm/s] Prime speed
+ * R[mm/s] Retract speed
+ */
+void GcodeSuite::M217() {
+
+ bool report = true;
+
+ if (parser.seenval('S')) { report = false; const float v = parser.value_float(); singlenozzle_swap_length = constrain(v, 0, 500); }
+ if (parser.seenval('P')) { report = false; const int16_t v = parser.value_int(); singlenozzle_prime_speed = constrain(v, 10, 5400); }
+ if (parser.seenval('R')) { report = false; const int16_t v = parser.value_int(); singlenozzle_retract_speed = constrain(v, 10, 5400); }
+
+ if (report) M217_report();
+
+}
+
+#endif // SINGLENOZZLE
diff --git a/Marlin/src/gcode/gcode.cpp b/Marlin/src/gcode/gcode.cpp
index 36a01c1f7..39953a246 100644
--- a/Marlin/src/gcode/gcode.cpp
+++ b/Marlin/src/gcode/gcode.cpp
@@ -487,6 +487,10 @@ void GcodeSuite::process_parsed_command(
case 211: M211(); break; // M211: Enable, Disable, and/or Report software endstops
+ #if ENABLED(SINGLENOZZLE)
+ case 217: M217(); break; // M217: Set filament swap parameters
+ #endif
+
#if HOTENDS > 1
case 218: M218(); break; // M218: Set a tool offset
#endif
diff --git a/Marlin/src/gcode/gcode.h b/Marlin/src/gcode/gcode.h
index 106b980e7..bf3db6550 100644
--- a/Marlin/src/gcode/gcode.h
+++ b/Marlin/src/gcode/gcode.h
@@ -165,6 +165,7 @@
* M209 - Turn Automatic Retract Detection on/off: S<0|1> (For slicers that don't support G10/11). (Requires FWRETRACT_AUTORETRACT)
Every normal extrude-only move will be classified as retract depending on the direction.
* M211 - Enable, Disable, and/or Report software endstops: S<0|1> (Requires MIN_SOFTWARE_ENDSTOPS or MAX_SOFTWARE_ENDSTOPS)
+ * M217 - Set filament swap parameters: "M217 S P R". (Requires SINGLENOZZLE)
* M218 - Set/get a tool offset: "M218 T X Y". (Requires 2 or more extruders)
* M220 - Set Feedrate Percentage: "M220 S" (i.e., "FR" on the LCD)
* M221 - Set Flow Percentage: "M221 S"
@@ -617,6 +618,10 @@ private:
static void M211();
+ #if ENABLED(SINGLENOZZLE)
+ static void M217();
+ #endif
+
#if HOTENDS > 1
static void M218();
#endif
diff --git a/Marlin/src/gcode/temperature/M104_M109.cpp b/Marlin/src/gcode/temperature/M104_M109.cpp
index 7804b9ec7..7ce80d9ae 100644
--- a/Marlin/src/gcode/temperature/M104_M109.cpp
+++ b/Marlin/src/gcode/temperature/M104_M109.cpp
@@ -35,6 +35,10 @@
#include "../../feature/leds/leds.h"
#endif
+#if ENABLED(SINGLENOZZLE)
+ #include "../../module/tool_change.h"
+#endif
+
/**
* M104: Set hot end temperature
*/
@@ -44,12 +48,12 @@ void GcodeSuite::M104() {
const uint8_t e = target_extruder;
- #if ENABLED(SINGLENOZZLE)
- if (e != active_extruder) return;
- #endif
-
if (parser.seenval('S')) {
const int16_t temp = parser.value_celsius();
+ #if ENABLED(SINGLENOZZLE)
+ singlenozzle_temp[e] = temp;
+ if (e != active_extruder) return;
+ #endif
thermalManager.setTargetHotend(temp, e);
#if ENABLED(DUAL_X_CARRIAGE)
@@ -85,14 +89,14 @@ void GcodeSuite::M109() {
if (get_target_extruder_from_command()) return;
if (DEBUGGING(DRYRUN)) return;
- #if ENABLED(SINGLENOZZLE)
- if (target_extruder != active_extruder) return;
- #endif
-
const bool no_wait_for_cooling = parser.seenval('S'),
set_temp = no_wait_for_cooling || parser.seenval('R');
if (set_temp) {
const int16_t temp = parser.value_celsius();
+ #if ENABLED(SINGLENOZZLE)
+ singlenozzle_temp[target_extruder] = temp;
+ if (target_extruder != active_extruder) return;
+ #endif
thermalManager.setTargetHotend(temp, target_extruder);
#if ENABLED(DUAL_X_CARRIAGE)
@@ -115,13 +119,8 @@ void GcodeSuite::M109() {
#endif
#if ENABLED(ULTRA_LCD)
- const bool heating = thermalManager.isHeatingHotend(target_extruder);
- if (heating || !no_wait_for_cooling)
- #if HOTENDS > 1
- lcd_status_printf_P(0, heating ? PSTR("E%i " MSG_HEATING) : PSTR("E%i " MSG_COOLING), target_extruder + 1);
- #else
- lcd_setstatusPGM(heating ? PSTR("E " MSG_HEATING) : PSTR("E " MSG_COOLING));
- #endif
+ if (thermalManager.isHeatingHotend(target_extruder) || !no_wait_for_cooling)
+ thermalManager.set_heating_message(target_extruder);
#endif
}
diff --git a/Marlin/src/gcode/temperature/M106_M107.cpp b/Marlin/src/gcode/temperature/M106_M107.cpp
index 8fe50940f..12e2dc4f2 100644
--- a/Marlin/src/gcode/temperature/M106_M107.cpp
+++ b/Marlin/src/gcode/temperature/M106_M107.cpp
@@ -27,6 +27,11 @@
#include "../gcode.h"
#include "../../Marlin.h" // for fan_speed — should move those to Planner
+#if ENABLED(SINGLENOZZLE)
+ #include "../../module/motion.h"
+ #include "../../module/tool_change.h"
+#endif
+
/**
* M106: Set Fan Speed
*
@@ -42,6 +47,15 @@
*/
void GcodeSuite::M106() {
const uint8_t p = parser.byteval('P');
+ const uint16_t s = parser.ushortval('S', 255);
+
+ #if ENABLED(SINGLENOZZLE)
+ if (p != active_extruder) {
+ if (p < EXTRUDERS) singlenozzle_fan_speed[p] = MIN(s, 255U);
+ return;
+ }
+ #endif
+
if (p < FAN_COUNT) {
#if ENABLED(EXTRA_FAN_SPEED)
const int16_t t = parser.intval('T');
@@ -55,14 +69,12 @@ void GcodeSuite::M106() {
fan_speed[p] = new_fan_speed[p];
break;
default:
- new_fan_speed[p] = MIN(t, 255);
+ new_fan_speed[p] = MIN(t, 255U);
break;
}
return;
-
}
#endif // EXTRA_FAN_SPEED
- const uint16_t s = parser.ushortval('S', 255);
fan_speed[p] = MIN(s, 255U);
}
}
@@ -72,6 +84,13 @@ void GcodeSuite::M106() {
*/
void GcodeSuite::M107() {
const uint16_t p = parser.ushortval('P');
+ #if ENABLED(SINGLENOZZLE)
+ if (p != active_extruder) {
+ if (p < EXTRUDERS) singlenozzle_fan_speed[p] = 0;
+ return;
+ }
+ #endif
+
if (p < FAN_COUNT) fan_speed[p] = 0;
}
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index 326a701af..518952985 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -1513,6 +1513,28 @@
// Add commands that need sub-codes to this list
#define USE_GCODE_SUBCODES ENABLED(G38_PROBE_TARGET) || ENABLED(CNC_COORDINATE_SYSTEMS) || ENABLED(POWER_LOSS_RECOVERY)
+// Single Nozzle swap on toolchange defaults
+#if ENABLED(SINGLENOZZLE)
+ #ifndef SINGLENOZZLE_SWAP_LENGTH
+ #define SINGLENOZZLE_SWAP_LENGTH 0
+ #endif
+ #ifndef SINGLENOZZLE_SWAP_RETRACT_SPEED
+ #define SINGLENOZZLE_SWAP_RETRACT_SPEED 60.0
+ #endif
+ #ifndef SINGLENOZZLE_SWAP_PRIME_SPEED
+ #define SINGLENOZZLE_SWAP_PRIME_SPEED 60.0
+ #endif
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #ifndef SINGLENOZZLE_TOOLCHANGE_POSITION
+ #define SINGLENOZZLE_TOOLCHANGE_POSITION { (X_MIN_POS + 10), (Y_MIN_POS + 10), 5 }
+ #endif
+ #else
+ #ifndef SINGLENOZZLE_TOOLCHANGE_ZRAISE
+ #define SINGLENOZZLE_TOOLCHANGE_ZRAISE 2.0
+ #endif
+ #endif
+#endif
+
// Parking Extruder
#if ENABLED(PARKING_EXTRUDER)
#ifndef PARKING_EXTRUDER_GRAB_DISTANCE
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index 1c2ae52fa..6c75b028d 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -602,6 +602,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
#error "EXTRUDERS must be 1 with HEATERS_PARALLEL."
#endif
+ #if ENABLED(SINGLENOZZLE) && !defined(SINGLENOZZLE_SWAP_LENGTH)
+ #define SINGLENOZZLE_SWAP_LENGTH 0
+ #endif
+
#elif ENABLED(MK2_MULTIPLEXER)
#error "MK2_MULTIPLEXER requires 2 or more EXTRUDERS."
#elif ENABLED(SINGLENOZZLE)
diff --git a/Marlin/src/lcd/language/language_en.h b/Marlin/src/lcd/language/language_en.h
index 40e84be8a..3091dda41 100644
--- a/Marlin/src/lcd/language/language_en.h
+++ b/Marlin/src/lcd/language/language_en.h
@@ -768,6 +768,18 @@
#ifndef MSG_AUTORETRACT
#define MSG_AUTORETRACT _UxGT("AutoRetr.")
#endif
+#ifndef MSG_FILAMENT_SWAP_LENGTH
+ #define MSG_FILAMENT_SWAP_LENGTH _UxGT("Retract Distance")
+#endif
+#ifndef MSG_SINGLENOZZLE_TOOL_CHANGE
+ #define MSG_SINGLENOZZLE_TOOL_CHANGE _UxGT("Tool Change")
+#endif
+#ifndef MSG_SINGLENOZZLE_PRIME_SPD
+ #define MSG_SINGLENOZZLE_PRIME_SPD _UxGT("Prime Speed")
+#endif
+#ifndef MSG_SINGLENOZZLE_RETRACT_SPD
+ #define MSG_SINGLENOZZLE_RETRACT_SPD _UxGT("Retract Speed")
+#endif
#ifndef MSG_FILAMENTCHANGE
#define MSG_FILAMENTCHANGE _UxGT("Change filament")
#endif
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 6d8902a12..9167bbe24 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -138,6 +138,7 @@ millis_t next_lcd_update_ms;
} \
typedef void _name##_void
DEFINE_LCD_IMPLEMENTATION_DRAWMENU_SETTING_EDIT_TYPE(int16_t, int3, itostr3);
+ DEFINE_LCD_IMPLEMENTATION_DRAWMENU_SETTING_EDIT_TYPE(int16_t, int4, itostr4sign);
DEFINE_LCD_IMPLEMENTATION_DRAWMENU_SETTING_EDIT_TYPE(uint8_t, int8, i8tostr3);
DEFINE_LCD_IMPLEMENTATION_DRAWMENU_SETTING_EDIT_TYPE(float, float3, ftostr3);
DEFINE_LCD_IMPLEMENTATION_DRAWMENU_SETTING_EDIT_TYPE(float, float52, ftostr52);
@@ -267,6 +268,7 @@ millis_t next_lcd_update_ms;
typedef void _name##_void
DECLARE_MENU_EDIT_TYPE(int16_t, int3);
+ DECLARE_MENU_EDIT_TYPE(int16_t, int4);
DECLARE_MENU_EDIT_TYPE(uint8_t, int8);
DECLARE_MENU_EDIT_TYPE(float, float3);
DECLARE_MENU_EDIT_TYPE(float, float52);
@@ -974,15 +976,23 @@ void lcd_quick_feedback(const bool clear_buttons) {
#endif // POWER_LOSS_RECOVERY
+ #if ENABLED(SINGLENOZZLE)
+ void singlenozzle_swap_menu() {
+ START_MENU();
+ MENU_BACK(MSG_MAIN);
+ MENU_ITEM_EDIT(float3, MSG_FILAMENT_SWAP_LENGTH, &singlenozzle_swap_length, 0, 200);
+ MENU_MULTIPLIER_ITEM_EDIT(int4, MSG_SINGLENOZZLE_RETRACT_SPD, &singlenozzle_retract_speed, 10, 5400);
+ MENU_MULTIPLIER_ITEM_EDIT(int4, MSG_SINGLENOZZLE_PRIME_SPD, &singlenozzle_prime_speed, 10, 5400);
+ END_MENU();
+ }
+ #endif
+
#if ENABLED(MENU_ITEM_CASE_LIGHT)
#include "../feature/caselight.h"
void case_light_menu() {
START_MENU();
- //
- // ^ Main
- //
MENU_BACK(MSG_MAIN);
MENU_ITEM_EDIT_CALLBACK(int8, MSG_CASE_LIGHT_BRIGHTNESS, &case_light_brightness, 0, 255, update_case_light, true);
MENU_ITEM_EDIT_CALLBACK(bool, MSG_CASE_LIGHT, (bool*)&case_light_on, update_case_light);
@@ -999,9 +1009,6 @@ void lcd_quick_feedback(const bool clear_buttons) {
*/
static void bltouch_menu() {
START_MENU();
- //
- // ^ Main
- //
MENU_BACK(MSG_MAIN);
MENU_ITEM(gcode, MSG_BLTOUCH_RESET, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_RESET)));
MENU_ITEM(gcode, MSG_BLTOUCH_SELFTEST, PSTR("M280 P" STRINGIFY(Z_PROBE_SERVO_NR) " S" STRINGIFY(BLTOUCH_SELFTEST)));
@@ -1042,7 +1049,7 @@ void lcd_quick_feedback(const bool clear_buttons) {
void lcd_debug_menu() {
START_MENU();
- MENU_BACK(MSG_MAIN); // ^ Main
+ MENU_BACK(MSG_MAIN);
#if ENABLED(LCD_PROGRESS_BAR_TEST)
MENU_ITEM(submenu, MSG_PROGRESS_BAR_TEST, _progress_bar_test);
@@ -1494,10 +1501,6 @@ void lcd_quick_feedback(const bool clear_buttons) {
*/
void lcd_tune_menu() {
START_MENU();
-
- //
- // ^ Main
- //
MENU_BACK(MSG_MAIN);
//
@@ -3438,6 +3441,13 @@ void lcd_quick_feedback(const bool clear_buttons) {
#endif
}
+ //
+ // Set single nozzle filament retract and prime length
+ //
+ #if ENABLED(SINGLENOZZLE)
+ MENU_ITEM(submenu, MSG_SINGLENOZZLE_TOOL_CHANGE, singlenozzle_swap_menu);
+ #endif
+
//
// Set Case light on/off/brightness
//
@@ -5143,6 +5153,7 @@ void lcd_quick_feedback(const bool clear_buttons) {
typedef void _name##_void
DEFINE_MENU_EDIT_TYPE(int16_t, int3, itostr3, 1);
+ DEFINE_MENU_EDIT_TYPE(int16_t, int4, itostr4sign, 1);
DEFINE_MENU_EDIT_TYPE(uint8_t, int8, i8tostr3, 1);
DEFINE_MENU_EDIT_TYPE(float, float3, ftostr3, 1);
DEFINE_MENU_EDIT_TYPE(float, float52, ftostr52, 100);
diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp
index fae14db10..993ea3964 100644
--- a/Marlin/src/module/configuration_store.cpp
+++ b/Marlin/src/module/configuration_store.cpp
@@ -98,6 +98,11 @@ typedef struct { int16_t X, Y, Z; } tmc
#include "../feature/pause.h"
#endif
+#if ENABLED(SINGLENOZZLE)
+ #include "tool_change.h"
+ void M217_report(const bool eeprom);
+#endif
+
#if ENABLED(PID_EXTRUSION_SCALING)
#define LPQ_LEN thermalManager.lpq_len
#endif
@@ -289,6 +294,15 @@ typedef struct SettingsDataStruct {
float filament_change_unload_length[EXTRUDERS], // M603 T U
filament_change_load_length[EXTRUDERS]; // M603 T L
+ //
+ // SINGLENOZZLE toolchange values
+ //
+ #if ENABLED(SINGLENOZZLE)
+ float singlenozzle_swap_length; // M217 S
+ int16_t singlenozzle_prime_speed, // M217 P
+ singlenozzle_retract_speed; // M217 R
+ #endif
+
} SettingsData;
#pragma pack(pop)
@@ -947,6 +961,17 @@ void MarlinSettings::postprocess() {
for (uint8_t q = EXTRUDERS * 2; q--;) EEPROM_WRITE(dummy);
#endif
+ //
+ // SINGLENOZZLE
+ //
+
+ #if ENABLED(SINGLENOZZLE)
+ _FIELD_TEST(singlenozzle_swap_length);
+ EEPROM_WRITE(singlenozzle_swap_length);
+ EEPROM_WRITE(singlenozzle_prime_speed);
+ EEPROM_WRITE(singlenozzle_retract_speed);
+ #endif
+
//
// Validate CRC and Data Size
//
@@ -1582,6 +1607,17 @@ void MarlinSettings::postprocess() {
for (uint8_t q = EXTRUDERS * 2; q--;) EEPROM_READ(dummy);
#endif
+ //
+ // SINGLENOZZLE toolchange values
+ //
+
+ #if ENABLED(SINGLENOZZLE)
+ _FIELD_TEST(singlenozzle_swap_length);
+ EEPROM_READ(singlenozzle_swap_length);
+ EEPROM_READ(singlenozzle_prime_speed);
+ EEPROM_READ(singlenozzle_retract_speed);
+ #endif
+
eeprom_error = size_error(eeprom_index - (EEPROM_OFFSET));
if (eeprom_error) {
#if ENABLED(EEPROM_CHITCHAT)
@@ -1840,6 +1876,12 @@ void MarlinSettings::reset(PORTARG_SOLO) {
#endif
#endif
+ #if ENABLED(SINGLENOZZLE)
+ singlenozzle_swap_length = SINGLENOZZLE_SWAP_LENGTH;
+ singlenozzle_prime_speed = SINGLENOZZLE_SWAP_PRIME_SPEED;
+ singlenozzle_retract_speed = SINGLENOZZLE_SWAP_RETRACT_SPEED;
+ #endif
+
//
// Global Leveling
//
@@ -2897,6 +2939,15 @@ void MarlinSettings::reset(PORTARG_SOLO) {
#endif // EXTRUDERS > 2
#endif // EXTRUDERS == 1
#endif // ADVANCED_PAUSE_FEATURE
+
+ #if ENABLED(SINGLENOZZLE)
+ CONFIG_ECHO_START;
+ if (!forReplay) {
+ SERIAL_ECHOLNPGM_P(port, "SINGLENOZZLE:");
+ CONFIG_ECHO_START;
+ }
+ M217_report(true);
+ #endif
}
#endif // !DISABLE_M503
diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index 1f49cae90..a64db1f01 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -2416,6 +2416,17 @@ void Temperature::isr() {
#endif // AUTO_REPORT_TEMPERATURES
+ #if ENABLED(ULTRA_LCD)
+ void Temperature::set_heating_message(const uint8_t e) {
+ const bool heating = isHeatingHotend(e);
+ #if HOTENDS > 1
+ lcd_status_printf_P(0, heating ? PSTR("E%i " MSG_HEATING) : PSTR("E%i " MSG_COOLING), int(e + 1));
+ #else
+ lcd_setstatusPGM(heating ? PSTR("E " MSG_HEATING) : PSTR("E " MSG_COOLING));
+ #endif
+ }
+ #endif
+
#if HAS_TEMP_HOTEND
#ifndef MIN_COOLING_SLOPE_DEG
diff --git a/Marlin/src/module/temperature.h b/Marlin/src/module/temperature.h
index 8f451be2b..870345a34 100644
--- a/Marlin/src/module/temperature.h
+++ b/Marlin/src/module/temperature.h
@@ -616,6 +616,10 @@ class Temperature {
#endif
#endif
+ #if ENABLED(ULTRA_LCD)
+ static void set_heating_message(const uint8_t e);
+ #endif
+
private:
#if ENABLED(FAST_PWM_FAN)
@@ -659,7 +663,6 @@ class Temperature {
#endif
#endif // THERMAL_PROTECTION
-
};
extern Temperature thermalManager;
diff --git a/Marlin/src/module/tool_change.cpp b/Marlin/src/module/tool_change.cpp
index 2b840491c..36a89e951 100644
--- a/Marlin/src/module/tool_change.cpp
+++ b/Marlin/src/module/tool_change.cpp
@@ -25,9 +25,24 @@
#include "probe.h"
#include "motion.h"
#include "planner.h"
+#include "temperature.h"
#include "../Marlin.h"
+#if ENABLED(SINGLENOZZLE)
+ float singlenozzle_swap_length = SINGLENOZZLE_SWAP_LENGTH;
+ int16_t singlenozzle_prime_speed = SINGLENOZZLE_SWAP_PRIME_SPEED,
+ singlenozzle_retract_speed = SINGLENOZZLE_SWAP_RETRACT_SPEED;
+ uint16_t singlenozzle_temp[EXTRUDERS];
+ #if FAN_COUNT > 0
+ uint8_t singlenozzle_fan_speed[EXTRUDERS];
+ #endif
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ #include "../libs/point_t.h"
+ const point_t singlenozzle_change_point = SINGLENOZZLE_TOOLCHANGE_POSITION;
+ #endif
+#endif
+
#if ENABLED(PARKING_EXTRUDER) && PARKING_EXTRUDER_SOLENOIDS_DELAY > 0
#include "../gcode/gcode.h" // for dwell()
#endif
@@ -625,16 +640,89 @@ void tool_change(const uint8_t tmp_extruder, const float fr_mm_s/*=0.0*/, bool n
UNUSED(no_move);
#if ENABLED(MK2_MULTIPLEXER)
- if (tmp_extruder >= E_STEPPERS)
- return invalid_extruder_error(tmp_extruder);
-
+ if (tmp_extruder >= E_STEPPERS) return invalid_extruder_error(tmp_extruder);
select_multiplexed_stepper(tmp_extruder);
#endif
#if EXTRUDERS > 1
- // Set the new active extruder
- active_extruder = tmp_extruder;
- #endif
+
+ #if ENABLED(SINGLENOZZLE)
+
+ #if ENABLED(PREVENT_COLD_EXTRUSION)
+ if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) {
+ SERIAL_ERROR_START();
+ SERIAL_ERRORLNPGM(MSG_HOTEND_TOO_COLD);
+ return;
+ }
+ #endif
+
+ #if FAN_COUNT > 0
+ singlenozzle_fan_speed[active_extruder] = fan_speed[0];
+ fan_speed[0] = singlenozzle_fan_speed[tmp_extruder];
+ #endif
+
+ set_destination_from_current();
+
+ current_position[Z_AXIS] += (
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ singlenozzle_change_point.z
+ #else
+ SINGLENOZZLE_TOOLCHANGE_ZRAISE
+ #endif
+ );
+
+ planner.buffer_line(current_position, planner.max_feedrate_mm_s[Z_AXIS], active_extruder);
+
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ current_position[X_AXIS] = singlenozzle_change_point.x;
+ current_position[Y_AXIS] = singlenozzle_change_point.y;
+ planner.buffer_line(current_position, planner.max_feedrate_mm_s[Y_AXIS], active_extruder);
+ #endif
+
+ if (singlenozzle_swap_length) {
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ do_pause_e_move(-singlenozzle_swap_length, MMM_TO_MMS(singlenozzle_retract_speed));
+ #else
+ current_position[E_AXIS] -= singlenozzle_swap_length / planner.e_factor[active_extruder];
+ planner.buffer_line(current_position, MMM_TO_MMS(singlenozzle_retract_speed), active_extruder);
+ #endif
+ }
+
+ singlenozzle_temp[active_extruder] = thermalManager.target_temperature[0];
+ if (singlenozzle_temp[tmp_extruder] && singlenozzle_temp[tmp_extruder] != singlenozzle_temp[active_extruder]) {
+ thermalManager.setTargetHotend(singlenozzle_temp[tmp_extruder], 0);
+ #if ENABLED(ULTRA_LCD)
+ thermalManager.set_heating_message(0);
+ #endif
+ (void)thermalManager.wait_for_hotend(0, false); // Wait for heating or cooling
+ }
+
+ active_extruder = tmp_extruder;
+
+ if (singlenozzle_swap_length) {
+ #if ENABLED(ADVANCED_PAUSE_FEATURE)
+ do_pause_e_move(singlenozzle_swap_length, singlenozzle_prime_speed);
+ #else
+ current_position[E_AXIS] += singlenozzle_swap_length / planner.e_factor[tmp_extruder];
+ planner.buffer_line(current_position, singlenozzle_prime_speed, tmp_extruder);
+ #endif
+ }
+
+ #if ENABLED(SINGLENOZZLE_SWAP_PARK)
+ current_position[X_AXIS] = destination[X_AXIS];
+ current_position[Y_AXIS] = destination[Y_AXIS];
+ planner.buffer_line(current_position, planner.max_feedrate_mm_s[Y_AXIS], active_extruder);
+ #endif
+
+ do_blocking_move_to(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS]);
+
+ #else // !SINGLENOZZLE
+
+ active_extruder = tmp_extruder;
+
+ #endif // !SINGLENOZZLE
+
+ #endif // EXTRUDERS > 1
#endif // HOTENDS <= 1
diff --git a/Marlin/src/module/tool_change.h b/Marlin/src/module/tool_change.h
index 53da00d17..2edcf95c9 100644
--- a/Marlin/src/module/tool_change.h
+++ b/Marlin/src/module/tool_change.h
@@ -50,6 +50,16 @@
#endif // PARKING_EXTRUDER
+#if ENABLED(SINGLENOZZLE)
+ extern float singlenozzle_swap_length;
+ extern int16_t singlenozzle_prime_speed,
+ singlenozzle_retract_speed;
+ extern uint16_t singlenozzle_temp[EXTRUDERS];
+ #if FAN_COUNT > 0
+ extern uint8_t singlenozzle_fan_speed[EXTRUDERS];
+ #endif
+#endif
+
/**
* Perform a tool-change, which may result in moving the
* previous tool out of the way and the new tool into place.
diff --git a/buildroot/share/tests/STM32F1_tests b/buildroot/share/tests/STM32F1_tests
index b9b91ff66..5a769ad43 100755
--- a/buildroot/share/tests/STM32F1_tests
+++ b/buildroot/share/tests/STM32F1_tests
@@ -5,8 +5,9 @@ set -e
restore_configs
opt_set MOTHERBOARD BOARD_STM32F1R
+opt_set EXTRUDERS 2
opt_enable EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT \
- PAREN_COMMENTS GCODE_MOTION_MODES
+ PAREN_COMMENTS GCODE_MOTION_MODES SINGLENOZZLE SINGLENOZZLE_SWAP_LENGTH
exec_test $1 $2 "STM32F1R EEPROM_SETTINGS EEPROM_CHITCHAT REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT PAREN_COMMENTS GCODE_MOTION_MODES"
opt_enable SPINDLE_LASER_ENABLE