Browse Source

Single X Duplication Extension (#13373)

* Multi-nozzle selective duplication
* Use a bit-mask, reduce stepper_indirection.h size
* Tweak the multi-nozzle duplication description
* Use 'S' as a bool in M605
* Add HAS_DUPLICATION_MODE conditional
* Remove '_MODE' from the option name
* M605 in the style of Stacker M280
* Also include direct mask style (P)
InsanityAutomation 6 years ago
parent
commit
050eac03af
86 changed files with 287 additions and 218 deletions
  1. 2
    2
      Marlin/Configuration_adv.h
  2. 14
    11
      Marlin/src/feature/runout.h
  3. 1
    1
      Marlin/src/gcode/calibrate/G28.cpp
  4. 1
    1
      Marlin/src/gcode/calibrate/G34_M422.cpp
  5. 32
    9
      Marlin/src/gcode/control/M605.cpp
  6. 1
    1
      Marlin/src/gcode/gcode.cpp
  7. 1
    1
      Marlin/src/gcode/gcode.h
  8. 1
    0
      Marlin/src/inc/Conditionals_LCD.h
  9. 10
    8
      Marlin/src/inc/SanityCheck.h
  10. 7
    3
      Marlin/src/module/motion.cpp
  11. 9
    5
      Marlin/src/module/motion.h
  12. 1
    1
      Marlin/src/module/planner.cpp
  13. 61
    29
      Marlin/src/module/stepper_indirection.h
  14. 2
    2
      config/default/Configuration_adv.h
  15. 2
    2
      config/examples/3DFabXYZ/Migbot/Configuration_adv.h
  16. 2
    2
      config/examples/AlephObjects/TAZ4/Configuration_adv.h
  17. 2
    2
      config/examples/AliExpress/UM2pExt/Configuration_adv.h
  18. 2
    2
      config/examples/Anet/A2/Configuration_adv.h
  19. 2
    2
      config/examples/Anet/A2plus/Configuration_adv.h
  20. 2
    2
      config/examples/Anet/A6/Configuration_adv.h
  21. 2
    2
      config/examples/Anet/A8/Configuration_adv.h
  22. 2
    2
      config/examples/AnyCubic/i3/Configuration_adv.h
  23. 2
    2
      config/examples/ArmEd/Configuration_adv.h
  24. 2
    2
      config/examples/BIBO/TouchX/cyclops/Configuration_adv.h
  25. 2
    2
      config/examples/BIBO/TouchX/default/Configuration_adv.h
  26. 2
    2
      config/examples/BQ/Hephestos/Configuration_adv.h
  27. 2
    2
      config/examples/BQ/Hephestos_2/Configuration_adv.h
  28. 2
    2
      config/examples/BQ/WITBOX/Configuration_adv.h
  29. 2
    2
      config/examples/Cartesio/Configuration_adv.h
  30. 2
    2
      config/examples/Creality/CR-10/Configuration_adv.h
  31. 2
    2
      config/examples/Creality/CR-10S/Configuration_adv.h
  32. 2
    2
      config/examples/Creality/CR-10_5S/Configuration_adv.h
  33. 2
    2
      config/examples/Creality/CR-10mini/Configuration_adv.h
  34. 2
    2
      config/examples/Creality/CR-8/Configuration_adv.h
  35. 2
    2
      config/examples/Creality/Ender-2/Configuration_adv.h
  36. 2
    2
      config/examples/Creality/Ender-3/Configuration_adv.h
  37. 2
    2
      config/examples/Creality/Ender-4/Configuration_adv.h
  38. 2
    2
      config/examples/Einstart-S/Configuration_adv.h
  39. 2
    2
      config/examples/Felix/Configuration_adv.h
  40. 2
    2
      config/examples/FlashForge/CreatorPro/Configuration_adv.h
  41. 2
    2
      config/examples/FolgerTech/i3-2020/Configuration_adv.h
  42. 2
    2
      config/examples/Formbot/Raptor/Configuration_adv.h
  43. 2
    2
      config/examples/Formbot/T_Rex_2+/Configuration_adv.h
  44. 2
    2
      config/examples/Formbot/T_Rex_3/Configuration_adv.h
  45. 2
    2
      config/examples/Geeetech/A10M/Configuration_adv.h
  46. 2
    2
      config/examples/Geeetech/A20M/Configuration_adv.h
  47. 2
    2
      config/examples/Geeetech/MeCreator2/Configuration_adv.h
  48. 2
    2
      config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h
  49. 2
    2
      config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h
  50. 2
    2
      config/examples/Infitary/i3-M508/Configuration_adv.h
  51. 2
    2
      config/examples/JGAurora/A5/Configuration_adv.h
  52. 2
    2
      config/examples/MakerParts/Configuration_adv.h
  53. 2
    2
      config/examples/Malyan/M150/Configuration_adv.h
  54. 2
    2
      config/examples/Malyan/M200/Configuration_adv.h
  55. 2
    2
      config/examples/Micromake/C1/enhanced/Configuration_adv.h
  56. 2
    2
      config/examples/Mks/Robin/Configuration_adv.h
  57. 2
    2
      config/examples/Mks/Sbase/Configuration_adv.h
  58. 2
    2
      config/examples/RapideLite/RL200/Configuration_adv.h
  59. 2
    2
      config/examples/RigidBot/Configuration_adv.h
  60. 2
    2
      config/examples/SCARA/Configuration_adv.h
  61. 2
    2
      config/examples/Sanguinololu/Configuration_adv.h
  62. 2
    2
      config/examples/TheBorg/Configuration_adv.h
  63. 2
    2
      config/examples/TinyBoy2/Configuration_adv.h
  64. 2
    2
      config/examples/Tronxy/X3A/Configuration_adv.h
  65. 2
    2
      config/examples/Tronxy/X5S-2E/Configuration_adv.h
  66. 2
    2
      config/examples/UltiMachine/Archim1/Configuration_adv.h
  67. 2
    2
      config/examples/UltiMachine/Archim2/Configuration_adv.h
  68. 2
    2
      config/examples/VORONDesign/Configuration_adv.h
  69. 2
    2
      config/examples/Velleman/K8200/Configuration_adv.h
  70. 2
    2
      config/examples/Velleman/K8400/Configuration_adv.h
  71. 2
    2
      config/examples/WASP/PowerWASP/Configuration_adv.h
  72. 2
    2
      config/examples/Wanhao/Duplicator 6/Configuration_adv.h
  73. 2
    2
      config/examples/delta/Anycubic/Kossel/Configuration_adv.h
  74. 2
    2
      config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h
  75. 2
    2
      config/examples/delta/FLSUN/kossel/Configuration_adv.h
  76. 2
    2
      config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h
  77. 2
    2
      config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h
  78. 2
    2
      config/examples/delta/MKS/SBASE/Configuration_adv.h
  79. 2
    2
      config/examples/delta/Tevo Little Monster/Configuration_adv.h
  80. 2
    2
      config/examples/delta/generic/Configuration_adv.h
  81. 2
    2
      config/examples/delta/kossel_mini/Configuration_adv.h
  82. 2
    2
      config/examples/delta/kossel_xl/Configuration_adv.h
  83. 2
    2
      config/examples/gCreate/gMax1.5+/Configuration_adv.h
  84. 2
    2
      config/examples/makibox/Configuration_adv.h
  85. 2
    2
      config/examples/tvrrug/Round2/Configuration_adv.h
  86. 2
    2
      config/examples/wt150/Configuration_adv.h

+ 2
- 2
Marlin/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 14
- 11
Marlin/src/feature/runout.h View File

230
     private:
230
     private:
231
       static inline bool poll_runout_state(const uint8_t extruder) {
231
       static inline bool poll_runout_state(const uint8_t extruder) {
232
         const uint8_t runout_states = poll_runout_states();
232
         const uint8_t runout_states = poll_runout_states();
233
+
233
         #if NUM_RUNOUT_SENSORS == 1
234
         #if NUM_RUNOUT_SENSORS == 1
234
           UNUSED(extruder);
235
           UNUSED(extruder);
235
-          return runout_states;                     // A single sensor applying to all extruders
236
-        #else
237
-          #if ENABLED(DUAL_X_CARRIAGE)
238
-            if (dual_x_carriage_mode == DXC_DUPLICATION_MODE || dual_x_carriage_mode == DXC_SCALED_DUPLICATION_MODE)
239
-              return runout_states;                 // Any extruder
240
-            else
241
-          #elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
242
-            if (extruder_duplication_enabled)
243
-              return runout_states;                 // Any extruder
244
-            else
236
+        #endif
237
+
238
+        if (true
239
+          #if NUM_RUNOUT_SENSORS > 1
240
+            #if ENABLED(DUAL_X_CARRIAGE)
241
+              && (dual_x_carriage_mode == DXC_DUPLICATION_MODE || dual_x_carriage_mode == DXC_SCALED_DUPLICATION_MODE)
242
+            #elif ENABLED(MULTI_NOZZLE_DUPLICATION)
243
+              && extruder_duplication_enabled
244
+            #endif
245
           #endif
245
           #endif
246
-              return TEST(runout_states, extruder); // Specific extruder
246
+        ) return runout_states;               // Any extruder
247
+
248
+        #if NUM_RUNOUT_SENSORS > 1
249
+          return TEST(runout_states, extruder); // Specific extruder
247
         #endif
250
         #endif
248
       }
251
       }
249
 
252
 

+ 1
- 1
Marlin/src/gcode/calibrate/G28.cpp View File

258
     tool_change(0, 0, true);
258
     tool_change(0, 0, true);
259
   #endif
259
   #endif
260
 
260
 
261
-  #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
261
+  #if HAS_DUPLICATION_MODE
262
     extruder_duplication_enabled = false;
262
     extruder_duplication_enabled = false;
263
   #endif
263
   #endif
264
 
264
 

+ 1
- 1
Marlin/src/gcode/calibrate/G34_M422.cpp View File

119
       tool_change(0, 0, true);
119
       tool_change(0, 0, true);
120
     #endif
120
     #endif
121
 
121
 
122
-    #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
122
+    #if HAS_DUPLICATION_MODE
123
       extruder_duplication_enabled = false;
123
       extruder_duplication_enabled = false;
124
     #endif
124
     #endif
125
 
125
 

+ 32
- 9
Marlin/src/gcode/control/M605.cpp View File

22
 
22
 
23
 #include "../../inc/MarlinConfig.h"
23
 #include "../../inc/MarlinConfig.h"
24
 
24
 
25
-#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
25
+#if HAS_DUPLICATION_MODE
26
 
26
 
27
 //#define DEBUG_DXC_MODE
27
 //#define DEBUG_DXC_MODE
28
 
28
 
38
    * M605: Set dual x-carriage movement mode
38
    * M605: Set dual x-carriage movement mode
39
    *
39
    *
40
    *    M605    : Restore user specified DEFAULT_DUAL_X_CARRIAGE_MODE
40
    *    M605    : Restore user specified DEFAULT_DUAL_X_CARRIAGE_MODE
41
-   *    M605 S0: Full control mode. The slicer has full control over x-carriage movement
42
-   *    M605 S1: Auto-park mode. The inactive head will auto park/unpark without slicer involvement
41
+   *    M605 S0 : Full control mode. The slicer has full control over x-carriage movement
42
+   *    M605 S1 : Auto-park mode. The inactive head will auto park/unpark without slicer involvement
43
    *    M605 S2 [Xnnn] [Rmmm]: Duplication mode. The second extruder will duplicate the first with nnn
43
    *    M605 S2 [Xnnn] [Rmmm]: Duplication mode. The second extruder will duplicate the first with nnn
44
    *                         units x-offset and an optional differential hotend temperature of
44
    *                         units x-offset and an optional differential hotend temperature of
45
    *                         mmm degrees. E.g., with "M605 S2 X100 R2" the second extruder will duplicate
45
    *                         mmm degrees. E.g., with "M605 S2 X100 R2" the second extruder will duplicate
59
       const DualXMode previous_mode = dual_x_carriage_mode;
59
       const DualXMode previous_mode = dual_x_carriage_mode;
60
 
60
 
61
       dual_x_carriage_mode = (DualXMode)parser.value_byte();
61
       dual_x_carriage_mode = (DualXMode)parser.value_byte();
62
+
63
+      #if 0
62
       scaled_duplication_mode = false;
64
       scaled_duplication_mode = false;
63
 
65
 
64
       if (dual_x_carriage_mode == DXC_SCALED_DUPLICATION_MODE) {
66
       if (dual_x_carriage_mode == DXC_SCALED_DUPLICATION_MODE) {
77
         }
79
         }
78
         return;
80
         return;
79
       }
81
       }
82
+      #endif
80
 
83
 
81
       switch (dual_x_carriage_mode) {
84
       switch (dual_x_carriage_mode) {
82
         case DXC_FULL_CONTROL_MODE:
85
         case DXC_FULL_CONTROL_MODE:
147
     #endif // DEBUG_DXC_MODE
150
     #endif // DEBUG_DXC_MODE
148
   }
151
   }
149
 
152
 
150
-#elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
153
+#elif ENABLED(MULTI_NOZZLE_DUPLICATION)
151
 
154
 
155
+  /**
156
+   * M605: Set multi-nozzle duplication mode
157
+   *
158
+   *  S2       - Enable duplication mode
159
+   *  P[mask]  - Bit-mask of nozzles to include in the duplication set.
160
+   *             A value of 0 disables duplication.
161
+   *  E[index] - Last nozzle index to include in the duplication set.
162
+   *             A value of 0 disables duplication.
163
+   */
152
   void GcodeSuite::M605() {
164
   void GcodeSuite::M605() {
153
-    planner.synchronize();
154
-    extruder_duplication_enabled = parser.intval('S') == (int)DXC_DUPLICATION_MODE;
165
+    if (parser.seen("EPS")) {
166
+      planner.synchronize();
167
+      if (parser.seenval('P')) duplication_e_mask = parser.value_int();   // Set the mask directly
168
+      else if (parser.seenval('E')) duplication_e_mask = pow(2, e + 1) - 1;    // Set the mask by E index
169
+      const bool ena = (2 == parser.intval('S', extruder_duplication_enabled ? 2 : 0));
170
+      extruder_duplication_enabled = ena && (duplication_e_mask >= 3);
171
+    }
155
     SERIAL_ECHO_START();
172
     SERIAL_ECHO_START();
156
     SERIAL_ECHOPGM(MSG_DUPLICATION_MODE);
173
     SERIAL_ECHOPGM(MSG_DUPLICATION_MODE);
157
-    serialprintln_onoff(extruder_duplication_enabled);
174
+    serialprint_onoff(extruder_duplication_enabled);
175
+    if (ena) {
176
+      SERIAL_ECHOPGM(" ( ");
177
+      HOTEND_LOOP() if (TEST(duplication_e_mask, e)) { SERIAL_ECHO(e); SERIAL_CHAR(' '); }
178
+      SERIAL_CHAR(')');
179
+    }
180
+    SERIAL_EOL();
158
   }
181
   }
159
 
182
 
160
-#endif // DUAL_NOZZLE_DUPLICATION_MODE
183
+#endif // MULTI_NOZZLE_DUPLICATION
161
 
184
 
162
-#endif // DUAL_X_CARRIAGE || DUAL_NOZZLE_DUPLICATION_MODE
185
+#endif // HAS_DUPICATION_MODE

+ 1
- 1
Marlin/src/gcode/gcode.cpp View File

650
         case 603: M603(); break;                                  // M603: Configure Filament Change
650
         case 603: M603(); break;                                  // M603: Configure Filament Change
651
       #endif
651
       #endif
652
 
652
 
653
-      #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
653
+      #if HAS_DUPLICATION_MODE
654
         case 605: M605(); break;                                  // M605: Set Dual X Carriage movement mode
654
         case 605: M605(); break;                                  // M605: Set Dual X Carriage movement mode
655
       #endif
655
       #endif
656
 
656
 

+ 1
- 1
Marlin/src/gcode/gcode.h View File

769
     static void M603();
769
     static void M603();
770
   #endif
770
   #endif
771
 
771
 
772
-  #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
772
+  #if HAS_DUPLICATION_MODE
773
     static void M605();
773
     static void M605();
774
   #endif
774
   #endif
775
 
775
 

+ 1
- 0
Marlin/src/inc/Conditionals_LCD.h View File

435
 #define SWITCHING_NOZZLE_TWO_SERVOS defined(SWITCHING_NOZZLE_E1_SERVO_NR)
435
 #define SWITCHING_NOZZLE_TWO_SERVOS defined(SWITCHING_NOZZLE_E1_SERVO_NR)
436
 
436
 
437
 #define HAS_HOTEND_OFFSET (HOTENDS > 1)
437
 #define HAS_HOTEND_OFFSET (HOTENDS > 1)
438
+#define HAS_DUPLICATION_MODE (ENABLED(DUAL_X_CARRIAGE) || ENABLED(MULTI_NOZZLE_DUPLICATION))
438
 
439
 
439
 /**
440
 /**
440
  * DISTINCT_E_FACTORS affects how some E factors are accessed
441
  * DISTINCT_E_FACTORS affects how some E factors are accessed

+ 10
- 8
Marlin/src/inc/SanityCheck.h View File

345
   #error "TMC_Z_CALIBRATION has been deprecated in favor of Z_STEPPER_AUTO_ALIGN. Please update your configuration."
345
   #error "TMC_Z_CALIBRATION has been deprecated in favor of Z_STEPPER_AUTO_ALIGN. Please update your configuration."
346
 #elif defined(Z_MIN_PROBE_ENDSTOP)
346
 #elif defined(Z_MIN_PROBE_ENDSTOP)
347
   #error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it from Configuration.h."
347
   #error "Z_MIN_PROBE_ENDSTOP is no longer required. Please remove it from Configuration.h."
348
+#elif defined(DUAL_NOZZLE_DUPLICATION_MODE)
349
+  #error "DUAL_NOZZLE_DUPLICATION_MODE is now MULTI_NOZZLE_DUPLICATION. Please update your configuration."
348
 #endif
350
 #endif
349
 
351
 
350
 #define BOARD_MKS_13     -47
352
 #define BOARD_MKS_13     -47
1444
 #endif
1446
 #endif
1445
 
1447
 
1446
 /**
1448
 /**
1447
- * Basic 2-nozzle duplication mode
1449
+ * Basic multi hotend duplication mode
1448
  */
1450
  */
1449
-#if ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
1450
-  #if HOTENDS != 2
1451
-    #error "DUAL_NOZZLE_DUPLICATION_MODE requires exactly 2 hotends."
1451
+#if ENABLED(MULTI_NOZZLE_DUPLICATION)
1452
+  #if HOTENDS < 2
1453
+    #error "MULTI_NOZZLE_DUPLICATION requires 2 or more hotends."
1452
   #elif ENABLED(DUAL_X_CARRIAGE)
1454
   #elif ENABLED(DUAL_X_CARRIAGE)
1453
-    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with DUAL_X_CARRIAGE."
1455
+    #error "MULTI_NOZZLE_DUPLICATION is incompatible with DUAL_X_CARRIAGE."
1454
   #elif ENABLED(SINGLENOZZLE)
1456
   #elif ENABLED(SINGLENOZZLE)
1455
-    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SINGLENOZZLE."
1457
+    #error "MULTI_NOZZLE_DUPLICATION is incompatible with SINGLENOZZLE."
1456
   #elif ENABLED(MIXING_EXTRUDER)
1458
   #elif ENABLED(MIXING_EXTRUDER)
1457
-    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with MIXING_EXTRUDER."
1459
+    #error "MULTI_NOZZLE_DUPLICATION is incompatible with MIXING_EXTRUDER."
1458
   #elif ENABLED(SWITCHING_EXTRUDER)
1460
   #elif ENABLED(SWITCHING_EXTRUDER)
1459
-    #error "DUAL_NOZZLE_DUPLICATION_MODE is incompatible with SWITCHING_EXTRUDER."
1461
+    #error "MULTI_NOZZLE_DUPLICATION is incompatible with SWITCHING_EXTRUDER."
1460
   #endif
1462
   #endif
1461
 #endif
1463
 #endif
1462
 
1464
 

+ 7
- 3
Marlin/src/module/motion.cpp View File

872
 #endif // !IS_KINEMATIC
872
 #endif // !IS_KINEMATIC
873
 #endif // !UBL_SEGMENTED
873
 #endif // !UBL_SEGMENTED
874
 
874
 
875
-#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
876
-  bool extruder_duplication_enabled = false,                              // Used in Dual X mode 2 & 3
877
-       scaled_duplication_mode      = false;                              // Used in Dual X mode 2 & 3
875
+#if HAS_DUPLICATION_MODE
876
+  bool extruder_duplication_enabled;
877
+       //scaled_duplication_mode;
878
+#endif
879
+
880
+#if ENABLED(MULTI_NOZZLE_DUPLICATION) && HOTENDS > 2
881
+  uint8_t duplication_e_mask; // = 0
878
 #endif
882
 #endif
879
 
883
 
880
 #if ENABLED(DUAL_X_CARRIAGE)
884
 #if ENABLED(DUAL_X_CARRIAGE)

+ 9
- 5
Marlin/src/module/motion.h View File

313
 #endif
313
 #endif
314
 
314
 
315
 /**
315
 /**
316
- * Dual X Carriage / Dual Nozzle
316
+ * Duplication mode
317
  */
317
  */
318
-#if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
319
-  extern bool extruder_duplication_enabled,       // Used in Dual X mode 2
320
-              scaled_duplication_mode;            // Used in Dual X mode 3
318
+#if HAS_DUPLICATION_MODE
319
+  extern bool extruder_duplication_enabled;       // Used in Dual X mode 2
320
+              //scaled_duplication_mode;            // Used in Dual X mode 3
321
+#endif
322
+
323
+#if ENABLED(MULTI_NOZZLE_DUPLICATION) && HOTENDS > 2
324
+  uint8_t duplication_e_mask;
321
 #endif
325
 #endif
322
 
326
 
323
 /**
327
 /**
346
 
350
 
347
   FORCE_INLINE int x_home_dir(const uint8_t extruder) { return extruder ? X2_HOME_DIR : X_HOME_DIR; }
351
   FORCE_INLINE int x_home_dir(const uint8_t extruder) { return extruder ? X2_HOME_DIR : X_HOME_DIR; }
348
 
352
 
349
-#elif ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
353
+#elif ENABLED(MULTI_NOZZLE_DUPLICATION)
350
 
354
 
351
   enum DualXMode : char {
355
   enum DualXMode : char {
352
     DXC_DUPLICATION_MODE = 2
356
     DXC_DUPLICATION_MODE = 2

+ 1
- 1
Marlin/src/module/planner.cpp View File

1996
           #endif // EXTRUDERS > 1
1996
           #endif // EXTRUDERS > 1
1997
           enable_E0();
1997
           enable_E0();
1998
           g_uc_extruder_last_move[0] = (BLOCK_BUFFER_SIZE) * 2;
1998
           g_uc_extruder_last_move[0] = (BLOCK_BUFFER_SIZE) * 2;
1999
-          #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
1999
+          #if HAS_DUPLICATION_MODE
2000
             if (extruder_duplication_enabled) {
2000
             if (extruder_duplication_enabled) {
2001
               enable_E1();
2001
               enable_E1();
2002
               g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2;
2002
               g_uc_extruder_last_move[1] = (BLOCK_BUFFER_SIZE) * 2;

+ 61
- 29
Marlin/src/module/stepper_indirection.h View File

593
   #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
593
   #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
594
   #define   NORM_E_DIR(E)   do{ E0_DIR_WRITE(TEST(E, 0) ? !INVERT_E0_DIR:  INVERT_E0_DIR); }while(0)
594
   #define   NORM_E_DIR(E)   do{ E0_DIR_WRITE(TEST(E, 0) ? !INVERT_E0_DIR:  INVERT_E0_DIR); }while(0)
595
   #define    REV_E_DIR(E)   do{ E0_DIR_WRITE(TEST(E, 0) ?  INVERT_E0_DIR: !INVERT_E0_DIR); }while(0)
595
   #define    REV_E_DIR(E)   do{ E0_DIR_WRITE(TEST(E, 0) ?  INVERT_E0_DIR: !INVERT_E0_DIR); }while(0)
596
-#elif E_STEPPERS > 5
597
-  #define E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; case 4: E4_STEP_WRITE(V); case 5: E5_STEP_WRITE(V); } }while(0)
598
-  #define   NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 4: E4_DIR_WRITE(!INVERT_E4_DIR); case 5: E5_DIR_WRITE(!INVERT_E5_DIR); } }while(0)
599
-  #define    REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); break; case 4: E4_DIR_WRITE( INVERT_E4_DIR); case 5: E5_DIR_WRITE( INVERT_E5_DIR); } }while(0)
600
-#elif E_STEPPERS > 4
601
-  #define E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; case 4: E4_STEP_WRITE(V); } }while(0)
602
-  #define   NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 4: E4_DIR_WRITE(!INVERT_E4_DIR); } }while(0)
603
-  #define    REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); break; case 4: E4_DIR_WRITE( INVERT_E4_DIR); } }while(0)
604
-#elif E_STEPPERS > 3
605
-  #define E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); } }while(0)
606
-  #define   NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); } }while(0)
607
-  #define    REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); } }while(0)
608
-#elif E_STEPPERS > 2
609
-  #define E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); } }while(0)
610
-  #define   NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); } }while(0)
611
-  #define    REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); } }while(0)
596
+
612
 #elif E_STEPPERS > 1
597
 #elif E_STEPPERS > 1
613
-  #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(DUAL_NOZZLE_DUPLICATION_MODE)
614
 
598
 
615
-    #define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled)  { E0_STEP_WRITE(V); E1_STEP_WRITE(V); } \
616
-                                                  else if ((E) == 0) { E0_STEP_WRITE(V); } \
617
-                                                  else               { E1_STEP_WRITE(V); } }while(0)
599
+  #if E_STEPPERS > 5
600
+    #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; case 4: E4_STEP_WRITE(V); case 5: E5_STEP_WRITE(V); } }while(0)
601
+    #define   _NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 4: E4_DIR_WRITE(!INVERT_E4_DIR); case 5: E5_DIR_WRITE(!INVERT_E5_DIR); } }while(0)
602
+    #define    _REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); break; case 4: E4_DIR_WRITE( INVERT_E4_DIR); case 5: E5_DIR_WRITE( INVERT_E5_DIR); } }while(0)
603
+  #elif E_STEPPERS > 4
604
+    #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; case 4: E4_STEP_WRITE(V); } }while(0)
605
+    #define   _NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); break; case 4: E4_DIR_WRITE(!INVERT_E4_DIR); } }while(0)
606
+    #define    _REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); break; case 4: E4_DIR_WRITE( INVERT_E4_DIR); } }while(0)
607
+  #elif E_STEPPERS > 3
608
+    #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); } }while(0)
609
+    #define   _NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); break; case 3: E3_DIR_WRITE(!INVERT_E3_DIR); } }while(0)
610
+    #define    _REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); break; case 3: E3_DIR_WRITE( INVERT_E3_DIR); } }while(0)
611
+  #elif E_STEPPERS > 2
612
+    #define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); } }while(0)
613
+    #define   _NORM_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE(!INVERT_E0_DIR); break; case 1: E1_DIR_WRITE(!INVERT_E1_DIR); break; case 2: E2_DIR_WRITE(!INVERT_E2_DIR); } }while(0)
614
+    #define    _REV_E_DIR(E)   do{ switch (E) { case 0: E0_DIR_WRITE( INVERT_E0_DIR); break; case 1: E1_DIR_WRITE( INVERT_E1_DIR); break; case 2: E2_DIR_WRITE( INVERT_E2_DIR); } }while(0)
615
+  #else
616
+    #define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
617
+    #define   _NORM_E_DIR(E)   do{ if (E == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } }while(0)
618
+    #define    _REV_E_DIR(E)   do{ if (E == 0) { E0_DIR_WRITE( INVERT_E0_DIR); } else { E1_DIR_WRITE( INVERT_E1_DIR); } }while(0)
619
+  #endif
620
+
621
+  #if ENABLED(DUAL_X_CARRIAGE) || ENABLED(MULTI_NOZZLE_DUPLICATION)
622
+
623
+    #define NDIR(N) _DUPE(DIR,!INVERT_E##N##_DIR)
624
+    #define RDIR(N) _DUPE(DIR, INVERT_E##N##_DIR)
625
+    #define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { DUPE(STEP,V); } else _E_STEP_WRITE(E,V); }while(0)
618
 
626
 
619
-    #define   NORM_E_DIR(E)   do{ if (extruder_duplication_enabled)  { E0_DIR_WRITE(!INVERT_E0_DIR); E1_DIR_WRITE(!INVERT_E1_DIR); } \
620
-                                                  else if ((E) == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } \
621
-                                                  else               { E1_DIR_WRITE(!INVERT_E1_DIR); } }while(0)
627
+    #if E_STEPPERS > 2
628
+      #define _DUPE(N,T,V)    do{ if (duplication_e_mask <= (N)) E##N##_##T##_WRITE(V); }while(0)
629
+      #if E_STEPPERS > 5
630
+        #define DUPE(T,V)     do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); _DUPE(5,T,V); }while(0)
631
+        #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); NDIR(5); } else _NORM_E_DIR(E); }while(0)
632
+        #define REV_E_DIR(E)  do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); RDIR(5); } else  _REV_E_DIR(E); }while(0)
633
+      #elif E_STEPPERS > 4
634
+        #define DUPE(T,V)     do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); _DUPE(4,T,V); }while(0)
635
+        #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); NDIR(4); } else _NORM_E_DIR(E); }while(0)
636
+        #define REV_E_DIR(E)  do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); RDIR(4); } else  _REV_E_DIR(E); }while(0)
637
+      #elif E_STEPPERS > 3
638
+        #define DUPE(T,V)     do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); _DUPE(3,T,V); }while(0)
639
+        #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); NDIR(3); } else _NORM_E_DIR(E); }while(0)
640
+        #define REV_E_DIR(E)  do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); RDIR(3); } else  _REV_E_DIR(E); }while(0)
641
+      #else
642
+        #define DUPE(T,V)     do{ _DUPE(0,T,V); _DUPE(1,T,V); _DUPE(2,T,V); }while(0)
643
+        #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); NDIR(2); } else _NORM_E_DIR(E); }while(0)
644
+        #define REV_E_DIR(E)  do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); RDIR(2); } else  _REV_E_DIR(E); }while(0)
645
+      #endif
646
+    #else
647
+      #define _DUPE(T,V)    do{ E0_##T##_WRITE(V); E1_##T##_WRITE(V); }while(0)
648
+      #define DUPE(T,V)  _DUPE(T,V)
649
+      #define NORM_E_DIR(E) do{ if (extruder_duplication_enabled) { NDIR(0); NDIR(1); } else _NORM_E_DIR(E); }while(0)
650
+      #define REV_E_DIR(E)  do{ if (extruder_duplication_enabled) { RDIR(0); RDIR(1); } else  _REV_E_DIR(E); }while(0)
651
+    #endif
622
 
652
 
623
-    #define    REV_E_DIR(E)   do{ if (extruder_duplication_enabled)  { E0_DIR_WRITE( INVERT_E0_DIR); E1_DIR_WRITE( INVERT_E1_DIR); } \
624
-                                                  else if ((E) == 0) { E0_DIR_WRITE( INVERT_E0_DIR); } \
625
-                                                  else               { E1_DIR_WRITE( INVERT_E1_DIR); } }while(0)
626
   #else
653
   #else
627
-    #define E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
628
-    #define   NORM_E_DIR(E)   do{ if (E == 0) { E0_DIR_WRITE(!INVERT_E0_DIR); } else { E1_DIR_WRITE(!INVERT_E1_DIR); } }while(0)
629
-    #define    REV_E_DIR(E)   do{ if (E == 0) { E0_DIR_WRITE( INVERT_E0_DIR); } else { E1_DIR_WRITE( INVERT_E1_DIR); } }while(0)
654
+
655
+    #define E_STEP_WRITE(E,V) _E_STEP_WRITE(E,V)
656
+    #define   NORM_E_DIR(E)   _NORM_E_DIR(E)
657
+    #define    REV_E_DIR(E)   _REV_E_DIR(E)
658
+
630
   #endif
659
   #endif
660
+
631
 #elif E_STEPPERS
661
 #elif E_STEPPERS
632
   #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
662
   #define E_STEP_WRITE(E,V) E0_STEP_WRITE(V)
633
   #define   NORM_E_DIR(E)   E0_DIR_WRITE(!INVERT_E0_DIR)
663
   #define   NORM_E_DIR(E)   E0_DIR_WRITE(!INVERT_E0_DIR)
634
   #define    REV_E_DIR(E)   E0_DIR_WRITE( INVERT_E0_DIR)
664
   #define    REV_E_DIR(E)   E0_DIR_WRITE( INVERT_E0_DIR)
665
+
635
 #else
666
 #else
636
   #define E_STEP_WRITE(E,V) NOOP
667
   #define E_STEP_WRITE(E,V) NOOP
637
   #define   NORM_E_DIR(E)   NOOP
668
   #define   NORM_E_DIR(E)   NOOP
638
   #define    REV_E_DIR(E)   NOOP
669
   #define    REV_E_DIR(E)   NOOP
670
+
639
 #endif
671
 #endif

+ 2
- 2
config/default/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/3DFabXYZ/Migbot/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/AlephObjects/TAZ4/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/AliExpress/UM2pExt/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Anet/A2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Anet/A2plus/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Anet/A6/Configuration_adv.h View File

478
 
478
 
479
 #define AXIS_RELATIVE_MODES {false, false, false, false}
479
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 
480
 
481
-// Allow duplication mode with a basic dual-nozzle extruder
482
-//#define DUAL_NOZZLE_DUPLICATION_MODE
481
+// Add a Duplicate option for well-separated conjoined nozzles
482
+//#define MULTI_NOZZLE_DUPLICATION
483
 
483
 
484
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
484
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 #define INVERT_X_STEP_PIN false
485
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Anet/A8/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/AnyCubic/i3/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/ArmEd/Configuration_adv.h View File

483
 
483
 
484
 #define AXIS_RELATIVE_MODES {false, false, false, false}
484
 #define AXIS_RELATIVE_MODES {false, false, false, false}
485
 
485
 
486
-// Allow duplication mode with a basic dual-nozzle extruder
487
-//#define DUAL_NOZZLE_DUPLICATION_MODE
486
+// Add a Duplicate option for well-separated conjoined nozzles
487
+//#define MULTI_NOZZLE_DUPLICATION
488
 
488
 
489
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
489
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
490
 #define INVERT_X_STEP_PIN false
490
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/BIBO/TouchX/cyclops/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/BIBO/TouchX/default/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/BQ/Hephestos/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/BQ/Hephestos_2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/BQ/WITBOX/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Cartesio/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/CR-10/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/CR-10S/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/CR-10_5S/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/CR-10mini/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/CR-8/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/Ender-2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/Ender-3/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Creality/Ender-4/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Einstart-S/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Felix/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/FlashForge/CreatorPro/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/FolgerTech/i3-2020/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Formbot/Raptor/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Formbot/T_Rex_2+/Configuration_adv.h View File

483
 
483
 
484
 #define AXIS_RELATIVE_MODES {false, false, false, false}
484
 #define AXIS_RELATIVE_MODES {false, false, false, false}
485
 
485
 
486
-// Allow duplication mode with a basic dual-nozzle extruder
487
-//#define DUAL_NOZZLE_DUPLICATION_MODE
486
+// Add a Duplicate option for well-separated conjoined nozzles
487
+//#define MULTI_NOZZLE_DUPLICATION
488
 
488
 
489
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
489
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
490
 #define INVERT_X_STEP_PIN false
490
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Formbot/T_Rex_3/Configuration_adv.h View File

484
 
484
 
485
 #define AXIS_RELATIVE_MODES {false, false, false, false}
485
 #define AXIS_RELATIVE_MODES {false, false, false, false}
486
 
486
 
487
-// Allow duplication mode with a basic dual-nozzle extruder
488
-//#define DUAL_NOZZLE_DUPLICATION_MODE
487
+// Add a Duplicate option for well-separated conjoined nozzles
488
+//#define MULTI_NOZZLE_DUPLICATION
489
 
489
 
490
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
490
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
491
 #define INVERT_X_STEP_PIN false
491
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Geeetech/A10M/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Geeetech/A20M/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Geeetech/MeCreator2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Geeetech/Prusa i3 Pro C/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Geeetech/Prusa i3 Pro W/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Infitary/i3-M508/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/JGAurora/A5/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/MakerParts/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Malyan/M150/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Malyan/M200/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Micromake/C1/enhanced/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Mks/Robin/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Mks/Sbase/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/RapideLite/RL200/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/RigidBot/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/SCARA/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Sanguinololu/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/TheBorg/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/TinyBoy2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Tronxy/X3A/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Tronxy/X5S-2E/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/UltiMachine/Archim1/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/UltiMachine/Archim2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/VORONDesign/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Velleman/K8200/Configuration_adv.h View File

492
 
492
 
493
 #define AXIS_RELATIVE_MODES {false, false, false, false}
493
 #define AXIS_RELATIVE_MODES {false, false, false, false}
494
 
494
 
495
-// Allow duplication mode with a basic dual-nozzle extruder
496
-//#define DUAL_NOZZLE_DUPLICATION_MODE
495
+// Add a Duplicate option for well-separated conjoined nozzles
496
+//#define MULTI_NOZZLE_DUPLICATION
497
 
497
 
498
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
498
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
499
 #define INVERT_X_STEP_PIN false
499
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Velleman/K8400/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/WASP/PowerWASP/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/Wanhao/Duplicator 6/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/Anycubic/Kossel/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/FLSUN/auto_calibrate/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/FLSUN/kossel/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/FLSUN/kossel_mini/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/Geeetech/Rostock 301/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/MKS/SBASE/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/Tevo Little Monster/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/generic/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/kossel_mini/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/delta/kossel_xl/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/gCreate/gMax1.5+/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/makibox/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/tvrrug/Round2/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

+ 2
- 2
config/examples/wt150/Configuration_adv.h View File

479
 
479
 
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
480
 #define AXIS_RELATIVE_MODES {false, false, false, false}
481
 
481
 
482
-// Allow duplication mode with a basic dual-nozzle extruder
483
-//#define DUAL_NOZZLE_DUPLICATION_MODE
482
+// Add a Duplicate option for well-separated conjoined nozzles
483
+//#define MULTI_NOZZLE_DUPLICATION
484
 
484
 
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
485
 // By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
486
 #define INVERT_X_STEP_PIN false
486
 #define INVERT_X_STEP_PIN false

Loading…
Cancel
Save