@@ -1269,20 +1269,34 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1269
1269
/* *
1270
1270
* A Dual Nozzle carriage with switching servo
1271
1271
*/
1272
- #if ENABLED(SWITCHING_NOZZLE)
1273
- #if ENABLED(DUAL_X_CARRIAGE)
1272
+ #if BOTH(SWITCHING_NOZZLE, MECHANICAL_SWITCHING_NOZZLE)
1273
+ #error "Enable only one of SWITCHING_NOZZLE or MECHANICAL_SWITCHING_NOZZLE."
1274
+ #elif ENABLED(MECHANICAL_SWITCHING_NOZZLE)
1275
+ #if EXTRUDERS != 2
1276
+ #error "MECHANICAL_SWITCHING_NOZZLE requires exactly 2 EXTRUDERS."
1277
+ #elif ENABLED(DUAL_X_CARRIAGE)
1278
+ #error "MECHANICAL_SWITCHING_NOZZLE and DUAL_X_CARRIAGE are incompatible."
1279
+ #elif ENABLED(SINGLENOZZLE)
1280
+ #error "MECHANICAL_SWITCHING_NOZZLE and SINGLENOZZLE are incompatible."
1281
+ #elif HAS_PRUSA_MMU2
1282
+ #error "MECHANICAL_SWITCHING_NOZZLE and PRUSA_MMU2(S) are incompatible."
1283
+ #elif !defined(EVENT_GCODE_TOOLCHANGE_T0)
1284
+ #error "MECHANICAL_SWITCHING_NOZZLE requires EVENT_GCODE_TOOLCHANGE_T0."
1285
+ #elif !defined(EVENT_GCODE_TOOLCHANGE_T1)
1286
+ #error "MECHANICAL_SWITCHING_NOZZLE requires EVENT_GCODE_TOOLCHANGE_T1."
1287
+ #endif
1288
+ #elif ENABLED(SWITCHING_NOZZLE)
1289
+ #if EXTRUDERS != 2
1290
+ #error "SWITCHING_NOZZLE requires exactly 2 EXTRUDERS."
1291
+ #elif ENABLED(DUAL_X_CARRIAGE)
1274
1292
#error "SWITCHING_NOZZLE and DUAL_X_CARRIAGE are incompatible."
1275
1293
#elif ENABLED(SINGLENOZZLE)
1276
1294
#error "SWITCHING_NOZZLE and SINGLENOZZLE are incompatible."
1277
1295
#elif HAS_PRUSA_MMU2
1278
1296
#error "SWITCHING_NOZZLE and PRUSA_MMU2(S) are incompatible."
1279
- #elif EXTRUDERS != 2
1280
- #error "SWITCHING_NOZZLE requires exactly 2 EXTRUDERS."
1281
1297
#elif NUM_SERVOS < 1
1282
1298
#error "SWITCHING_NOZZLE requires NUM_SERVOS >= 1."
1283
- #endif
1284
-
1285
- #ifndef SWITCHING_NOZZLE_SERVO_NR
1299
+ #elif !defined(SWITCHING_NOZZLE_SERVO_NR)
1286
1300
#error "SWITCHING_NOZZLE requires SWITCHING_NOZZLE_SERVO_NR."
1287
1301
#elif SWITCHING_NOZZLE_SERVO_NR == 0 && !PIN_EXISTS(SERVO0)
1288
1302
#error "SERVO0_PIN must be defined for your SWITCHING_NOZZLE."
@@ -1293,7 +1307,6 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1293
1307
#elif SWITCHING_NOZZLE_SERVO_NR == 3 && !PIN_EXISTS(SERVO3)
1294
1308
#error "SERVO3_PIN must be defined for your SWITCHING_NOZZLE."
1295
1309
#endif
1296
-
1297
1310
#ifdef SWITCHING_NOZZLE_E1_SERVO_NR
1298
1311
#if SWITCHING_NOZZLE_E1_SERVO_NR == SWITCHING_NOZZLE_SERVO_NR
1299
1312
#error "SWITCHING_NOZZLE_E1_SERVO_NR must be different from SWITCHING_NOZZLE_SERVO_NR."
@@ -1307,14 +1320,26 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1307
1320
#error "SERVO3_PIN must be defined for your SWITCHING_NOZZLE."
1308
1321
#endif
1309
1322
#endif
1310
- #endif
1323
+ #endif // SWITCHING_NOZZLE
1311
1324
1312
1325
/* *
1313
1326
* Single Stepper Dual Extruder with switching servo
1314
1327
*/
1315
- #if ENABLED(SWITCHING_EXTRUDER)
1328
+ #if BOTH(SWITCHING_EXTRUDER, MECHANICAL_SWITCHING_EXTRUDER)
1329
+ #error "Enable only one of SWITCHING_EXTRUDER or MECHANICAL_SWITCHING_EXTRUDER."
1330
+ #elif ENABLED(MECHANICAL_SWITCHING_EXTRUDER)
1331
+ #if EXTRUDERS < 2
1332
+ #error "MECHANICAL_SWITCHING_EXTRUDER requires EXTRUDERS >= 2."
1333
+ #elif !defined(EVENT_GCODE_TOOLCHANGE_T0)
1334
+ #error "MECHANICAL_SWITCHING_EXTRUDER requires EVENT_GCODE_TOOLCHANGE_T0."
1335
+ #elif !defined(EVENT_GCODE_TOOLCHANGE_T1)
1336
+ #error "MECHANICAL_SWITCHING_EXTRUDER requires EVENT_GCODE_TOOLCHANGE_T1."
1337
+ #endif
1338
+ #elif ENABLED(SWITCHING_EXTRUDER)
1316
1339
#if NUM_SERVOS < 1
1317
1340
#error "SWITCHING_EXTRUDER requires NUM_SERVOS >= 1."
1341
+ #elif !defined(SWITCHING_EXTRUDER_SERVO_NR)
1342
+ #error "SWITCHING_EXTRUDER requires SWITCHING_EXTRUDER_SERVO_NR."
1318
1343
#elif SWITCHING_EXTRUDER_SERVO_NR == 0 && !PIN_EXISTS(SERVO0)
1319
1344
#error "SERVO0_PIN must be defined for your SWITCHING_EXTRUDER."
1320
1345
#elif SWITCHING_EXTRUDER_SERVO_NR == 1 && !PIN_EXISTS(SERVO1)
@@ -1338,8 +1363,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1338
1363
#elif SWITCHING_EXTRUDER_E23_SERVO_NR == SWITCHING_EXTRUDER_SERVO_NR
1339
1364
#error "SWITCHING_EXTRUDER_E23_SERVO_NR should be a different extruder from SWITCHING_EXTRUDER_SERVO_NR."
1340
1365
#endif
1366
+ #elif EXTRUDERS < 2
1367
+ #error "SWITCHING_EXTRUDER requires EXTRUDERS >= 2."
1341
1368
#endif
1342
- #endif
1369
+ #endif // SWITCHING_EXTRUDER
1343
1370
1344
1371
/* *
1345
1372
* Mixing Extruder requirements
@@ -1351,8 +1378,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1351
1378
#error "You must set MIXING_STEPPERS >= 2 for a mixing extruder."
1352
1379
#elif ENABLED(FILAMENT_WIDTH_SENSOR)
1353
1380
#error "MIXING_EXTRUDER is incompatible with FILAMENT_WIDTH_SENSOR. Comment out this line to use it anyway."
1354
- #elif ENABLED(SWITCHING_EXTRUDER)
1355
- #error "Please select either MIXING_EXTRUDER or SWITCHING_EXTRUDER, not both ."
1381
+ #elif HAS_SWITCHING_EXTRUDER
1382
+ #error "MIXING_EXTRUDER is incompatible with (MECHANICAL_)SWITCHING_EXTRUDER ."
1356
1383
#elif ENABLED(SINGLENOZZLE)
1357
1384
#error "MIXING_EXTRUDER is incompatible with SINGLENOZZLE."
1358
1385
#elif ENABLED(DISABLE_INACTIVE_EXTRUDER)
@@ -1370,8 +1397,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
1370
1397
#error "E_DUAL_STEPPER_DRIVERS can only be used with EXTRUDERS set to 1."
1371
1398
#elif ENABLED(MIXING_EXTRUDER)
1372
1399
#error "E_DUAL_STEPPER_DRIVERS is incompatible with MIXING_EXTRUDER."
1373
- #elif ENABLED(SWITCHING_EXTRUDER)
1374
- #error "E_DUAL_STEPPER_DRIVERS is incompatible with SWITCHING_EXTRUDER."
1400
+ #elif HAS_SWITCHING_EXTRUDER
1401
+ #error "E_DUAL_STEPPER_DRIVERS is incompatible with (MECHANICAL_) SWITCHING_EXTRUDER."
1375
1402
#endif
1376
1403
#endif
1377
1404
@@ -2733,8 +2760,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
2733
2760
#error "MULTI_NOZZLE_DUPLICATION is incompatible with DUAL_X_CARRIAGE."
2734
2761
#elif ENABLED(MIXING_EXTRUDER)
2735
2762
#error "MULTI_NOZZLE_DUPLICATION is incompatible with MIXING_EXTRUDER."
2736
- #elif ENABLED(SWITCHING_EXTRUDER)
2737
- #error "MULTI_NOZZLE_DUPLICATION is incompatible with SWITCHING_EXTRUDER."
2763
+ #elif HAS_SWITCHING_EXTRUDER
2764
+ #error "MULTI_NOZZLE_DUPLICATION is incompatible with (MECHANICAL_) SWITCHING_EXTRUDER."
2738
2765
#elif HOTENDS < 2
2739
2766
#error "MULTI_NOZZLE_DUPLICATION requires 2 or more hotends."
2740
2767
#endif
0 commit comments