Added buttons for set default tilt values

SPE-2666
This commit is contained in:
YuSanka 2025-01-30 20:22:23 +01:00 committed by Lukas Matena
parent 7e4ac102f4
commit 9896788693
4 changed files with 132 additions and 57 deletions

View File

@ -5299,9 +5299,13 @@ void handle_legacy_sla(DynamicPrintConfig &config)
!config.has("tilt_down_offset_delay") // Config from old PS doesn't contain any of tilt options, so check it !config.has("tilt_down_offset_delay") // Config from old PS doesn't contain any of tilt options, so check it
) { ) {
int tilt_mode = config.option("material_print_speed")->getInt(); int tilt_mode = config.option("material_print_speed")->getInt();
const bool is_sl1_model = config.opt_string("printer_model") == "SL1"; const bool is_sl1_model = config.opt_string("printer_model") == "SL1";
update_tilts_by_mode(config, tilt_mode, is_sl1_model);
}
}
void update_tilts_by_mode(DynamicPrintConfig& config, int tilt_mode, bool is_sl1_model)
{
const std::map<std::string, ConfigOptionFloats> floats_defs = is_sl1_model ? tilt_options_floats_sl1_defs : tilt_options_floats_defs; const std::map<std::string, ConfigOptionFloats> floats_defs = is_sl1_model ? tilt_options_floats_sl1_defs : tilt_options_floats_defs;
const std::map<std::string, ConfigOptionInts> ints_defs = is_sl1_model ? tilt_options_ints_sl1_defs : tilt_options_ints_defs; const std::map<std::string, ConfigOptionInts> ints_defs = is_sl1_model ? tilt_options_ints_sl1_defs : tilt_options_ints_defs;
const std::map<std::string, ConfigOptionBools> bools_defs = is_sl1_model ? tilt_options_bools_sl1_defs : tilt_options_bools_defs; const std::map<std::string, ConfigOptionBools> bools_defs = is_sl1_model ? tilt_options_bools_sl1_defs : tilt_options_bools_defs;
@ -5352,7 +5356,6 @@ void handle_legacy_sla(DynamicPrintConfig &config)
} }
} }
} }
}
void DynamicPrintConfig::set_num_extruders(unsigned int num_extruders) void DynamicPrintConfig::set_num_extruders(unsigned int num_extruders)
{ {

View File

@ -378,6 +378,7 @@ public:
// This vector containes list of parameters for preview of tilt profiles // This vector containes list of parameters for preview of tilt profiles
const std::vector<std::string>& tilt_options(); const std::vector<std::string>& tilt_options();
void update_tilts_by_mode(DynamicPrintConfig& config, int tilt_mode, bool is_sl1_model);
void handle_legacy_sla(DynamicPrintConfig &config); void handle_legacy_sla(DynamicPrintConfig &config);
class StaticPrintConfig : public StaticConfig class StaticPrintConfig : public StaticConfig

View File

@ -38,6 +38,7 @@
#include "Search.hpp" #include "Search.hpp"
#include "OG_CustomCtrl.hpp" #include "OG_CustomCtrl.hpp"
#include <tuple>
#include <wx/app.h> #include <wx/app.h>
#include <wx/button.h> #include <wx/button.h>
#include <wx/scrolwin.h> #include <wx/scrolwin.h>
@ -3674,13 +3675,6 @@ void TabPrinter::update_fff()
toggle_options(); toggle_options();
} }
bool Tab::is_prusa_printer() const
{
const Preset& edited_preset = m_preset_bundle->printers.get_edited_preset();
std::string printer_model = edited_preset.trim_vendor_repo_prefix(edited_preset.config.opt_string("printer_model"));
return SLAPrint::is_prusa_print(printer_model);
}
void TabPrinter::update_sla() void TabPrinter::update_sla()
{ {
} }
@ -5493,10 +5487,10 @@ static void append_tilt_options_line(ConfigOptionsGroupShp optgroup, const std::
optgroup->append_line(line); optgroup->append_line(line);
} }
void TabSLAMaterial::build_tilt_group(Slic3r::GUI::PageShp page) static void create_tilt_legend(ConfigOptionsGroupShp optgroup)
{ {
// Legend // Legend
std::vector<std::pair<std::string, std::string>> legend_columns = { std::vector<std::pair<std::string, std::string>> columns = {
// TRN: This is a label of a column of parameters in settings to be used when the area is below certain threshold. // TRN: This is a label of a column of parameters in settings to be used when the area is below certain threshold.
{L("Below"), {L("Below"),
L("Values in this column are applied when layer area is smaller than area_fill.")}, L("Values in this column are applied when layer area is smaller than area_fill.")},
@ -5504,8 +5498,27 @@ void TabSLAMaterial::build_tilt_group(Slic3r::GUI::PageShp page)
{L("Above"), {L("Above"),
L("Values in this column are applied when layer area is larger than area_fill.")}, L("Values in this column are applied when layer area is larger than area_fill.")},
}; };
create_legend(page, legend_columns, comExpert/*, true*/);
auto legend = [columns](wxWindow* parent) {
auto legend_sizer = new wxBoxSizer(wxHORIZONTAL);
legend_sizer->Add(new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxSize(25*em_unit(parent), -1)));
for (auto& [name, tooltip] : columns) {
auto legend_item = new wxStaticText(parent, wxID_ANY, _(name), wxDefaultPosition, wxSize(20*em_unit(parent), -1));
legend_item->SetToolTip(_(tooltip));
legend_sizer->Add(legend_item);
}
return legend_sizer;
};
Line line = Line{ "", "" };
line.full_width = 1;
line.append_widget(legend);
optgroup->append_line(line);
}
void TabSLAMaterial::build_tilt_group(Slic3r::GUI::PageShp page)
{
// TRN: 'Profile' in this context denotes a group of parameters used to configure // TRN: 'Profile' in this context denotes a group of parameters used to configure
// layer separation procedure for SLA printers. // layer separation procedure for SLA printers.
auto optgroup = page->new_optgroup(L("Profile settings")); auto optgroup = page->new_optgroup(L("Profile settings"));
@ -5518,10 +5531,50 @@ void TabSLAMaterial::build_tilt_group(Slic3r::GUI::PageShp page)
update(); update();
}; };
create_line_with_tilt_defaults(optgroup);
create_tilt_legend(optgroup);
for (const std::string& opt_key : tilt_options()) for (const std::string& opt_key : tilt_options())
append_tilt_options_line(optgroup, opt_key); append_tilt_options_line(optgroup, opt_key);
} }
std::vector<std::tuple<wxString, wxString, int>> default_tilt_buttons = {
{ _L("Fast"), _L("Set default values for fast print speed"), SLAMaterialSpeed::slamsFast },
{ _L("Slow"), _L("Set default values for slow print speed"), SLAMaterialSpeed::slamsSlow },
{ _L("High viscosity"), _L("Set default values for high viscosity print speed"), SLAMaterialSpeed::slamsHighViscosity }
};
void TabSLAMaterial::create_line_with_tilt_defaults(ConfigOptionsGroupShp optgroup)
{
auto print_speed_btns = [this](wxWindow* parent) {
m_tilt_defaults_sizer = new wxBoxSizer(wxHORIZONTAL);
auto grid_sizer = new wxGridSizer(3, 0, 0);
for (const auto& [label, tooltip, material_speed] : default_tilt_buttons) {
ScalableButton* btn;
add_scaled_button(parent, &btn, "cog", label + " ", wxBU_EXACTFIT);
btn->SetToolTip(tooltip);
btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
int tilt_mode = int(material_speed);
btn->Bind(wxEVT_BUTTON, [this, tilt_mode](wxCommandEvent&) {
DynamicPrintConfig new_conf = *m_config;
update_tilts_by_mode(new_conf, tilt_mode, false);
load_config(new_conf);
});
grid_sizer->Add(btn, 1, wxEXPAND | wxRIGHT, 5);
}
m_tilt_defaults_sizer->Add(grid_sizer, 0, wxALIGN_CENTRE_VERTICAL);
return m_tilt_defaults_sizer;
};
Line line = Line{ "", "" };
line.full_width = 1;
line.append_widget(print_speed_btns);
optgroup->append_line(line);
}
std::vector<std::string> disable_tilt_options = { std::vector<std::string> disable_tilt_options = {
"tilt_down_initial_speed" "tilt_down_initial_speed"
,"tilt_down_offset_steps" ,"tilt_down_offset_steps"
@ -5589,14 +5642,28 @@ void TabSLAMaterial::update_description_lines()
Tab::update_description_lines(); Tab::update_description_lines();
} }
std::string Tab::printer_model() const
{
const Preset& edited_preset = m_preset_bundle->printers.get_edited_preset();
return edited_preset.trim_vendor_repo_prefix(edited_preset.config.opt_string("printer_model"));
}
bool Tab::is_prusa_printer() const
{
return SLAPrint::is_prusa_print(printer_model());
}
void TabSLAMaterial::update_sla_prusa_specific_visibility() void TabSLAMaterial::update_sla_prusa_specific_visibility()
{ {
if (m_active_page && m_active_page->title() == "Material printing profile") { if (m_active_page && m_active_page->title() == "Material printing profile") {
for (auto& title : { "", "Profile settings" }) { for (auto& title : { "", "Profile settings" }) {
auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(),
[title](const ConfigOptionsGroupShp og) { return og->title == title; }); [title](const ConfigOptionsGroupShp og) { return og->title == title; });
if (og_it != m_active_page->m_optgroups.end()) if (og_it != m_active_page->m_optgroups.end()) {
og_it->get()->Show(m_mode >= comAdvanced && is_prusa_printer()); og_it->get()->Show(m_mode >= comAdvanced && is_prusa_printer());
const std::string pr_model = printer_model();
m_tilt_defaults_sizer->Show(pr_model == "SL1S" || pr_model == "M1");
}
} }
auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(), auto og_it = std::find_if(m_active_page->m_optgroups.begin(), m_active_page->m_optgroups.end(),
@ -5616,6 +5683,7 @@ void TabSLAMaterial::clear_pages()
over_opt.second = nullptr; over_opt.second = nullptr;
m_z_correction_to_mm_description = nullptr; m_z_correction_to_mm_description = nullptr;
m_tilt_defaults_sizer = nullptr;
} }
void TabSLAMaterial::msw_rescale() void TabSLAMaterial::msw_rescale()

View File

@ -426,6 +426,7 @@ protected:
void update_frequently_changed_parameters(); void update_frequently_changed_parameters();
void fill_icon_descriptions(); void fill_icon_descriptions();
void set_tooltips_text(); void set_tooltips_text();
std::string printer_model() const;
virtual bool select_preset_by_name(const std::string& name_w_suffix, bool force); virtual bool select_preset_by_name(const std::string& name_w_suffix, bool force);
virtual bool save_current_preset(const std::string& new_name, bool detach); virtual bool save_current_preset(const std::string& new_name, bool detach);
@ -569,9 +570,11 @@ class TabSLAMaterial : public Tab
void update_line_with_near_label_widget(ConfigOptionsGroupShp optgroup, const std::string& opt_key, bool is_checked = true); void update_line_with_near_label_widget(ConfigOptionsGroupShp optgroup, const std::string& opt_key, bool is_checked = true);
void add_material_overrides_page(); void add_material_overrides_page();
void update_material_overrides_page(); void update_material_overrides_page();
void create_line_with_tilt_defaults(ConfigOptionsGroupShp optgroup);
std::map<std::string, wxWindow*> m_overrides_options; std::map<std::string, wxWindow*> m_overrides_options;
ogStaticText* m_z_correction_to_mm_description = nullptr; ogStaticText* m_z_correction_to_mm_description = nullptr;
wxSizer* m_tilt_defaults_sizer { nullptr };
public: public:
TabSLAMaterial(wxBookCtrlBase* parent) : TabSLAMaterial(wxBookCtrlBase* parent) :