|
@@ -37,7 +37,7 @@
|
37
|
37
|
#include "../../feature/bedlevel/bedlevel.h"
|
38
|
38
|
|
39
|
39
|
static int16_t ubl_storage_slot = 0,
|
40
|
|
- custom_hotend_temp = 190,
|
|
40
|
+ custom_hotend_temp = 150,
|
41
|
41
|
side_points = 3,
|
42
|
42
|
ubl_fillin_amount = 5,
|
43
|
43
|
ubl_height_amount = 1;
|
|
@@ -603,6 +603,50 @@ void _menu_ubl_tools() {
|
603
|
603
|
|
604
|
604
|
#endif
|
605
|
605
|
|
|
606
|
+#if ENABLED(UBL_MESH_WIZARD)
|
|
607
|
+
|
|
608
|
+ /**
|
|
609
|
+ * UBL Mesh Wizard - One-click mesh creation with or without a probe
|
|
610
|
+ */
|
|
611
|
+ void _lcd_ubl_mesh_wizard() {
|
|
612
|
+ char ubl_lcd_gcode[30];
|
|
613
|
+ #if HAS_HEATED_BED && HAS_HOTEND
|
|
614
|
+ sprintf_P(ubl_lcd_gcode, PSTR("M1004B%iH%iS%i"), custom_bed_temp, custom_hotend_temp, ubl_storage_slot);
|
|
615
|
+ #elif HAS_HOTEND
|
|
616
|
+ sprintf_P(ubl_lcd_gcode, PSTR("M1004H%iS%i"), custom_hotend_temp, ubl_storage_slot);
|
|
617
|
+ #else
|
|
618
|
+ sprintf_P(ubl_lcd_gcode, PSTR("M1004S%i"), ubl_storage_slot);
|
|
619
|
+ #endif
|
|
620
|
+ queue.inject(ubl_lcd_gcode);
|
|
621
|
+ }
|
|
622
|
+
|
|
623
|
+ void _menu_ubl_mesh_wizard() {
|
|
624
|
+ const int16_t total_slots = settings.calc_num_meshes();
|
|
625
|
+ START_MENU();
|
|
626
|
+ BACK_ITEM(MSG_UBL_LEVEL_BED);
|
|
627
|
+
|
|
628
|
+ #if HAS_HOTEND
|
|
629
|
+ EDIT_ITEM(int3, MSG_UBL_HOTEND_TEMP_CUSTOM, &custom_hotend_temp, EXTRUDE_MINTEMP, thermalManager.hotend_max_target(0));
|
|
630
|
+ #endif
|
|
631
|
+
|
|
632
|
+ #if HAS_HEATED_BED
|
|
633
|
+ EDIT_ITEM(int3, MSG_UBL_BED_TEMP_CUSTOM, &custom_bed_temp, BED_MINTEMP, BED_MAX_TARGET);
|
|
634
|
+ #endif
|
|
635
|
+
|
|
636
|
+ EDIT_ITEM(int3, MSG_UBL_STORAGE_SLOT, &ubl_storage_slot, 0, total_slots);
|
|
637
|
+
|
|
638
|
+ ACTION_ITEM(MSG_UBL_MESH_WIZARD, _lcd_ubl_mesh_wizard);
|
|
639
|
+
|
|
640
|
+ #if ENABLED(G26_MESH_VALIDATION)
|
|
641
|
+ SUBMENU(MSG_UBL_VALIDATE_MESH_MENU, _lcd_ubl_validate_mesh);
|
|
642
|
+ #endif
|
|
643
|
+
|
|
644
|
+ ACTION_ITEM(MSG_INFO_SCREEN, ui.return_to_status);
|
|
645
|
+ END_MENU();
|
|
646
|
+ }
|
|
647
|
+
|
|
648
|
+#endif
|
|
649
|
+
|
606
|
650
|
/**
|
607
|
651
|
* UBL System submenu
|
608
|
652
|
*
|
|
@@ -626,6 +670,9 @@ void _lcd_ubl_level_bed() {
|
626
|
670
|
#if ENABLED(G26_MESH_VALIDATION)
|
627
|
671
|
SUBMENU(MSG_UBL_STEP_BY_STEP_MENU, _lcd_ubl_step_by_step);
|
628
|
672
|
#endif
|
|
673
|
+ #if ENABLED(UBL_MESH_WIZARD)
|
|
674
|
+ SUBMENU(MSG_UBL_MESH_WIZARD, _menu_ubl_mesh_wizard);
|
|
675
|
+ #endif
|
629
|
676
|
ACTION_ITEM(MSG_UBL_MESH_EDIT, _ubl_goto_map_screen);
|
630
|
677
|
SUBMENU(MSG_UBL_STORAGE_MESH_MENU, _lcd_ubl_storage_mesh);
|
631
|
678
|
SUBMENU(MSG_UBL_OUTPUT_MAP, _lcd_ubl_output_map);
|