|
@@ -7610,13 +7610,14 @@ inline void gcode_M205() {
|
7610
|
7610
|
/**
|
7611
|
7611
|
* M665: Set delta configurations
|
7612
|
7612
|
*
|
7613
|
|
- * H = diagonal rod // AC-version
|
|
7613
|
+ * H = delta height
|
7614
|
7614
|
* L = diagonal rod
|
7615
|
7615
|
* R = delta radius
|
7616
|
7616
|
* S = segments per second
|
7617
|
|
- * A = Alpha (Tower 1) diagonal rod trim
|
7618
|
|
- * B = Beta (Tower 2) diagonal rod trim
|
7619
|
|
- * C = Gamma (Tower 3) diagonal rod trim
|
|
7617
|
+ * B = delta calibration radius
|
|
7618
|
+ * X = Alpha (Tower 1) angle trim
|
|
7619
|
+ * Y = Beta (Tower 2) angle trim
|
|
7620
|
+ * Z = Rotate A and B by this angle
|
7620
|
7621
|
*/
|
7621
|
7622
|
inline void gcode_M665() {
|
7622
|
7623
|
if (code_seen('H')) {
|
|
@@ -7628,11 +7629,11 @@ inline void gcode_M205() {
|
7628
|
7629
|
if (code_seen('R')) delta_radius = code_value_linear_units();
|
7629
|
7630
|
if (code_seen('S')) delta_segments_per_second = code_value_float();
|
7630
|
7631
|
if (code_seen('B')) delta_calibration_radius = code_value_float();
|
7631
|
|
- if (code_seen('X')) delta_tower_angle_trim[A_AXIS] = code_value_linear_units();
|
7632
|
|
- if (code_seen('Y')) delta_tower_angle_trim[B_AXIS] = code_value_linear_units();
|
|
7632
|
+ if (code_seen('X')) delta_tower_angle_trim[A_AXIS] = code_value_float();
|
|
7633
|
+ if (code_seen('Y')) delta_tower_angle_trim[B_AXIS] = code_value_float();
|
7633
|
7634
|
if (code_seen('Z')) { // rotate all 3 axis for Z = 0
|
7634
|
|
- delta_tower_angle_trim[A_AXIS] -= code_value_linear_units();
|
7635
|
|
- delta_tower_angle_trim[B_AXIS] -= code_value_linear_units();
|
|
7635
|
+ delta_tower_angle_trim[A_AXIS] -= code_value_float();
|
|
7636
|
+ delta_tower_angle_trim[B_AXIS] -= code_value_float();
|
7636
|
7637
|
}
|
7637
|
7638
|
recalc_delta_settings(delta_radius, delta_diagonal_rod);
|
7638
|
7639
|
}
|
|
@@ -11235,32 +11236,36 @@ void set_current_from_steppers_for_axis(const AxisEnum axis) {
|
11235
|
11236
|
* Returns true if the caller didn't update current_position.
|
11236
|
11237
|
*/
|
11237
|
11238
|
inline bool prepare_move_to_destination_cartesian() {
|
11238
|
|
- // Do not use feedrate_percentage for E or Z only moves
|
11239
|
|
- if (current_position[X_AXIS] == destination[X_AXIS] && current_position[Y_AXIS] == destination[Y_AXIS]) {
|
11240
|
|
- line_to_destination();
|
11241
|
|
- }
|
11242
|
|
- else {
|
11243
|
|
- #if ENABLED(MESH_BED_LEVELING)
|
11244
|
|
- if (mbl.active()) {
|
11245
|
|
- mesh_line_to_destination(MMS_SCALED(feedrate_mm_s));
|
11246
|
|
- return true;
|
11247
|
|
- }
|
11248
|
|
- else
|
11249
|
|
- #elif ENABLED(AUTO_BED_LEVELING_UBL)
|
11250
|
|
- if (ubl.state.active) {
|
11251
|
|
- ubl_line_to_destination_cartesian(MMS_SCALED(feedrate_mm_s), active_extruder);
|
11252
|
|
- return true;
|
11253
|
|
- }
|
11254
|
|
- else
|
11255
|
|
- #elif ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
11256
|
|
- if (planner.abl_enabled) {
|
11257
|
|
- bilinear_line_to_destination(MMS_SCALED(feedrate_mm_s));
|
11258
|
|
- return true;
|
11259
|
|
- }
|
11260
|
|
- else
|
11261
|
|
- #endif
|
11262
|
|
- line_to_destination(MMS_SCALED(feedrate_mm_s));
|
11263
|
|
- }
|
|
11239
|
+ #if ENABLED(AUTO_BED_LEVELING_UBL)
|
|
11240
|
+ const float fr_scaled = MMS_SCALED(feedrate_mm_s);
|
|
11241
|
+ if (ubl.state.active) {
|
|
11242
|
+ ubl_line_to_destination_cartesian(fr_scaled, active_extruder);
|
|
11243
|
+ return true;
|
|
11244
|
+ }
|
|
11245
|
+ else
|
|
11246
|
+ line_to_destination(fr_scaled);
|
|
11247
|
+ #else
|
|
11248
|
+ // Do not use feedrate_percentage for E or Z only moves
|
|
11249
|
+ if (current_position[X_AXIS] == destination[X_AXIS] && current_position[Y_AXIS] == destination[Y_AXIS])
|
|
11250
|
+ line_to_destination();
|
|
11251
|
+ else {
|
|
11252
|
+ const float fr_scaled = MMS_SCALED(feedrate_mm_s);
|
|
11253
|
+ #if ENABLED(MESH_BED_LEVELING)
|
|
11254
|
+ if (mbl.active()) {
|
|
11255
|
+ mesh_line_to_destination(fr_scaled);
|
|
11256
|
+ return true;
|
|
11257
|
+ }
|
|
11258
|
+ else
|
|
11259
|
+ #elif ENABLED(AUTO_BED_LEVELING_BILINEAR)
|
|
11260
|
+ if (planner.abl_enabled) {
|
|
11261
|
+ bilinear_line_to_destination(fr_scaled);
|
|
11262
|
+ return true;
|
|
11263
|
+ }
|
|
11264
|
+ else
|
|
11265
|
+ #endif
|
|
11266
|
+ line_to_destination(fr_scaled);
|
|
11267
|
+ }
|
|
11268
|
+ #endif
|
11264
|
11269
|
return false;
|
11265
|
11270
|
}
|
11266
|
11271
|
|