@@ -212,12 +212,17 @@ void plan_arc(
212212 }
213213
214214 // Feedrate for the move, scaled by the feedrate multiplier
215- const feedRate_t scaled_fr_mm_s = MMS_SCALED (feedrate_mm_s);
215+ #if ENABLED(FEEDRATE_MODE_SUPPORT)
216+ const feedRate_t scaled_fr = MMS_SCALED (feedrate_mm_s);
217+ const feedRate_t scaled_fr_mm_s = parser.inverse_time_enabled ? scaled_fr * flat_mm : scaled_fr;
218+ #else
219+ const feedRate_t scaled_fr_mm_s = MMS_SCALED (feedrate_mm_s);
220+ #endif
216221
217222 // Get the ideal segment length for the move based on settings
218223 const float ideal_segment_mm = (
219224 #if ARC_SEGMENTS_PER_SEC // Length based on segments per second and feedrate
220- constrain (scaled_fr_mm_s * RECIPROCAL (ARC_SEGMENTS_PER_SEC) , MIN_ARC_SEGMENT_MM, MAX_ARC_SEGMENT_MM)
225+ constrain (scaled_fr_mm_s * RECIPROCAL (ARC_SEGMENTS_PER_SEC, MIN_ARC_SEGMENT_MM, MAX_ARC_SEGMENT_MM) )
221226 #else
222227 MAX_ARC_SEGMENT_MM // Length using the maximum segment size
223228 #endif
@@ -236,7 +241,11 @@ void plan_arc(
236241 // Add hints to help optimize the move
237242 PlannerHints hints;
238243 #if ENABLED(FEEDRATE_SCALING)
239- hints.inv_duration = (scaled_fr_mm_s / flat_mm) * segments;
244+ #if ENABLED(FEEDRATE_MODE_SUPPORT)
245+ hints.inv_duration = segments * (parser.inverse_time_enabled ? scaled_fr : (scaled_fr_mm_s / flat_mm));
246+ #else
247+ hints.inv_duration = segments * (scaled_fr_mm_s / flat_mm);
248+ #endif
240249 #endif
241250
242251 /* *
@@ -427,6 +436,8 @@ void GcodeSuite::G2_G3(const bool clockwise) {
427436
428437 TERN_ (FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate (M_RUNNING));
429438
439+ TERN_ (FEEDRATE_MODE_SUPPORT, parser.print_move = true );
440+
430441 #if ENABLED(SF_ARC_FIX)
431442 const bool relative_mode_backup = relative_mode;
432443 relative_mode = true ;
@@ -486,6 +497,8 @@ void GcodeSuite::G2_G3(const bool clockwise) {
486497 else
487498 SERIAL_ERROR_MSG (STR_ERR_ARC_ARGS);
488499
500+ TERN_ (FEEDRATE_MODE_SUPPORT, parser.print_move = false );
501+
489502 TERN_ (FULL_REPORT_TO_HOST_FEATURE, set_and_report_grblstate (M_IDLE));
490503}
491504
0 commit comments