🔨 Rotational move items (#26438)

This commit is contained in:
Scott Lahteine 2023-11-17 22:39:00 -06:00 committed by GitHub
parent f50ca52c57
commit aed577271f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
33 changed files with 59 additions and 9 deletions

View file

@ -1533,6 +1533,9 @@
//#define MANUAL_MOVE_DISTANCE_IN 1.000, 0.500, 0.100, 0.010, 0.001 // (in)
//#define MANUAL_MOVE_DISTANCE_IN 5.000, 1.000, 0.500, 0.100, 0.010, 0.001 // (in)
// Manual move distances for rotational axes
#define MANUAL_MOVE_DISTANCE_DEG 90, 45, 22.5, 5, 1 // (°)
// BACK menu items keep the highlight at the top
//#define TURBO_BACK_MENU_ITEM

View file

@ -103,6 +103,8 @@
#if ANY(AXIS4_ROTATES, AXIS5_ROTATES, AXIS6_ROTATES, AXIS7_ROTATES, AXIS8_ROTATES, AXIS9_ROTATES)
#define HAS_ROTATIONAL_AXES 1
#else
#undef MANUAL_MOVE_DISTANCE_DEG
#endif
#if HAS_X_AXIS

View file

@ -88,6 +88,7 @@ namespace LanguageNarrow_an {
LSTR MSG_MOVE_EN = _UxGT("Extrusor *");
LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mover $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Velocidat");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z");
LSTR MSG_NOZZLE = _UxGT("Boquilla");

View file

@ -77,6 +77,7 @@ namespace LanguageNarrow_bg {
LSTR MSG_MOVE_EN = _UxGT("Екструдер *");
LSTR MSG_MOVE_N_MM = _UxGT("Премести с $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Премести с $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Премести с $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Скорост");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z");
LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Дюза");

View file

@ -88,6 +88,7 @@ namespace LanguageNarrow_ca {
LSTR MSG_MOVE_EN = _UxGT("Extrusor *");
LSTR MSG_MOVE_N_MM = _UxGT("Mou $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mou $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mou $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Velocitat");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Llit Z");
LSTR MSG_NOZZLE = _UxGT("Nozzle");

View file

@ -232,6 +232,7 @@ namespace LanguageNarrow_cz {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený");
LSTR MSG_MOVE_N_MM = _UxGT("Posunout o $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Posunout o $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Posunout o $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Rychlost");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl.");
LSTR MSG_NOZZLE = _UxGT("Tryska");

View file

@ -79,6 +79,7 @@ namespace LanguageNarrow_da {
LSTR MSG_MOVE_EN = _UxGT("Flyt *");
LSTR MSG_MOVE_N_MM = _UxGT("Flyt $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Flyt $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Flyt $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Hastighed");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Plade Z");
LSTR MSG_NOZZLE = _UxGT("Dyse");

View file

@ -290,6 +290,7 @@ namespace LanguageNarrow_de {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend zu kalt");
LSTR MSG_MOVE_N_MM = _UxGT(" $ mm");
LSTR MSG_MOVE_N_IN = _UxGT(" $ in");
LSTR MSG_MOVE_N_DEG = _UxGT(" $ ") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Geschw.");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bett Z");
LSTR MSG_NOZZLE = _UxGT("Düse");

View file

@ -318,6 +318,7 @@ namespace LanguageNarrow_en {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend too cold");
LSTR MSG_MOVE_N_MM = _UxGT("Move $ mm");
LSTR MSG_MOVE_N_IN = _UxGT("Move $ in");
LSTR MSG_MOVE_N_DEG = _UxGT("Move $ ") LCD_STR_DEGREE;
LSTR MSG_LIVE_MOVE = _UxGT("Live Move");
LSTR MSG_SPEED = _UxGT("Speed");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z");

View file

@ -230,6 +230,7 @@ namespace LanguageNarrow_es {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend muy frio");
LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mover $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Velocidad");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z");
LSTR MSG_NOZZLE = _UxGT("Boquilla");

View file

@ -139,6 +139,7 @@ namespace LanguageNarrow_eu {
LSTR MSG_MOVE_EN = _UxGT("Estrusorea *");
LSTR MSG_MOVE_N_MM = _UxGT("Mugitu $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mugitu $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mugitu $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Abiadura");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Ohea");
LSTR MSG_NOZZLE = _UxGT("Pita");

View file

@ -74,6 +74,7 @@ namespace LanguageNarrow_fi {
LSTR MSG_MOVE_EN = _UxGT("Extruder *");
LSTR MSG_MOVE_N_MM = _UxGT("Liikuta $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Liikuta $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Liikuta $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Nopeus");
LSTR MSG_NOZZLE = _UxGT("Suutin");
LSTR MSG_NOZZLE_N = _UxGT("Suutin ~");

View file

@ -234,6 +234,7 @@ namespace LanguageNarrow_fr {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide");
LSTR MSG_MOVE_N_MM = _UxGT("Déplacer $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Déplacer $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Déplacer $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Vitesse");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z");
LSTR MSG_NOZZLE = _UxGT("Buse");

View file

@ -234,6 +234,7 @@ namespace LanguageNarrow_fr_na {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Buse trop froide");
LSTR MSG_MOVE_N_MM = _UxGT("Deplacer $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Deplacer $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Deplacer $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Vitesse");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Lit Z");
LSTR MSG_NOZZLE = _UxGT("Buse");

View file

@ -227,6 +227,7 @@ namespace LanguageNarrow_gl {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Bico moi frío");
LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mover $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Velocidade");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Cama Z");
LSTR MSG_NOZZLE = _UxGT("Bico");

View file

@ -84,6 +84,7 @@ namespace LanguageNarrow_hr {
LSTR MSG_MOVE_EN = _UxGT("Miči *");
LSTR MSG_MOVE_N_MM = _UxGT("Miči $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Miči $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Miči $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Brzina");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z");
LSTR MSG_NOZZLE = _UxGT("Dizna");

View file

@ -262,6 +262,7 @@ namespace LanguageNarrow_hu {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("A fej túl hideg");
LSTR MSG_MOVE_N_MM = _UxGT("Mozgás $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mozgás $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mozgás $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Sebesség");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Z ágy");
LSTR MSG_NOZZLE = _UxGT("Fej");

View file

@ -311,6 +311,7 @@ namespace LanguageNarrow_it {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Ugello freddo");
LSTR MSG_MOVE_N_MM = _UxGT("Muovi di $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Muovi di $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Muovi di $") LCD_STR_DEGREE;
LSTR MSG_LIVE_MOVE = _UxGT("Modalità Live");
LSTR MSG_SPEED = _UxGT("Velocità");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Piatto Z");

View file

@ -97,6 +97,7 @@ namespace LanguageNarrow_jp_kana {
LSTR MSG_MOVE_EN = _UxGT("* エクストルーダー"); // "En"
LSTR MSG_MOVE_N_MM = _UxGT("$mm イドウ"); // "Move $mm"
LSTR MSG_MOVE_N_IN = _UxGT("$in イドウ"); // "Move $in"
LSTR MSG_MOVE_N_DEG = _UxGT("$" LCD_STR_DEGREE " イドウ"); // "Move $°"
LSTR MSG_SPEED = _UxGT("ソクド"); // "Speed"
LSTR MSG_MESH_Z_OFFSET = _UxGT("Zオフセット"); // "Bed Z"
LSTR MSG_NOZZLE = _UxGT("ノズル"); // "Nozzle"

View file

@ -89,6 +89,7 @@ namespace LanguageNarrow_nl {
LSTR MSG_MOVE_EN = _UxGT("Extruder *");
LSTR MSG_MOVE_N_MM = _UxGT("Verplaats $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Verplaats $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Verplaats $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Snelheid");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z");
LSTR MSG_NOZZLE = _UxGT("Nozzle");

View file

@ -241,6 +241,7 @@ namespace LanguageNarrow_pl {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Dysza za zimna");
LSTR MSG_MOVE_N_MM = _UxGT("Przesuń co $ mm");
LSTR MSG_MOVE_N_IN = _UxGT("Przesuń co $ in");
LSTR MSG_MOVE_N_DEG = _UxGT("Przesuń co $ ") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Predkość");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Stół Z");
LSTR MSG_NOZZLE = _UxGT("Dysza");

View file

@ -83,6 +83,7 @@ namespace LanguageNarrow_pt {
LSTR MSG_MOVE_EN = _UxGT("Mover Extrusor *");
LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mover $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Velocidade");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z");
LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" Bico");

View file

@ -213,6 +213,7 @@ namespace LanguageNarrow_pt_br {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Extrus. mto fria");
LSTR MSG_MOVE_N_MM = _UxGT("Mover $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Mover $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Mover $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Velocidade");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Base Z");
LSTR MSG_NOZZLE = _UxGT("Bocal");

View file

@ -226,6 +226,7 @@ namespace LanguageNarrow_ro {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Capat Prea Rece");
LSTR MSG_MOVE_N_MM = _UxGT("Move $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Move $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Move $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Speed");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bed Z");
LSTR MSG_NOZZLE = _UxGT("Nozzle");

View file

@ -265,6 +265,7 @@ namespace LanguageNarrow_ru {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Сопло не нагрето");
LSTR MSG_MOVE_N_MM = _UxGT("Движение $мм");
LSTR MSG_MOVE_N_IN = _UxGT("Движение $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Движение $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Скорость");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Z стола");
LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C");

View file

@ -307,6 +307,7 @@ namespace LanguageNarrow_sk {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hotend je studený");
LSTR MSG_MOVE_N_MM = _UxGT("Posunúť o $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Posunúť o $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Posunúť o $") LCD_STR_DEGREE;
LSTR MSG_LIVE_MOVE = _UxGT("Živý pohyb");
LSTR MSG_SPEED = _UxGT("Rýchlosť");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Výška podl.");

View file

@ -253,6 +253,7 @@ namespace LanguageNarrow_sv {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Hetände för kall");
LSTR MSG_MOVE_N_MM = _UxGT("Flytta $mm");
LSTR MSG_MOVE_N_IN = _UxGT("Flytta $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Flytta $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Hastighet");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Bädd Z");
LSTR MSG_NOZZLE = _UxGT("Munstycke");

View file

@ -293,6 +293,7 @@ namespace LanguageNarrow_tr {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Nozul Çok Soğuk");
LSTR MSG_MOVE_N_MM = _UxGT("$mm");
LSTR MSG_MOVE_N_IN = _UxGT("$in");
LSTR MSG_MOVE_N_DEG = _UxGT("$") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Hız");
LSTR MSG_BED_Z = _UxGT("Z Mesafesi");
LSTR MSG_NOZZLE = _UxGT("Nozul");

View file

@ -264,6 +264,7 @@ namespace LanguageNarrow_uk {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Сопло дуже холодне");
LSTR MSG_MOVE_N_MM = _UxGT("Рух $мм");
LSTR MSG_MOVE_N_IN = _UxGT("Рух $in");
LSTR MSG_MOVE_N_DEG = _UxGT("Рух $") LCD_STR_DEGREE;
LSTR MSG_SPEED = _UxGT("Швидкість");
LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Столу");
LSTR MSG_NOZZLE = _UxGT("Сопло, ") LCD_STR_DEGREE _UxGT("C");

View file

@ -202,6 +202,7 @@ namespace LanguageNarrow_vi {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("Đầu nóng quá lạnh"); // Hotend too cold
LSTR MSG_MOVE_N_MM = _UxGT("Di chuyển $mm"); // Move $mm
LSTR MSG_MOVE_N_IN = _UxGT("Di chuyển $in"); // Move $in
LSTR MSG_MOVE_N_DEG = _UxGT("Di chuyển $") LCD_STR_DEGREE; // Move $°
LSTR MSG_SPEED = _UxGT("Tốc độ"); // Speed
LSTR MSG_MESH_Z_OFFSET = _UxGT("Z Bàn");
LSTR MSG_NOZZLE = _UxGT("Đầu phun"); // Nozzle

View file

@ -222,6 +222,7 @@ namespace LanguageNarrow_zh_TW {
LSTR MSG_HOTEND_TOO_COLD = _UxGT("噴嘴溫度不夠"); // "Hotend too cold"
LSTR MSG_MOVE_N_MM = _UxGT("移動 $ mm"); // "Move $mm"
LSTR MSG_MOVE_N_IN = _UxGT("移動 $ in"); // "Move $in"
LSTR MSG_MOVE_N_DEG = _UxGT("移動 $ ") LCD_STR_DEGREE; // "Move $°"
LSTR MSG_SPEED = _UxGT("速率"); // "Speed"
LSTR MSG_MESH_Z_OFFSET = _UxGT("熱床Z"); // "Bed Z"
LSTR MSG_NOZZLE = " " LCD_STR_THERMOMETER _UxGT(" 噴嘴"); // "Nozzle" 噴嘴

View file

@ -152,23 +152,32 @@ void _menu_move_distance(const AxisEnum axis, const screenFunc_t func, const int
BACK_ITEM(MSG_MOVE_AXIS);
#ifndef EXTRUDE_MAXLENGTH
#define EXTRUDE_MAXLENGTH 50
#define __LINEAR_LIMIT(D) ((D) < max_length(axis) / 2 + 1)
#if HAS_EXTRUDERS
#ifndef EXTRUDE_MAXLENGTH
#define EXTRUDE_MAXLENGTH 50
#endif
#define _LINEAR_LIMIT(D) ((axis < E_AXIS) ? __LINEAR_LIMIT(D) : ((D) < (EXTRUDE_MAXLENGTH) / 2 + 1))
#else
#define _LINEAR_LIMIT __LINEAR_LIMIT
#endif
#define __MOVE_MM(T,D) if (axis < NUM_AXES /* Linear and rotational axes: */ \
? (D) > base_max_pos(axis) / 2 /* XYZIJKUVW limit to half axis length */ \
: TERN0(HAS_EXTRUDERS, (D) <= (EXTRUDE_MAXLENGTH) / 2 + 1) /* E... limit to ~half max length (or 50mm) */ \
) SUBMENU_S(F(T), MSG_MOVE_N_MM, []{ _goto_manual_move(D); });
#define __MOVE_SUB(L,T,D) if (rotational[axis] || _LINEAR_LIMIT(D)) SUBMENU_S(F(T), L, []{ _goto_manual_move(D); })
if (parser.using_inch_units()) {
if (rotational[axis]) {
#ifdef MANUAL_MOVE_DISTANCE_DEG
#define _MOVE_DEG(D) __MOVE_SUB(MSG_MOVE_N_DEG, STRINGIFY(D), D);
MAP(_MOVE_DEG, MANUAL_MOVE_DISTANCE_DEG)
#endif
}
else if (parser.using_inch_units()) {
#ifdef MANUAL_MOVE_DISTANCE_IN
#define _MOVE_IN(I) __MOVE_MM(STRINGIFY(I), IN_TO_MM(I))
#define _MOVE_IN(I) __MOVE_SUB(MSG_MOVE_N_MM, STRINGIFY(I), IN_TO_MM(I));
MAP(_MOVE_IN, MANUAL_MOVE_DISTANCE_IN)
#endif
}
else {
#ifdef MANUAL_MOVE_DISTANCE_MM
#define _MOVE_MM(M) __MOVE_MM(STRINGIFY(M), M)
#define _MOVE_MM(M) __MOVE_SUB(MSG_MOVE_N_MM, STRINGIFY(M), M);
MAP(_MOVE_MM, MANUAL_MOVE_DISTANCE_MM)
#endif
#if HAS_Z_AXIS

View file

@ -142,6 +142,13 @@ XYZ_DEFS(float, base_home_pos, HOME_POS);
XYZ_DEFS(float, max_length, MAX_LENGTH);
XYZ_DEFS(int8_t, home_dir, HOME_DIR);
// Flags for rotational axes
constexpr AxisFlags rotational{0 LOGICAL_AXIS_GANG(
|| 0, || 0, || 0, || 0,
|| (ENABLED(AXIS4_ROTATES)<<I_AXIS), || (ENABLED(AXIS5_ROTATES)<<J_AXIS), || (ENABLED(AXIS6_ROTATES)<<K_AXIS),
|| (ENABLED(AXIS7_ROTATES)<<U_AXIS), || (ENABLED(AXIS8_ROTATES)<<V_AXIS), || (ENABLED(AXIS9_ROTATES)<<W_AXIS))
};
inline float home_bump_mm(const AxisEnum axis) {
static const xyz_pos_t home_bump_mm_P DEFS_PROGMEM = HOMING_BUMP_MM;
return pgm_read_any(&home_bump_mm_P[axis]);