mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2024-11-30 07:17:59 +00:00
🔧 Fix build with no Y axis (#25311)
This commit is contained in:
parent
d0a965a1df
commit
087e19a0ed
@ -293,11 +293,11 @@ enum ClockSource2 : uint8_t {
|
||||
|
||||
#if HAS_MOTOR_CURRENT_PWM
|
||||
#if PIN_EXISTS(MOTOR_CURRENT_PWM_XY)
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1 || P == MOTOR_CURRENT_PWM_Z || P == MOTOR_CURRENT_PWM_XY)
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN || P == MOTOR_CURRENT_PWM_XY_PIN)
|
||||
#elif PIN_EXISTS(MOTOR_CURRENT_PWM_Z)
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1 || P == MOTOR_CURRENT_PWM_Z)
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN || P == MOTOR_CURRENT_PWM_Z_PIN)
|
||||
#else
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E || P == MOTOR_CURRENT_PWM_E0 || P == MOTOR_CURRENT_PWM_E1)
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) (P == MOTOR_CURRENT_PWM_E_PIN || P == MOTOR_CURRENT_PWM_E0_PIN || P == MOTOR_CURRENT_PWM_E1_PIN)
|
||||
#endif
|
||||
#else
|
||||
#define PWM_CHK_MOTOR_CURRENT(P) false
|
||||
|
@ -337,8 +337,8 @@ void serial_offset(const_float_t v, const uint8_t sp=0); // For v==0 draw space
|
||||
void print_bin(const uint16_t val);
|
||||
void print_pos(NUM_AXIS_ARGS(const_float_t), FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr);
|
||||
|
||||
inline void print_pos(const xyz_pos_t &xyz, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) {
|
||||
print_pos(NUM_AXIS_ELEM(xyz), prefix, suffix);
|
||||
inline void print_pos(const xyze_pos_t &xyze, FSTR_P const prefix=nullptr, FSTR_P const suffix=nullptr) {
|
||||
print_pos(NUM_AXIS_ELEM(xyze), prefix, suffix);
|
||||
}
|
||||
|
||||
#define SERIAL_POS(SUFFIX,VAR) do { print_pos(VAR, F(" " STRINGIFY(VAR) "="), F(" : " SUFFIX "\n")); }while(0)
|
||||
|
@ -430,21 +430,24 @@ struct XYval {
|
||||
FI XYval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
||||
FI XYval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
||||
FI XYval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
||||
FI XYval<T>& operator+=(const XYZval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
||||
FI XYval<T>& operator-=(const XYZval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
||||
FI XYval<T>& operator*=(const XYZval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
||||
FI XYval<T>& operator+=(const XYZEval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
||||
FI XYval<T>& operator-=(const XYZEval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
||||
FI XYval<T>& operator*=(const XYZEval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
||||
FI XYval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
|
||||
FI XYval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator/=(const XYZval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator+=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator-=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator*=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator/=(const XYZEval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
|
||||
FI XYval<T>& operator*=(const float &p) { x *= p; y *= p; return *this; }
|
||||
FI XYval<T>& operator*=(const int &p) { x *= p; y *= p; return *this; }
|
||||
FI XYval<T>& operator>>=(const int &p) { _RS(x); _RS(y); return *this; }
|
||||
FI XYval<T>& operator<<=(const int &p) { _LS(x); _LS(y); return *this; }
|
||||
|
||||
// Exact comparisons. For floats a "NEAR" operation may be better.
|
||||
FI bool operator==(const XYval<T> &rs) const { return x == rs.x && y == rs.y; }
|
||||
FI bool operator==(const XYZval<T> &rs) const { return x == rs.x && y == rs.y; }
|
||||
FI bool operator==(const XYZEval<T> &rs) const { return x == rs.x && y == rs.y; }
|
||||
FI bool operator==(const XYval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
|
||||
FI bool operator==(const XYZval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
|
||||
FI bool operator==(const XYZEval<T> &rs) const { return NUM_AXIS_GANG(x == rs.x, && y == rs.y,,,,,,, ); }
|
||||
FI bool operator!=(const XYval<T> &rs) const { return !operator==(rs); }
|
||||
FI bool operator!=(const XYZval<T> &rs) const { return !operator==(rs); }
|
||||
FI bool operator!=(const XYZEval<T> &rs) const { return !operator==(rs); }
|
||||
@ -465,15 +468,9 @@ struct XYZval {
|
||||
FI void reset() { NUM_AXIS_GANG(x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
|
||||
|
||||
// Setters taking struct types and arrays
|
||||
FI void set(const T px) { x = px; }
|
||||
FI void set(const T px, const T py) { x = px; y = py; }
|
||||
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
|
||||
FI void set(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP); }
|
||||
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
|
||||
#if HAS_Z_AXIS
|
||||
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
|
||||
#endif
|
||||
FI void set(const XYval<T> pxy) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y,,,,,,,); }
|
||||
FI void set(const XYval<T> pxy, const T pz) { NUM_AXIS_CODE(x = pxy.x, y = pxy.y, z = pz,,,,,,); }
|
||||
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#if LOGICAL_AXES > NUM_AXES
|
||||
FI void set(const T (&arr)[LOGICAL_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(LOGICAL_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w ); }
|
||||
@ -481,6 +478,17 @@ struct XYZval {
|
||||
FI void set(const T (&arr)[DISTINCT_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Setter for all individual args
|
||||
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
|
||||
// Setters with fewer elements leave the rest untouched
|
||||
#if HAS_Y_AXIS
|
||||
FI void set(const T px) { x = px; }
|
||||
#endif
|
||||
#if HAS_Z_AXIS
|
||||
FI void set(const T px, const T py) { x = px; y = py; }
|
||||
#endif
|
||||
#if HAS_I_AXIS
|
||||
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
|
||||
#endif
|
||||
@ -545,14 +553,14 @@ struct XYZval {
|
||||
FI XYZval<T>& operator= (const XYZEval<T> &rs) { set(NUM_AXIS_ELEM(rs)); return *this; }
|
||||
|
||||
// Override other operators to get intuitive behaviors
|
||||
FI XYZval<T> operator+ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator+ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator- (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator- (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator* (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator* (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator/ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator/ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y, NOOP , NOOP , NOOP , NOOP , NOOP , NOOP , NOOP ); return ls; }
|
||||
FI XYZval<T> operator+ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator+ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator- (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator- (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator* (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator* (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x *= rs.x, ls.y *= rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator/ (const XYval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator/ (const XYval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x /= rs.x, ls.y /= rs.y,,,,,,, ); return ls; }
|
||||
FI XYZval<T> operator+ (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
||||
FI XYZval<T> operator+ (const XYZval<T> &rs) { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x += rs.x, ls.y += rs.y, ls.z += rs.z, ls.i += rs.i, ls.j += rs.j, ls.k += rs.k, ls.u += rs.u, ls.v += rs.v, ls.w += rs.w); return ls; }
|
||||
FI XYZval<T> operator- (const XYZval<T> &rs) const { XYZval<T> ls = *this; NUM_AXIS_CODE(ls.x -= rs.x, ls.y -= rs.y, ls.z -= rs.z, ls.i -= rs.i, ls.j -= rs.j, ls.k -= rs.k, ls.u -= rs.u, ls.v -= rs.v, ls.w -= rs.w); return ls; }
|
||||
@ -585,10 +593,10 @@ struct XYZval {
|
||||
FI XYZval<T> operator-() { XYZval<T> o = *this; NUM_AXIS_CODE(o.x = -x, o.y = -y, o.z = -z, o.i = -i, o.j = -j, o.k = -k, o.u = -u, o.v = -v, o.w = -w); return o; }
|
||||
|
||||
// Modifier operators
|
||||
FI XYZval<T>& operator+=(const XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
|
||||
FI XYZval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
|
||||
FI XYZval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
|
||||
FI XYZval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP, NOOP ); return *this; }
|
||||
FI XYZval<T>& operator+=(const XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
|
||||
FI XYZval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
|
||||
FI XYZval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
|
||||
FI XYZval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
|
||||
FI XYZval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
|
||||
FI XYZval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
||||
FI XYZval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
||||
@ -620,9 +628,31 @@ struct XYZEval {
|
||||
// Reset all to 0
|
||||
FI void reset() { LOGICAL_AXIS_GANG(e =, x =, y =, z =, i =, j =, k =, u =, v =, w =) 0; }
|
||||
|
||||
// Setters for some number of linear axes, not all
|
||||
FI void set(const T px) { x = px; }
|
||||
FI void set(const T px, const T py) { x = px; y = py; }
|
||||
// Setters taking struct types and arrays
|
||||
FI void set(const XYval<T> pxy) { x = pxy.x; OPTCODE(HAS_Y_AXIS, y = pxy.y) }
|
||||
FI void set(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
|
||||
FI void set(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
|
||||
FI void set(const T (&arr)[NUM_AXES]) { NUM_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#if LOGICAL_AXES > NUM_AXES
|
||||
FI void set(const T (&arr)[LOGICAL_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
FI void set(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); e = pe; }
|
||||
FI void set(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; }
|
||||
FI void set(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
#if DISTINCT_AXES > LOGICAL_AXES
|
||||
FI void set(const T (&arr)[DISTINCT_AXES]) { LOGICAL_AXIS_CODE(e = arr[LOGICAL_AXES-1], x = arr[0], y = arr[1], z = arr[2], i = arr[3], j = arr[4], k = arr[5], u = arr[6], v = arr[7], w = arr[8]); }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Setter for all individual args
|
||||
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
|
||||
// Setters with fewer elements leave the rest untouched
|
||||
#if HAS_Y_AXIS
|
||||
FI void set(const T px) { x = px; }
|
||||
#endif
|
||||
#if HAS_Z_AXIS
|
||||
FI void set(const T px, const T py) { x = px; y = py; }
|
||||
#endif
|
||||
#if HAS_I_AXIS
|
||||
FI void set(const T px, const T py, const T pz) { x = px; y = py; z = pz; }
|
||||
#endif
|
||||
@ -642,19 +672,6 @@ struct XYZEval {
|
||||
FI void set(const T px, const T py, const T pz, const T pi, const T pj, const T pk, const T pu, const T pv) { x = px; y = py; z = pz; i = pi; j = pj; k = pk; u = pu; v = pv; }
|
||||
#endif
|
||||
|
||||
// Setters taking struct types and arrays
|
||||
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
|
||||
FI void set(const XYZval<T> pxyz) { set(NUM_AXIS_ELEM(pxyz)); }
|
||||
#if HAS_Z_AXIS
|
||||
FI void set(NUM_AXIS_ARGS(const T)) { NUM_AXIS_CODE(a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
#endif
|
||||
FI void set(const XYval<T> pxy, const T pz) { set(pxy); TERN_(HAS_Z_AXIS, z = pz); }
|
||||
#if LOGICAL_AXES > NUM_AXES
|
||||
FI void set(const XYval<T> pxy, const T pz, const T pe) { set(pxy, pz); e = pe; }
|
||||
FI void set(const XYZval<T> pxyz, const T pe) { set(pxyz); e = pe; }
|
||||
FI void set(LOGICAL_AXIS_ARGS(const T)) { LOGICAL_AXIS_CODE(_e = e, a = x, b = y, c = z, _i = i, _j = j, _k = k, _u = u, _v = v, _w = w); }
|
||||
#endif
|
||||
|
||||
// Length reduced to one dimension
|
||||
FI T magnitude() const { return (T)sqrtf(LOGICAL_AXIS_GANG(+ e*e, + x*x, + y*y, + z*z, + i*i, + j*j, + k*k, + u*u, + v*v, + w*w)); }
|
||||
// Pointer to the data as a simple array
|
||||
@ -739,10 +756,10 @@ struct XYZEval {
|
||||
FI XYZEval<T> operator-() { return LOGICAL_AXIS_ARRAY(-e, -x, -y, -z, -i, -j, -k, -u, -v, -w); }
|
||||
|
||||
// Modifier operators
|
||||
FI XYZEval<T>& operator+=(const XYval<T> &rs) { x += rs.x; y += rs.y; return *this; }
|
||||
FI XYZEval<T>& operator-=(const XYval<T> &rs) { x -= rs.x; y -= rs.y; return *this; }
|
||||
FI XYZEval<T>& operator*=(const XYval<T> &rs) { x *= rs.x; y *= rs.y; return *this; }
|
||||
FI XYZEval<T>& operator/=(const XYval<T> &rs) { x /= rs.x; y /= rs.y; return *this; }
|
||||
FI XYZEval<T>& operator+=(const XYval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y,,,,,,, ); return *this; }
|
||||
FI XYZEval<T>& operator-=(const XYval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y,,,,,,, ); return *this; }
|
||||
FI XYZEval<T>& operator*=(const XYval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y,,,,,,, ); return *this; }
|
||||
FI XYZEval<T>& operator/=(const XYval<T> &rs) { NUM_AXIS_CODE(x /= rs.x, y /= rs.y,,,,,,, ); return *this; }
|
||||
FI XYZEval<T>& operator+=(const XYZval<T> &rs) { NUM_AXIS_CODE(x += rs.x, y += rs.y, z += rs.z, i += rs.i, j += rs.j, k += rs.k, u += rs.u, v += rs.v, w += rs.w); return *this; }
|
||||
FI XYZEval<T>& operator-=(const XYZval<T> &rs) { NUM_AXIS_CODE(x -= rs.x, y -= rs.y, z -= rs.z, i -= rs.i, j -= rs.j, k -= rs.k, u -= rs.u, v -= rs.v, w -= rs.w); return *this; }
|
||||
FI XYZEval<T>& operator*=(const XYZval<T> &rs) { NUM_AXIS_CODE(x *= rs.x, y *= rs.y, z *= rs.z, i *= rs.i, j *= rs.j, k *= rs.k, u *= rs.u, v *= rs.v, w *= rs.w); return *this; }
|
||||
|
@ -403,6 +403,9 @@ void GcodeSuite::G28() {
|
||||
UNUSED(needZ); UNUSED(homeZZ);
|
||||
#else
|
||||
constexpr bool doZ = false;
|
||||
#if !HAS_Y_AXIS
|
||||
constexpr bool doY = false;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
TERN_(HOME_Z_FIRST, if (doZ) homeaxis(Z_AXIS));
|
||||
@ -420,9 +423,11 @@ void GcodeSuite::G28() {
|
||||
// Diagonal move first if both are homing
|
||||
TERN_(QUICK_HOME, if (doX && doY) quick_home_xy());
|
||||
|
||||
// Home Y (before X)
|
||||
if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX)))
|
||||
homeaxis(Y_AXIS);
|
||||
#if HAS_Y_AXIS
|
||||
// Home Y (before X)
|
||||
if (ENABLED(HOME_Y_BEFORE_X) && (doY || TERN0(CODEPENDENT_XY_HOMING, doX)))
|
||||
homeaxis(Y_AXIS);
|
||||
#endif
|
||||
|
||||
// Home X
|
||||
if (doX || (doY && ENABLED(CODEPENDENT_XY_HOMING) && DISABLED(HOME_Y_BEFORE_X))) {
|
||||
@ -455,9 +460,11 @@ void GcodeSuite::G28() {
|
||||
if (doI) homeaxis(I_AXIS);
|
||||
#endif
|
||||
|
||||
// Home Y (after X)
|
||||
if (DISABLED(HOME_Y_BEFORE_X) && doY)
|
||||
homeaxis(Y_AXIS);
|
||||
#if HAS_Y_AXIS
|
||||
// Home Y (after X)
|
||||
if (DISABLED(HOME_Y_BEFORE_X) && doY)
|
||||
homeaxis(Y_AXIS);
|
||||
#endif
|
||||
|
||||
#if BOTH(FOAMCUTTER_XYUV, HAS_J_AXIS)
|
||||
// Home J (after Y)
|
||||
|
@ -603,12 +603,26 @@
|
||||
#else
|
||||
#undef EXTRUDERS
|
||||
#define EXTRUDERS 0
|
||||
#undef TEMP_SENSOR_0
|
||||
#undef TEMP_SENSOR_1
|
||||
#undef TEMP_SENSOR_2
|
||||
#undef TEMP_SENSOR_3
|
||||
#undef TEMP_SENSOR_4
|
||||
#undef TEMP_SENSOR_5
|
||||
#undef TEMP_SENSOR_6
|
||||
#undef TEMP_SENSOR_7
|
||||
#undef SINGLENOZZLE
|
||||
#undef SWITCHING_EXTRUDER
|
||||
#undef SWITCHING_NOZZLE
|
||||
#undef MIXING_EXTRUDER
|
||||
#undef HOTEND_IDLE_TIMEOUT
|
||||
#undef DISABLE_E
|
||||
#undef THERMAL_PROTECTION_HOTENDS
|
||||
#undef PREVENT_COLD_EXTRUSION
|
||||
#undef PREVENT_LENGTHY_EXTRUDE
|
||||
#undef FILAMENT_RUNOUT_SENSOR
|
||||
#undef FILAMENT_RUNOUT_DISTANCE_MM
|
||||
#undef DISABLE_INACTIVE_EXTRUDER
|
||||
#endif
|
||||
|
||||
#define E_OPTARG(N) OPTARG(HAS_MULTI_EXTRUDER, N)
|
||||
@ -682,20 +696,28 @@
|
||||
|
||||
#if E_STEPPERS <= 7
|
||||
#undef INVERT_E7_DIR
|
||||
#undef E7_DRIVER_TYPE
|
||||
#if E_STEPPERS <= 6
|
||||
#undef INVERT_E6_DIR
|
||||
#undef E6_DRIVER_TYPE
|
||||
#if E_STEPPERS <= 5
|
||||
#undef INVERT_E5_DIR
|
||||
#undef E5_DRIVER_TYPE
|
||||
#if E_STEPPERS <= 4
|
||||
#undef INVERT_E4_DIR
|
||||
#undef E4_DRIVER_TYPE
|
||||
#if E_STEPPERS <= 3
|
||||
#undef INVERT_E3_DIR
|
||||
#undef E3_DRIVER_TYPE
|
||||
#if E_STEPPERS <= 2
|
||||
#undef INVERT_E2_DIR
|
||||
#undef E2_DRIVER_TYPE
|
||||
#if E_STEPPERS <= 1
|
||||
#undef INVERT_E1_DIR
|
||||
#undef E1_DRIVER_TYPE
|
||||
#if E_STEPPERS == 0
|
||||
#undef INVERT_E0_DIR
|
||||
#undef E0_DRIVER_TYPE
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@ -733,6 +755,7 @@
|
||||
#else
|
||||
#define NUM_AXES 1
|
||||
#endif
|
||||
#define HAS_X_AXIS 1
|
||||
#if NUM_AXES >= XY
|
||||
#define HAS_Y_AXIS 1
|
||||
#if NUM_AXES >= XYZ
|
||||
@ -767,31 +790,6 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if E_STEPPERS <= 0
|
||||
#undef E0_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 1
|
||||
#undef E1_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 2
|
||||
#undef E2_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 3
|
||||
#undef E3_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 4
|
||||
#undef E4_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 5
|
||||
#undef E5_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 6
|
||||
#undef E6_DRIVER_TYPE
|
||||
#endif
|
||||
#if E_STEPPERS <= 7
|
||||
#undef E7_DRIVER_TYPE
|
||||
#endif
|
||||
|
||||
#if !HAS_Y_AXIS
|
||||
#undef ENDSTOPPULLUP_YMIN
|
||||
#undef ENDSTOPPULLUP_YMAX
|
||||
@ -807,7 +805,6 @@
|
||||
#undef MANUAL_Y_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_Y
|
||||
#undef MAX_SOFTWARE_ENDSTOP_Y
|
||||
#undef SAFE_BED_LEVELING_START_Y
|
||||
#endif
|
||||
|
||||
#if !HAS_Z_AXIS
|
||||
@ -827,7 +824,6 @@
|
||||
#undef MANUAL_Z_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_Z
|
||||
#undef MAX_SOFTWARE_ENDSTOP_Z
|
||||
#undef SAFE_BED_LEVELING_START_Z
|
||||
#endif
|
||||
|
||||
#if !HAS_I_AXIS
|
||||
@ -844,7 +840,6 @@
|
||||
#undef MANUAL_I_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_I
|
||||
#undef MAX_SOFTWARE_ENDSTOP_I
|
||||
#undef SAFE_BED_LEVELING_START_I
|
||||
#endif
|
||||
|
||||
#if !HAS_J_AXIS
|
||||
@ -861,7 +856,6 @@
|
||||
#undef MANUAL_J_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_J
|
||||
#undef MAX_SOFTWARE_ENDSTOP_J
|
||||
#undef SAFE_BED_LEVELING_START_J
|
||||
#endif
|
||||
|
||||
#if !HAS_K_AXIS
|
||||
@ -878,7 +872,6 @@
|
||||
#undef MANUAL_K_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_K
|
||||
#undef MAX_SOFTWARE_ENDSTOP_K
|
||||
#undef SAFE_BED_LEVELING_START_K
|
||||
#endif
|
||||
|
||||
#if !HAS_U_AXIS
|
||||
@ -895,7 +888,6 @@
|
||||
#undef MANUAL_U_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_U
|
||||
#undef MAX_SOFTWARE_ENDSTOP_U
|
||||
#undef SAFE_BED_LEVELING_START_U
|
||||
#endif
|
||||
|
||||
#if !HAS_V_AXIS
|
||||
@ -912,7 +904,6 @@
|
||||
#undef MANUAL_V_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_V
|
||||
#undef MAX_SOFTWARE_ENDSTOP_V
|
||||
#undef SAFE_BED_LEVELING_START_V
|
||||
#endif
|
||||
|
||||
#if !HAS_W_AXIS
|
||||
@ -929,7 +920,6 @@
|
||||
#undef MANUAL_W_HOME_POS
|
||||
#undef MIN_SOFTWARE_ENDSTOP_W
|
||||
#undef MAX_SOFTWARE_ENDSTOP_W
|
||||
#undef SAFE_BED_LEVELING_START_W
|
||||
#endif
|
||||
|
||||
#ifdef X2_DRIVER_TYPE
|
||||
@ -1665,7 +1655,9 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if X_HOME_DIR || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) || (HAS_I_AXIS && I_HOME_DIR) || (HAS_J_AXIS && J_HOME_DIR) || (HAS_K_AXIS && K_HOME_DIR)
|
||||
#if X_HOME_DIR || (HAS_Y_AXIS && Y_HOME_DIR) || (HAS_Z_AXIS && Z_HOME_DIR) \
|
||||
|| (HAS_I_AXIS && I_HOME_DIR) || (HAS_J_AXIS && J_HOME_DIR) || (HAS_K_AXIS && K_HOME_DIR) \
|
||||
|| (HAS_U_AXIS && U_HOME_DIR) || (HAS_V_AXIS && V_HOME_DIR) || (HAS_W_AXIS && W_HOME_DIR)
|
||||
#define HAS_ENDSTOPS 1
|
||||
#define COORDINATE_OKAY(N,L,H) WITHIN(N,L,H)
|
||||
#else
|
||||
|
@ -86,31 +86,47 @@
|
||||
#undef PROBE_DEPLOY_STOW_MENU
|
||||
#endif
|
||||
|
||||
// Some options are disallowed without required axes
|
||||
#if !HAS_Y_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_Y
|
||||
#undef ARC_SUPPORT
|
||||
#undef INPUT_SHAPING_Y
|
||||
#undef SHAPING_FREQ_Y
|
||||
#undef SHAPING_BUFFER_Y
|
||||
#endif
|
||||
#if !HAS_Z_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_Z
|
||||
#endif
|
||||
#if !HAS_I_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_I
|
||||
#endif
|
||||
#if !HAS_J_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_J
|
||||
#endif
|
||||
#if !HAS_K_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_K
|
||||
#endif
|
||||
#if !HAS_U_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_U
|
||||
#endif
|
||||
#if !HAS_V_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_V
|
||||
#endif
|
||||
#if !HAS_W_AXIS
|
||||
#undef SAFE_BED_LEVELING_START_W
|
||||
#endif
|
||||
|
||||
// Disallowed with no extruders
|
||||
#if !HAS_EXTRUDERS
|
||||
#define NO_VOLUMETRICS
|
||||
#undef TEMP_SENSOR_0
|
||||
#undef TEMP_SENSOR_1
|
||||
#undef TEMP_SENSOR_2
|
||||
#undef TEMP_SENSOR_3
|
||||
#undef TEMP_SENSOR_4
|
||||
#undef TEMP_SENSOR_5
|
||||
#undef TEMP_SENSOR_6
|
||||
#undef TEMP_SENSOR_7
|
||||
#undef FWRETRACT
|
||||
#undef PIDTEMP
|
||||
#undef AUTOTEMP
|
||||
#undef PID_EXTRUSION_SCALING
|
||||
#undef LIN_ADVANCE
|
||||
#undef FILAMENT_RUNOUT_SENSOR
|
||||
#undef ADVANCED_PAUSE_FEATURE
|
||||
#undef FILAMENT_RUNOUT_DISTANCE_MM
|
||||
#undef FILAMENT_LOAD_UNLOAD_GCODES
|
||||
#undef DISABLE_INACTIVE_EXTRUDER
|
||||
#undef FILAMENT_LOAD_UNLOAD_GCODES
|
||||
#undef EXTRUDER_RUNOUT_PREVENT
|
||||
#undef PREVENT_COLD_EXTRUSION
|
||||
#undef PREVENT_LENGTHY_EXTRUDE
|
||||
#undef THERMAL_PROTECTION_HOTENDS
|
||||
#undef THERMAL_PROTECTION_PERIOD
|
||||
#undef WATCH_TEMP_PERIOD
|
||||
#undef SHOW_TEMP_ADC_VALUES
|
||||
@ -1127,11 +1143,6 @@
|
||||
#endif
|
||||
|
||||
// Input shaping
|
||||
#if !HAS_Y_AXIS
|
||||
#undef INPUT_SHAPING_Y
|
||||
#undef SHAPING_FREQ_Y
|
||||
#undef SHAPING_BUFFER_Y
|
||||
#endif
|
||||
#if EITHER(INPUT_SHAPING_X, INPUT_SHAPING_Y)
|
||||
#define HAS_SHAPING 1
|
||||
#endif
|
||||
|
@ -2250,7 +2250,7 @@
|
||||
#define IS_Z3_ENDSTOP(A,M) (ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPERS >= 3 && Z3_USE_ENDSTOP == _##A##M##_)
|
||||
#define IS_Z4_ENDSTOP(A,M) (ENABLED(Z_MULTI_ENDSTOPS) && NUM_Z_STEPPERS >= 4 && Z4_USE_ENDSTOP == _##A##M##_)
|
||||
|
||||
#define _HAS_STOP(A,M) (PIN_EXISTS(A##_##M) && !IS_PROBE_PIN(A,M) && !IS_X2_ENDSTOP(A,M) && !IS_Y2_ENDSTOP(A,M) && !IS_Z2_ENDSTOP(A,M) && !IS_Z3_ENDSTOP(A,M) && !IS_Z4_ENDSTOP(A,M))
|
||||
#define _HAS_STOP(A,M) (HAS_##A##_AXIS && PIN_EXISTS(A##_##M) && !IS_PROBE_PIN(A,M) && !IS_X2_ENDSTOP(A,M) && !IS_Y2_ENDSTOP(A,M) && !IS_Z2_ENDSTOP(A,M) && !IS_Z3_ENDSTOP(A,M) && !IS_Z4_ENDSTOP(A,M))
|
||||
#if _HAS_STOP(X,MIN)
|
||||
#define HAS_X_MIN 1
|
||||
#endif
|
||||
|
@ -849,7 +849,9 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
|
||||
* Validate that the bed size fits
|
||||
*/
|
||||
static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS) are too narrow to contain X_BED_SIZE.");
|
||||
static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS) are too narrow to contain Y_BED_SIZE.");
|
||||
#if HAS_Y_AXIS
|
||||
static_assert(Y_MAX_LENGTH >= Y_BED_SIZE, "Movement bounds (Y_MIN_POS, Y_MAX_POS) are too narrow to contain Y_BED_SIZE.");
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Granular software endstops (Marlin >= 1.1.7)
|
||||
|
@ -61,9 +61,9 @@ void MoveAxisScreen::onRedraw(draw_mode_t what) {
|
||||
w.adjuster( 10, GET_TEXT_F(MSG_AXIS_E2), mydata.e_rel[1], canMove(E1));
|
||||
#if EXTRUDERS > 2
|
||||
w.adjuster( 12, GET_TEXT_F(MSG_AXIS_E3), mydata.e_rel[2], canMove(E2));
|
||||
#endif
|
||||
#if EXTRUDERS > 3
|
||||
w.adjuster( 14, GET_TEXT_F(MSG_AXIS_E4), mydata.e_rel[3], canMove(E3));
|
||||
#if EXTRUDERS > 3
|
||||
w.adjuster( 14, GET_TEXT_F(MSG_AXIS_E4), mydata.e_rel[3], canMove(E3));
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if Z_HOME_TO_MIN
|
||||
@ -79,40 +79,44 @@ bool BaseMoveAxisScreen::onTouchHeld(uint8_t tag) {
|
||||
switch (tag) {
|
||||
case 2: UI_DECREMENT_AXIS(X); break;
|
||||
case 3: UI_INCREMENT_AXIS(X); break;
|
||||
case 4: UI_DECREMENT_AXIS(Y); break;
|
||||
case 5: UI_INCREMENT_AXIS(Y); break;
|
||||
case 6: UI_DECREMENT_AXIS(Z); break;
|
||||
case 7: UI_INCREMENT_AXIS(Z); break;
|
||||
// For extruders, also update relative distances.
|
||||
case 8: UI_DECREMENT_AXIS(E0); mydata.e_rel[0] -= increment; break;
|
||||
case 9: UI_INCREMENT_AXIS(E0); mydata.e_rel[0] += increment; break;
|
||||
#if HAS_MULTI_EXTRUDER
|
||||
case 10: UI_DECREMENT_AXIS(E1); mydata.e_rel[1] -= increment; break;
|
||||
case 11: UI_INCREMENT_AXIS(E1); mydata.e_rel[1] += increment; break;
|
||||
#if HAS_EXTRUDERS
|
||||
// For extruders, also update relative distances.
|
||||
case 8: UI_DECREMENT_AXIS(E0); mydata.e_rel[0] -= increment; break;
|
||||
case 9: UI_INCREMENT_AXIS(E0); mydata.e_rel[0] += increment; break;
|
||||
#if HAS_MULTI_EXTRUDER
|
||||
case 10: UI_DECREMENT_AXIS(E1); mydata.e_rel[1] -= increment; break;
|
||||
case 11: UI_INCREMENT_AXIS(E1); mydata.e_rel[1] += increment; break;
|
||||
#if EXTRUDERS > 2
|
||||
case 12: UI_DECREMENT_AXIS(E2); mydata.e_rel[2] -= increment; break;
|
||||
case 13: UI_INCREMENT_AXIS(E2); mydata.e_rel[2] += increment; break;
|
||||
#if EXTRUDERS > 3
|
||||
case 14: UI_DECREMENT_AXIS(E3); mydata.e_rel[3] -= increment; break;
|
||||
case 15: UI_INCREMENT_AXIS(E3); mydata.e_rel[3] += increment; break;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#if EXTRUDERS > 2
|
||||
case 12: UI_DECREMENT_AXIS(E2); mydata.e_rel[2] -= increment; break;
|
||||
case 13: UI_INCREMENT_AXIS(E2); mydata.e_rel[2] += increment; break;
|
||||
#if HAS_Y_AXIS
|
||||
case 4: UI_DECREMENT_AXIS(Y); break;
|
||||
case 5: UI_INCREMENT_AXIS(Y); break;
|
||||
case 20: SpinnerDialogBox::enqueueAndWait(F("G28X")); break;
|
||||
case 21: SpinnerDialogBox::enqueueAndWait(F("G28Y")); break;
|
||||
#if HAS_Z_AXIS
|
||||
case 6: UI_DECREMENT_AXIS(Z); break;
|
||||
case 7: UI_INCREMENT_AXIS(Z); break;
|
||||
case 22: SpinnerDialogBox::enqueueAndWait(F("G28Z")); break;
|
||||
case 24: raiseZtoTop(); break;
|
||||
#endif
|
||||
#endif
|
||||
#if EXTRUDERS > 3
|
||||
case 14: UI_DECREMENT_AXIS(E3); mydata.e_rel[3] -= increment; break;
|
||||
case 15: UI_INCREMENT_AXIS(E3); mydata.e_rel[3] += increment; break;
|
||||
#endif
|
||||
case 20: SpinnerDialogBox::enqueueAndWait(F("G28X")); break;
|
||||
case 21: SpinnerDialogBox::enqueueAndWait(F("G28Y")); break;
|
||||
case 22: SpinnerDialogBox::enqueueAndWait(F("G28Z")); break;
|
||||
case 23: SpinnerDialogBox::enqueueAndWait(F("G28")); break;
|
||||
case 24: raiseZtoTop(); break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
#undef UI_DECREMENT_AXIS
|
||||
#undef UI_INCREMENT_AXIS
|
||||
return true;
|
||||
}
|
||||
|
||||
void BaseMoveAxisScreen::raiseZtoTop() {
|
||||
constexpr xyze_feedrate_t homing_feedrate = HOMING_FEEDRATE_MM_M;
|
||||
constexpr xyz_feedrate_t homing_feedrate = HOMING_FEEDRATE_MM_M;
|
||||
setAxisPosition_mm(Z_MAX_POS - 5, Z, homing_feedrate.z);
|
||||
}
|
||||
|
||||
@ -128,9 +132,11 @@ void BaseMoveAxisScreen::setManualFeedrate(ExtUI::axis_t axis, float increment_m
|
||||
ExtUI::setFeedrate_mm_s(getManualFeedrate(X_AXIS + (axis - ExtUI::X), increment_mm));
|
||||
}
|
||||
|
||||
void BaseMoveAxisScreen::setManualFeedrate(ExtUI::extruder_t, float increment_mm) {
|
||||
ExtUI::setFeedrate_mm_s(getManualFeedrate(E_AXIS, increment_mm));
|
||||
}
|
||||
#if HAS_EXTRUDERS
|
||||
void BaseMoveAxisScreen::setManualFeedrate(ExtUI::extruder_t, float increment_mm) {
|
||||
ExtUI::setFeedrate_mm_s(getManualFeedrate(E_AXIS, increment_mm));
|
||||
}
|
||||
#endif
|
||||
|
||||
void MoveAxisScreen::onIdle() {
|
||||
if (refresh_timer.elapsed(STATUS_UPDATE_INTERVAL)) {
|
||||
|
@ -361,7 +361,7 @@ void report_current_position_projected() {
|
||||
|
||||
// Return true if the given position is within the machine bounds.
|
||||
bool position_is_reachable(const_float_t rx, const_float_t ry) {
|
||||
if (!COORDINATE_OKAY(ry, Y_MIN_POS - fslop, Y_MAX_POS + fslop)) return false;
|
||||
if (TERN0(HAS_Y_AXIS, !COORDINATE_OKAY(ry, Y_MIN_POS - fslop, Y_MAX_POS + fslop))) return false;
|
||||
#if ENABLED(DUAL_X_CARRIAGE)
|
||||
if (active_extruder)
|
||||
return COORDINATE_OKAY(rx, X2_MIN_POS - fslop, X2_MAX_POS + fslop);
|
||||
@ -630,7 +630,7 @@ void do_blocking_move_to(NUM_AXIS_ARGS(const float), const_feedRate_t fr_mm_s/*=
|
||||
if (current_position.z < z) { current_position.z = z; line_to_current_position(z_feedrate); }
|
||||
#endif
|
||||
|
||||
current_position.set(x, y); line_to_current_position(xy_feedrate);
|
||||
current_position.set(x OPTARG(HAS_Y_AXIS, y)); line_to_current_position(xy_feedrate);
|
||||
|
||||
#if HAS_I_AXIS
|
||||
current_position.i = i; line_to_current_position(i_feedrate);
|
||||
|
Loading…
Reference in New Issue
Block a user