Tramming Wizard submenu option (#20000)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
This commit is contained in:
parent
2fdeceda58
commit
6954772ece
@ -808,7 +808,9 @@
|
|||||||
|
|
||||||
#define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation
|
#define RESTORE_LEVELING_AFTER_G35 // Enable to restore leveling setup after operation
|
||||||
//#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first
|
//#define REPORT_TRAMMING_MM // Report Z deviation (mm) for each point relative to the first
|
||||||
//#define ASSISTED_TRAMMING_MENU_ITEM // Add a menu item for Assisted Tramming
|
|
||||||
|
//#define ASSISTED_TRAMMING_MENU_ITEM // Add a menu item to run G35 Assisted Tramming (MarlinUI)
|
||||||
|
//#define ASSISTED_TRAMMING_WIZARD // Make the menu item open a Tramming Wizard sub-menu
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Screw thread:
|
* Screw thread:
|
||||||
|
59
Marlin/src/feature/tramming.h
Normal file
59
Marlin/src/feature/tramming.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/**
|
||||||
|
* Marlin 3D Printer Firmware
|
||||||
|
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||||
|
*
|
||||||
|
* Based on Sprinter and grbl.
|
||||||
|
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../inc/MarlinConfigPre.h"
|
||||||
|
|
||||||
|
#if !WITHIN(TRAMMING_SCREW_THREAD, 30, 51) || TRAMMING_SCREW_THREAD % 10 > 1
|
||||||
|
#error "TRAMMING_SCREW_THREAD must be equal to 30, 31, 40, 41, 50, or 51."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
constexpr xy_pos_t screws_tilt_adjust_pos[] = TRAMMING_POINT_XY;
|
||||||
|
|
||||||
|
#define G35_PROBE_COUNT COUNT(screws_tilt_adjust_pos)
|
||||||
|
static_assert(G35_PROBE_COUNT >= 3, "TRAMMING_POINT_XY requires at least 3 XY positions.");
|
||||||
|
|
||||||
|
extern const char point_name_1[], point_name_2[], point_name_3[]
|
||||||
|
#ifdef TRAMMING_POINT_NAME_4
|
||||||
|
, point_name_4[]
|
||||||
|
#ifdef TRAMMING_POINT_NAME_5
|
||||||
|
, point_name_5[]
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
|
#define _NR_TRAM_NAMES 2
|
||||||
|
#ifdef TRAMMING_POINT_NAME_3
|
||||||
|
#undef _NR_TRAM_NAMES
|
||||||
|
#define _NR_TRAM_NAMES 3
|
||||||
|
#ifdef TRAMMING_POINT_NAME_4
|
||||||
|
#undef _NR_TRAM_NAMES
|
||||||
|
#define _NR_TRAM_NAMES 4
|
||||||
|
#ifdef TRAMMING_POINT_NAME_5
|
||||||
|
#undef _NR_TRAM_NAMES
|
||||||
|
#define _NR_TRAM_NAMES 5
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
static_assert(_NR_TRAM_NAMES >= G35_PROBE_COUNT, "Define enough TRAMMING_POINT_NAME_s for all TRAMMING_POINT_XY entries.");
|
||||||
|
#undef _NR_TRAM_NAMES
|
||||||
|
|
||||||
|
extern PGM_P const tramming_point_name[];
|
@ -36,19 +36,23 @@
|
|||||||
#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
|
#define DEBUG_OUT ENABLED(DEBUG_LEVELING_FEATURE)
|
||||||
#include "../../core/debug_out.h"
|
#include "../../core/debug_out.h"
|
||||||
|
|
||||||
constexpr xy_pos_t screws_tilt_adjust_pos[] = TRAMMING_POINT_XY;
|
//
|
||||||
|
// Define tramming point names.
|
||||||
|
//
|
||||||
|
|
||||||
static PGMSTR(point_name_1, TRAMMING_POINT_NAME_1);
|
#include "../../feature/tramming.h" // Validate
|
||||||
static PGMSTR(point_name_2, TRAMMING_POINT_NAME_2);
|
|
||||||
static PGMSTR(point_name_3, TRAMMING_POINT_NAME_3);
|
PGMSTR(point_name_1, TRAMMING_POINT_NAME_1);
|
||||||
|
PGMSTR(point_name_2, TRAMMING_POINT_NAME_2);
|
||||||
|
PGMSTR(point_name_3, TRAMMING_POINT_NAME_3);
|
||||||
#ifdef TRAMMING_POINT_NAME_4
|
#ifdef TRAMMING_POINT_NAME_4
|
||||||
static PGMSTR(point_name_4, TRAMMING_POINT_NAME_4);
|
PGMSTR(point_name_4, TRAMMING_POINT_NAME_4);
|
||||||
#ifdef TRAMMING_POINT_NAME_5
|
#ifdef TRAMMING_POINT_NAME_5
|
||||||
static PGMSTR(point_name_5, TRAMMING_POINT_NAME_5);
|
PGMSTR(point_name_5, TRAMMING_POINT_NAME_5);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static PGM_P const tramming_point_name[] PROGMEM = {
|
PGM_P const tramming_point_name[] PROGMEM = {
|
||||||
point_name_1, point_name_2, point_name_3
|
point_name_1, point_name_2, point_name_3
|
||||||
#ifdef TRAMMING_POINT_NAME_4
|
#ifdef TRAMMING_POINT_NAME_4
|
||||||
, point_name_4
|
, point_name_4
|
||||||
@ -58,14 +62,6 @@ static PGM_P const tramming_point_name[] PROGMEM = {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define G35_PROBE_COUNT COUNT(screws_tilt_adjust_pos)
|
|
||||||
|
|
||||||
#if !WITHIN(TRAMMING_SCREW_THREAD, 30, 51) || TRAMMING_SCREW_THREAD % 10 > 1
|
|
||||||
#error "TRAMMING_SCREW_THREAD must be equal to 30, 31, 40, 41, 50, or 51."
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static_assert(G35_PROBE_COUNT > 2, "TRAMMING_POINT_XY requires at least 3 XY positions.");
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* G35: Read bed corners to help adjust bed screws
|
* G35: Read bed corners to help adjust bed screws
|
||||||
*
|
*
|
||||||
|
@ -73,7 +73,6 @@ namespace Language_en {
|
|||||||
PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home Y");
|
PROGMEM Language_Str MSG_AUTO_HOME_Y = _UxGT("Home Y");
|
||||||
PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z");
|
PROGMEM Language_Str MSG_AUTO_HOME_Z = _UxGT("Home Z");
|
||||||
PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align");
|
PROGMEM Language_Str MSG_AUTO_Z_ALIGN = _UxGT("Auto Z-Align");
|
||||||
PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming");
|
|
||||||
PROGMEM Language_Str MSG_ITERATION = _UxGT("G34 Iteration: %i");
|
PROGMEM Language_Str MSG_ITERATION = _UxGT("G34 Iteration: %i");
|
||||||
PROGMEM Language_Str MSG_DECREASING_ACCURACY = _UxGT("Accuracy Decreasing!");
|
PROGMEM Language_Str MSG_DECREASING_ACCURACY = _UxGT("Accuracy Decreasing!");
|
||||||
PROGMEM Language_Str MSG_ACCURACY_ACHIEVED = _UxGT("Accuracy Achieved");
|
PROGMEM Language_Str MSG_ACCURACY_ACHIEVED = _UxGT("Accuracy Achieved");
|
||||||
@ -85,6 +84,10 @@ namespace Language_en {
|
|||||||
PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Set Home Offsets");
|
PROGMEM Language_Str MSG_SET_HOME_OFFSETS = _UxGT("Set Home Offsets");
|
||||||
PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets Applied");
|
PROGMEM Language_Str MSG_HOME_OFFSETS_APPLIED = _UxGT("Offsets Applied");
|
||||||
PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Set Origin");
|
PROGMEM Language_Str MSG_SET_ORIGIN = _UxGT("Set Origin");
|
||||||
|
PROGMEM Language_Str MSG_ASSISTED_TRAMMING = _UxGT("Assisted Tramming");
|
||||||
|
PROGMEM Language_Str MSG_TRAMMING_WIZARD = _UxGT("Tramming Wizard");
|
||||||
|
PROGMEM Language_Str MSG_SELECT_ORIGIN = _UxGT("Select Origin");
|
||||||
|
PROGMEM Language_Str MSG_LAST_VALUE_SP = _UxGT("Last value ");
|
||||||
#if PREHEAT_COUNT
|
#if PREHEAT_COUNT
|
||||||
PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Preheat ") PREHEAT_1_LABEL;
|
PROGMEM Language_Str MSG_PREHEAT_1 = _UxGT("Preheat ") PREHEAT_1_LABEL;
|
||||||
PROGMEM Language_Str MSG_PREHEAT_1_H = _UxGT("Preheat ") PREHEAT_1_LABEL " ~";
|
PROGMEM Language_Str MSG_PREHEAT_1_H = _UxGT("Preheat ") PREHEAT_1_LABEL " ~";
|
||||||
@ -666,6 +669,7 @@ namespace Language_en {
|
|||||||
PROGMEM Language_Str MSG_REHEATING = _UxGT("Reheating...");
|
PROGMEM Language_Str MSG_REHEATING = _UxGT("Reheating...");
|
||||||
|
|
||||||
PROGMEM Language_Str MSG_PROBE_WIZARD = _UxGT("Z Probe Wizard");
|
PROGMEM Language_Str MSG_PROBE_WIZARD = _UxGT("Z Probe Wizard");
|
||||||
|
|
||||||
PROGMEM Language_Str MSG_SOUND = _UxGT("Sound");
|
PROGMEM Language_Str MSG_SOUND = _UxGT("Sound");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -305,6 +305,10 @@ void menu_move() {
|
|||||||
void menu_bed_leveling();
|
void menu_bed_leveling();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(ASSISTED_TRAMMING_WIZARD)
|
||||||
|
void goto_tramming_wizard();
|
||||||
|
#endif
|
||||||
|
|
||||||
void menu_motion() {
|
void menu_motion() {
|
||||||
START_MENU();
|
START_MENU();
|
||||||
|
|
||||||
@ -346,7 +350,9 @@ void menu_motion() {
|
|||||||
//
|
//
|
||||||
// Assisted Bed Tramming
|
// Assisted Bed Tramming
|
||||||
//
|
//
|
||||||
#if ENABLED(ASSISTED_TRAMMING_MENU_ITEM)
|
#if ENABLED(ASSISTED_TRAMMING_WIZARD)
|
||||||
|
SUBMENU(MSG_TRAMMING_WIZARD, goto_tramming_wizard);
|
||||||
|
#elif ENABLED(ASSISTED_TRAMMING_MENU_ITEM)
|
||||||
GCODES_ITEM(MSG_ASSISTED_TRAMMING, PSTR("G35"));
|
GCODES_ITEM(MSG_ASSISTED_TRAMMING, PSTR("G35"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
93
Marlin/src/lcd/menu/menu_tramming.cpp
Normal file
93
Marlin/src/lcd/menu/menu_tramming.cpp
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
/**
|
||||||
|
* Marlin 3D Printer Firmware
|
||||||
|
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||||
|
*
|
||||||
|
* Based on Sprinter and grbl.
|
||||||
|
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
//
|
||||||
|
// Bed Tramming Wizard
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "../../inc/MarlinConfigPre.h"
|
||||||
|
|
||||||
|
#if BOTH(HAS_LCD_MENU, ASSISTED_TRAMMING_WIZARD)
|
||||||
|
|
||||||
|
#include "menu_item.h"
|
||||||
|
|
||||||
|
#include "../../feature/tramming.h"
|
||||||
|
|
||||||
|
#include "../../module/motion.h"
|
||||||
|
#include "../../module/probe.h"
|
||||||
|
#include "../../gcode/queue.h"
|
||||||
|
|
||||||
|
//#define DEBUG_OUT 1
|
||||||
|
#include "../../core/debug_out.h"
|
||||||
|
|
||||||
|
float z_measured[G35_PROBE_COUNT] = { 0 };
|
||||||
|
static uint8_t tram_index = 0;
|
||||||
|
|
||||||
|
bool probe_single_point() {
|
||||||
|
const float z_probed_height = probe.probe_at_point(screws_tilt_adjust_pos[tram_index], PROBE_PT_RAISE, 0, true);
|
||||||
|
DEBUG_ECHOLNPAIR("probe_single_point: ", z_probed_height, "mm");
|
||||||
|
z_measured[tram_index] = z_probed_height;
|
||||||
|
return !isnan(z_probed_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _menu_single_probe(const uint8_t point) {
|
||||||
|
tram_index = point;
|
||||||
|
DEBUG_ECHOLNPAIR("Screen: single probe screen Arg:", point);
|
||||||
|
START_MENU();
|
||||||
|
STATIC_ITEM(MSG_LEVEL_CORNERS, SS_LEFT);
|
||||||
|
STATIC_ITEM(MSG_LAST_VALUE_SP, SS_LEFT, ftostr42_52(z_measured[0] - z_measured[point])); // Print diff
|
||||||
|
ACTION_ITEM(MSG_UBL_BC_INSERT2, []{ if (probe_single_point()) ui.refresh(); });
|
||||||
|
ACTION_ITEM(MSG_BUTTON_DONE, []{ ui.goto_previous_screen_no_defer(); }); // Back
|
||||||
|
END_MENU();
|
||||||
|
}
|
||||||
|
|
||||||
|
void tramming_wizard_menu() {
|
||||||
|
DEBUG_ECHOLNPAIR("Screen: tramming_wizard_menu");
|
||||||
|
START_MENU();
|
||||||
|
STATIC_ITEM(MSG_SELECT_ORIGIN);
|
||||||
|
|
||||||
|
// Draw a menu item for each tramming point
|
||||||
|
LOOP_L_N(i, G35_PROBE_COUNT)
|
||||||
|
SUBMENU_N_P(i, (char*)pgm_read_ptr(&tramming_point_name[i]), []{ _menu_single_probe(MenuItemBase::itemIndex); });
|
||||||
|
|
||||||
|
ACTION_ITEM(MSG_BUTTON_DONE, []{ ui.goto_previous_screen_no_defer(); });
|
||||||
|
END_MENU();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Init the wizard and enter the submenu
|
||||||
|
void goto_tramming_wizard() {
|
||||||
|
DEBUG_ECHOLNPAIR("Screen: goto_tramming_wizard", 1);
|
||||||
|
tram_index = 0;
|
||||||
|
ui.defer_status_screen();
|
||||||
|
//probe_single_point(); // Probe first point to get differences
|
||||||
|
|
||||||
|
// Inject G28, wait for homing to complete,
|
||||||
|
set_all_unhomed();
|
||||||
|
queue.inject_P(G28_STR);
|
||||||
|
ui.goto_screen([]{
|
||||||
|
_lcd_draw_homing();
|
||||||
|
if (all_axes_homed())
|
||||||
|
ui.goto_screen(tramming_wizard_menu);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // HAS_LCD_MENU && ASSISTED_TRAMMING_WIZARD
|
@ -111,6 +111,9 @@
|
|||||||
#if ENABLED(TOUCH_SCREEN_CALIBRATION)
|
#if ENABLED(TOUCH_SCREEN_CALIBRATION)
|
||||||
#define HAS_MENU_TOUCH_SCREEN
|
#define HAS_MENU_TOUCH_SCREEN
|
||||||
#endif
|
#endif
|
||||||
|
#if ENABLED(ASSISTED_TRAMMING_WIZARD)
|
||||||
|
#define HAS_MENU_TRAMMING
|
||||||
|
#endif
|
||||||
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
#if ENABLED(AUTO_BED_LEVELING_UBL)
|
||||||
#define HAS_MENU_UBL
|
#define HAS_MENU_UBL
|
||||||
#endif
|
#endif
|
||||||
|
@ -14,7 +14,7 @@ opt_set TEMP_SENSOR_BED 2
|
|||||||
opt_set GRID_MAX_POINTS_X 16
|
opt_set GRID_MAX_POINTS_X 16
|
||||||
opt_set FANMUX0_PIN 53
|
opt_set FANMUX0_PIN 53
|
||||||
opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS \
|
opt_enable S_CURVE_ACCELERATION EEPROM_SETTINGS GCODE_MACROS \
|
||||||
FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING ASSISTED_TRAMMING \
|
FIX_MOUNTED_PROBE Z_SAFE_HOMING CODEPENDENT_XY_HOMING ASSISTED_TRAMMING ASSISTED_TRAMMING_WIZARD \
|
||||||
EEPROM_SETTINGS SDSUPPORT BINARY_FILE_TRANSFER \
|
EEPROM_SETTINGS SDSUPPORT BINARY_FILE_TRANSFER \
|
||||||
BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
|
BLINKM PCA9533 PCA9632 RGB_LED RGB_LED_R_PIN RGB_LED_G_PIN RGB_LED_B_PIN LED_CONTROL_MENU \
|
||||||
NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
|
NEOPIXEL_LED CASE_LIGHT_ENABLE CASE_LIGHT_USE_NEOPIXEL CASE_LIGHT_MENU \
|
||||||
|
@ -48,6 +48,7 @@ default_src_filter = +<src/*> -<src/config> -<src/HAL> +<src/HAL/shared>
|
|||||||
-<src/lcd/menu/menu_temperature.cpp>
|
-<src/lcd/menu/menu_temperature.cpp>
|
||||||
-<src/lcd/menu/menu_tmc.cpp>
|
-<src/lcd/menu/menu_tmc.cpp>
|
||||||
-<src/lcd/menu/menu_touch_screen.cpp>
|
-<src/lcd/menu/menu_touch_screen.cpp>
|
||||||
|
-<src/lcd/menu/menu_tramming.cpp>
|
||||||
-<src/lcd/menu/menu_ubl.cpp>
|
-<src/lcd/menu/menu_ubl.cpp>
|
||||||
-<src/lcd/extui/lib/mks_ui>
|
-<src/lcd/extui/lib/mks_ui>
|
||||||
-<src/lcd/extui/lib/dgus> -<src/lcd/extui/dgus_lcd.cpp>
|
-<src/lcd/extui/lib/dgus> -<src/lcd/extui/dgus_lcd.cpp>
|
||||||
@ -259,6 +260,7 @@ HAS_MENU_CUTTER = src_filter=+<src/lcd/menu/menu_spindle_laser.cpp>
|
|||||||
HAS_MENU_TEMPERATURE = src_filter=+<src/lcd/menu/menu_temperature.cpp>
|
HAS_MENU_TEMPERATURE = src_filter=+<src/lcd/menu/menu_temperature.cpp>
|
||||||
HAS_MENU_TMC = src_filter=+<src/lcd/menu/menu_tmc.cpp>
|
HAS_MENU_TMC = src_filter=+<src/lcd/menu/menu_tmc.cpp>
|
||||||
HAS_MENU_TOUCH_SCREEN = src_filter=+<src/lcd/menu/menu_touch_screen.cpp>
|
HAS_MENU_TOUCH_SCREEN = src_filter=+<src/lcd/menu/menu_touch_screen.cpp>
|
||||||
|
HAS_MENU_TRAMMING = src_filter=+<src/lcd/menu/menu_tramming.cpp>
|
||||||
HAS_MENU_UBL = src_filter=+<src/lcd/menu/menu_ubl.cpp>
|
HAS_MENU_UBL = src_filter=+<src/lcd/menu/menu_ubl.cpp>
|
||||||
ANYCUBIC_LCD_CHIRON = src_filter=+<src/lcd/extui/anycubic_chiron_lcd.cpp> +<src/lcd/extui/lib/anycubic_chiron>
|
ANYCUBIC_LCD_CHIRON = src_filter=+<src/lcd/extui/anycubic_chiron_lcd.cpp> +<src/lcd/extui/lib/anycubic_chiron>
|
||||||
ANYCUBIC_LCD_I3MEGA = src_filter=+<src/lcd/extui/anycubic_i3mega_lcd.cpp> +<src/lcd/extui/lib/anycubic_i3mega>
|
ANYCUBIC_LCD_I3MEGA = src_filter=+<src/lcd/extui/anycubic_i3mega_lcd.cpp> +<src/lcd/extui/lib/anycubic_i3mega>
|
||||||
|
Loading…
Reference in New Issue
Block a user