if (mach.gm.distance_mode == ABSOLUTE_MODE)
target[axis] =
mach_get_active_coord_offset(axis) + TO_MILLIMETERS(values[axis]);
- else target[axis] += TO_MILLIMETERS(values[axis]);
+ else target[axis] = mach.position[axis] + TO_MILLIMETERS(values[axis]);
}
}
if (mach.gm.distance_mode == ABSOLUTE_MODE)
// sacidu93's fix to Issue #22
target[axis] = tmp + mach_get_active_coord_offset(axis);
- else target[axis] += tmp;
+ else target[axis] = mach.position[axis] + tmp;
}
}
// Free Space Motion (4.3.4)
static stat_t _feed(float values[], bool flags[]) {
float target[AXES];
+ copy_vector(target, mach.position);
mach_calc_model_target(target, values, flags);
// test soft limits
} else if (full_circle) rotations = 1; // default to 1 for full circles
// Set model target
- mach_calc_model_target(arc.target, values, values_f);
const float *position = mach_get_position();
+ copy_vector(arc.target, position);
+ mach_calc_model_target(arc.target, values, values_f);
// in radius mode it's an error for start == end
if (radius_f && fp_EQ(position[AXIS_X], arc.target[AXIS_X]) &&
// len / avg. velocity
float move_time = 2 * length / (vin + vout);
- ex.segments = ceil(usec(move_time) / NOM_SEGMENT_USEC);
+ ex.segments = ceil(move_time * MICROSECONDS_PER_MINUTE / NOM_SEGMENT_USEC);
ex.segment_time = move_time / ex.segments;
ex.segment_count = (uint32_t)ex.segments;