|
@@ -157,26 +157,24 @@ Nozzle nozzle;
|
157
|
157
|
* @param argument depends on the cleaning pattern
|
158
|
158
|
*/
|
159
|
159
|
void Nozzle::clean(const uint8_t &pattern, const uint8_t &strokes, const float &radius, const uint8_t &objects, const uint8_t cleans) {
|
160
|
|
- xyz_pos_t start = NOZZLE_CLEAN_START_POINT, end = NOZZLE_CLEAN_END_POINT;
|
|
160
|
+ xyz_pos_t start[HOTENDS] = NOZZLE_CLEAN_START_POINT, end[HOTENDS] = NOZZLE_CLEAN_END_POINT, middle[HOTENDS] = NOZZLE_CLEAN_CIRCLE_MIDDLE;
|
161
|
161
|
|
162
|
162
|
if (pattern == 2) {
|
163
|
163
|
if (!(cleans & (_BV(X_AXIS) | _BV(Y_AXIS)))) {
|
164
|
164
|
SERIAL_ECHOLNPGM("Warning : Clean Circle requires XY");
|
165
|
165
|
return;
|
166
|
166
|
}
|
167
|
|
- constexpr xyz_pos_t middle NOZZLE_CLEAN_CIRCLE_MIDDLE;
|
168
|
|
- end = middle;
|
169
|
167
|
}
|
170
|
168
|
else {
|
171
|
|
- if (!TEST(cleans, X_AXIS)) start.x = end.x = current_position.x;
|
172
|
|
- if (!TEST(cleans, Y_AXIS)) start.y = end.y = current_position.y;
|
|
169
|
+ if (!TEST(cleans, X_AXIS)) start[active_extruder].x = end[active_extruder].x = current_position.x;
|
|
170
|
+ if (!TEST(cleans, Y_AXIS)) start[active_extruder].y = end[active_extruder].y = current_position.y;
|
173
|
171
|
}
|
174
|
|
- if (!TEST(cleans, Z_AXIS)) start.z = end.z = current_position.z;
|
|
172
|
+ if (!TEST(cleans, Z_AXIS)) start[active_extruder].z = end[active_extruder].z = current_position.z;
|
175
|
173
|
|
176
|
174
|
switch (pattern) {
|
177
|
|
- case 1: zigzag(start, end, strokes, objects); break;
|
178
|
|
- case 2: circle(start, end, strokes, radius); break;
|
179
|
|
- default: stroke(start, end, strokes);
|
|
175
|
+ case 1: zigzag(start[active_extruder], end[active_extruder], strokes, objects); break;
|
|
176
|
+ case 2: circle(start[active_extruder], middle[active_extruder], strokes, radius); break;
|
|
177
|
+ default: stroke(start[active_extruder], end[active_extruder], strokes);
|
180
|
178
|
}
|
181
|
179
|
}
|
182
|
180
|
|