Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer
This commit is contained in:
commit
ccddcf88be
5 changed files with 50 additions and 94 deletions
|
@ -2412,7 +2412,7 @@ void PrintConfigDef::init_sla_params()
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
def->set_default_value(new ConfigOptionInt(10));
|
def->set_default_value(new ConfigOptionInt(10));
|
||||||
|
|
||||||
def = this->add("exposure_time_min", coFloat);
|
def = this->add("min_exposure_time", coFloat);
|
||||||
def->label = L("Minimum exposure time");
|
def->label = L("Minimum exposure time");
|
||||||
def->tooltip = L("Minimum exposure time");
|
def->tooltip = L("Minimum exposure time");
|
||||||
def->sidetext = L("s");
|
def->sidetext = L("s");
|
||||||
|
@ -2420,7 +2420,7 @@ void PrintConfigDef::init_sla_params()
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
def->set_default_value(new ConfigOptionFloat(0));
|
def->set_default_value(new ConfigOptionFloat(0));
|
||||||
|
|
||||||
def = this->add("exposure_time_max", coFloat);
|
def = this->add("max_exposure_time", coFloat);
|
||||||
def->label = L("Maximum exposure time");
|
def->label = L("Maximum exposure time");
|
||||||
def->tooltip = L("Maximum exposure time");
|
def->tooltip = L("Maximum exposure time");
|
||||||
def->sidetext = L("s");
|
def->sidetext = L("s");
|
||||||
|
@ -2435,7 +2435,7 @@ void PrintConfigDef::init_sla_params()
|
||||||
def->min = 0;
|
def->min = 0;
|
||||||
def->set_default_value(new ConfigOptionFloat(10));
|
def->set_default_value(new ConfigOptionFloat(10));
|
||||||
|
|
||||||
def = this->add("initial_exposure_time_min", coFloat);
|
def = this->add("min_initial_exposure_time", coFloat);
|
||||||
def->label = L("Minimum initial exposure time");
|
def->label = L("Minimum initial exposure time");
|
||||||
def->tooltip = L("Minimum initial exposure time");
|
def->tooltip = L("Minimum initial exposure time");
|
||||||
def->sidetext = L("s");
|
def->sidetext = L("s");
|
||||||
|
@ -2443,7 +2443,7 @@ void PrintConfigDef::init_sla_params()
|
||||||
def->mode = comExpert;
|
def->mode = comExpert;
|
||||||
def->set_default_value(new ConfigOptionFloat(0));
|
def->set_default_value(new ConfigOptionFloat(0));
|
||||||
|
|
||||||
def = this->add("initial_exposure_time_max", coFloat);
|
def = this->add("max_initial_exposure_time", coFloat);
|
||||||
def->label = L("Maximum initial exposure time");
|
def->label = L("Maximum initial exposure time");
|
||||||
def->tooltip = L("Maximum initial exposure time");
|
def->tooltip = L("Maximum initial exposure time");
|
||||||
def->sidetext = L("s");
|
def->sidetext = L("s");
|
||||||
|
|
|
@ -1098,22 +1098,14 @@ class SLAMaterialConfig : public StaticPrintConfig
|
||||||
STATIC_PRINT_CONFIG_CACHE(SLAMaterialConfig)
|
STATIC_PRINT_CONFIG_CACHE(SLAMaterialConfig)
|
||||||
public:
|
public:
|
||||||
ConfigOptionFloat initial_layer_height;
|
ConfigOptionFloat initial_layer_height;
|
||||||
ConfigOptionFloat exposure_time_min;
|
|
||||||
ConfigOptionFloat exposure_time_max;
|
|
||||||
ConfigOptionFloat exposure_time;
|
ConfigOptionFloat exposure_time;
|
||||||
ConfigOptionFloat initial_exposure_time_min;
|
|
||||||
ConfigOptionFloat initial_exposure_time_max;
|
|
||||||
ConfigOptionFloat initial_exposure_time;
|
ConfigOptionFloat initial_exposure_time;
|
||||||
ConfigOptionFloats material_correction;
|
ConfigOptionFloats material_correction;
|
||||||
protected:
|
protected:
|
||||||
void initialize(StaticCacheBase &cache, const char *base_ptr)
|
void initialize(StaticCacheBase &cache, const char *base_ptr)
|
||||||
{
|
{
|
||||||
OPT_PTR(initial_layer_height);
|
OPT_PTR(initial_layer_height);
|
||||||
OPT_PTR(exposure_time_min);
|
|
||||||
OPT_PTR(exposure_time_max);
|
|
||||||
OPT_PTR(exposure_time);
|
OPT_PTR(exposure_time);
|
||||||
OPT_PTR(initial_exposure_time_min);
|
|
||||||
OPT_PTR(initial_exposure_time_max);
|
|
||||||
OPT_PTR(initial_exposure_time);
|
OPT_PTR(initial_exposure_time);
|
||||||
OPT_PTR(material_correction);
|
OPT_PTR(material_correction);
|
||||||
}
|
}
|
||||||
|
@ -1139,6 +1131,10 @@ public:
|
||||||
ConfigOptionFloat fast_tilt_time;
|
ConfigOptionFloat fast_tilt_time;
|
||||||
ConfigOptionFloat slow_tilt_time;
|
ConfigOptionFloat slow_tilt_time;
|
||||||
ConfigOptionFloat area_fill;
|
ConfigOptionFloat area_fill;
|
||||||
|
ConfigOptionFloat min_exposure_time;
|
||||||
|
ConfigOptionFloat max_exposure_time;
|
||||||
|
ConfigOptionFloat min_initial_exposure_time;
|
||||||
|
ConfigOptionFloat max_initial_exposure_time;
|
||||||
protected:
|
protected:
|
||||||
void initialize(StaticCacheBase &cache, const char *base_ptr)
|
void initialize(StaticCacheBase &cache, const char *base_ptr)
|
||||||
{
|
{
|
||||||
|
@ -1158,6 +1154,10 @@ protected:
|
||||||
OPT_PTR(fast_tilt_time);
|
OPT_PTR(fast_tilt_time);
|
||||||
OPT_PTR(slow_tilt_time);
|
OPT_PTR(slow_tilt_time);
|
||||||
OPT_PTR(area_fill);
|
OPT_PTR(area_fill);
|
||||||
|
OPT_PTR(min_exposure_time);
|
||||||
|
OPT_PTR(max_exposure_time);
|
||||||
|
OPT_PTR(min_initial_exposure_time);
|
||||||
|
OPT_PTR(max_initial_exposure_time);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -692,19 +692,19 @@ std::string SLAPrint::validate() const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
double expt_max = m_material_config.exposure_time_max.getFloat();
|
double expt_max = m_printer_config.max_exposure_time.getFloat();
|
||||||
double expt_min = m_material_config.exposure_time_min.getFloat();
|
double expt_min = m_printer_config.min_exposure_time.getFloat();
|
||||||
double expt_cur = m_material_config.exposure_time.getFloat();
|
double expt_cur = m_material_config.exposure_time.getFloat();
|
||||||
|
|
||||||
if (expt_cur < expt_min || expt_cur > expt_max)
|
if (expt_cur < expt_min || expt_cur > expt_max)
|
||||||
return L("Exposition time is out of predefined bounds.");
|
return L("Exposition time is out of printer profile bounds.");
|
||||||
|
|
||||||
double iexpt_max = m_material_config.initial_exposure_time_max.getFloat();
|
double iexpt_max = m_printer_config.max_initial_exposure_time.getFloat();
|
||||||
double iexpt_min = m_material_config.initial_exposure_time_min.getFloat();
|
double iexpt_min = m_printer_config.min_initial_exposure_time.getFloat();
|
||||||
double iexpt_cur = m_material_config.initial_exposure_time.getFloat();
|
double iexpt_cur = m_material_config.initial_exposure_time.getFloat();
|
||||||
|
|
||||||
if (iexpt_cur < iexpt_min || iexpt_cur > iexpt_max)
|
if (iexpt_cur < iexpt_min || iexpt_cur > iexpt_max)
|
||||||
return L("Initial exposition time is out of predefined bounds.");
|
return L("Initial exposition time is out of printer profile bounds.");
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
@ -1600,11 +1600,11 @@ bool SLAPrint::invalidate_state_by_config_options(const std::vector<t_config_opt
|
||||||
// Cache the plenty of parameters, which influence the final rasterization only,
|
// Cache the plenty of parameters, which influence the final rasterization only,
|
||||||
// or they are only notes not influencing the rasterization step.
|
// or they are only notes not influencing the rasterization step.
|
||||||
static std::unordered_set<std::string> steps_rasterize = {
|
static std::unordered_set<std::string> steps_rasterize = {
|
||||||
"exposure_time_min",
|
"min_exposure_time",
|
||||||
"exposure_time_max",
|
"max_exposure_time",
|
||||||
"exposure_time",
|
"exposure_time",
|
||||||
"initial_exposure_time_min",
|
"min_initial_exposure_time",
|
||||||
"initial_exposure_time_max",
|
"max_initial_exposure_time",
|
||||||
"initial_exposure_time",
|
"initial_exposure_time",
|
||||||
"display_width",
|
"display_width",
|
||||||
"display_height",
|
"display_height",
|
||||||
|
|
|
@ -500,8 +500,8 @@ const std::vector<std::string>& Preset::sla_material_options()
|
||||||
if (s_opts.empty()) {
|
if (s_opts.empty()) {
|
||||||
s_opts = {
|
s_opts = {
|
||||||
"initial_layer_height",
|
"initial_layer_height",
|
||||||
"exposure_time_min", "exposure_time_max", "exposure_time",
|
"exposure_time",
|
||||||
"initial_exposure_time_min", "initial_exposure_time_max", "initial_exposure_time",
|
"initial_exposure_time",
|
||||||
"material_correction",
|
"material_correction",
|
||||||
"material_notes",
|
"material_notes",
|
||||||
"default_sla_material_profile",
|
"default_sla_material_profile",
|
||||||
|
@ -527,6 +527,8 @@ const std::vector<std::string>& Preset::sla_printer_options()
|
||||||
"relative_correction",
|
"relative_correction",
|
||||||
"absolute_correction",
|
"absolute_correction",
|
||||||
"gamma_correction",
|
"gamma_correction",
|
||||||
|
"min_exposure_time", "max_exposure_time",
|
||||||
|
"min_initial_exposure_time", "max_initial_exposure_time",
|
||||||
"print_host", "printhost_apikey", "printhost_cafile",
|
"print_host", "printhost_apikey", "printhost_cafile",
|
||||||
"printer_notes",
|
"printer_notes",
|
||||||
"inherits"
|
"inherits"
|
||||||
|
|
|
@ -838,7 +838,7 @@ static wxString support_combo_value_for_config(const DynamicPrintConfig &config,
|
||||||
|
|
||||||
static wxString pad_combo_value_for_config(const DynamicPrintConfig &config)
|
static wxString pad_combo_value_for_config(const DynamicPrintConfig &config)
|
||||||
{
|
{
|
||||||
return config.opt_bool("pad_enable") ? (config.opt_bool("pad_zero_elevation") ? _("Around object") : _("Below object")) : _("None");
|
return config.opt_bool("pad_enable") ? (config.opt_bool("pad_zero_elevation") ? _("Around object") : _("Below object")) : _("None");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tab::on_value_change(const std::string& opt_key, const boost::any& value)
|
void Tab::on_value_change(const std::string& opt_key, const boost::any& value)
|
||||||
|
@ -860,8 +860,8 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value)
|
||||||
(opt_key == "supports_enable" || opt_key == "support_buildplate_only"))
|
(opt_key == "supports_enable" || opt_key == "support_buildplate_only"))
|
||||||
og_freq_chng_params->set_value("support", support_combo_value_for_config(*m_config, is_fff));
|
og_freq_chng_params->set_value("support", support_combo_value_for_config(*m_config, is_fff));
|
||||||
|
|
||||||
if (! is_fff && (opt_key == "pad_enable" || opt_key == "pad_zero_elevation"))
|
if (! is_fff && (opt_key == "pad_enable" || opt_key == "pad_zero_elevation"))
|
||||||
og_freq_chng_params->set_value("pad", pad_combo_value_for_config(*m_config));
|
og_freq_chng_params->set_value("pad", pad_combo_value_for_config(*m_config));
|
||||||
|
|
||||||
if (opt_key == "brim_width")
|
if (opt_key == "brim_width")
|
||||||
{
|
{
|
||||||
|
@ -998,7 +998,7 @@ void Tab::update_frequently_changed_parameters()
|
||||||
|
|
||||||
og_freq_chng_params->set_value("support", support_combo_value_for_config(*m_config, is_fff));
|
og_freq_chng_params->set_value("support", support_combo_value_for_config(*m_config, is_fff));
|
||||||
if (! is_fff)
|
if (! is_fff)
|
||||||
og_freq_chng_params->set_value("pad", pad_combo_value_for_config(*m_config));
|
og_freq_chng_params->set_value("pad", pad_combo_value_for_config(*m_config));
|
||||||
|
|
||||||
const std::string updated_value_key = is_fff ? "fill_density" : "pad_enable";
|
const std::string updated_value_key = is_fff ? "fill_density" : "pad_enable";
|
||||||
|
|
||||||
|
@ -1772,13 +1772,13 @@ void TabFilament::reload_config()
|
||||||
|
|
||||||
void TabFilament::update_volumetric_flow_preset_hints()
|
void TabFilament::update_volumetric_flow_preset_hints()
|
||||||
{
|
{
|
||||||
wxString text;
|
wxString text;
|
||||||
try {
|
try {
|
||||||
text = from_u8(PresetHints::maximum_volumetric_flow_description(*m_preset_bundle));
|
text = from_u8(PresetHints::maximum_volumetric_flow_description(*m_preset_bundle));
|
||||||
} catch (std::exception &ex) {
|
} catch (std::exception &ex) {
|
||||||
text = _(L("Volumetric flow hints not available\n\n")) + from_u8(ex.what());
|
text = _(L("Volumetric flow hints not available\n\n")) + from_u8(ex.what());
|
||||||
}
|
}
|
||||||
m_volumetric_speed_description_line->SetText(text);
|
m_volumetric_speed_description_line->SetText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabFilament::update()
|
void TabFilament::update()
|
||||||
|
@ -1788,9 +1788,9 @@ void TabFilament::update()
|
||||||
|
|
||||||
m_update_cnt++;
|
m_update_cnt++;
|
||||||
|
|
||||||
wxString text = from_u8(PresetHints::cooling_description(m_presets->get_edited_preset()));
|
wxString text = from_u8(PresetHints::cooling_description(m_presets->get_edited_preset()));
|
||||||
m_cooling_description_line->SetText(text);
|
m_cooling_description_line->SetText(text);
|
||||||
this->update_volumetric_flow_preset_hints();
|
this->update_volumetric_flow_preset_hints();
|
||||||
Layout();
|
Layout();
|
||||||
|
|
||||||
bool cooling = m_config->opt_bool("cooling", 0);
|
bool cooling = m_config->opt_bool("cooling", 0);
|
||||||
|
@ -1812,8 +1812,8 @@ void TabFilament::update()
|
||||||
|
|
||||||
void TabFilament::OnActivate()
|
void TabFilament::OnActivate()
|
||||||
{
|
{
|
||||||
this->update_volumetric_flow_preset_hints();
|
this->update_volumetric_flow_preset_hints();
|
||||||
Tab::OnActivate();
|
Tab::OnActivate();
|
||||||
}
|
}
|
||||||
|
|
||||||
wxSizer* Tab::description_line_widget(wxWindow* parent, ogStaticText* *StaticText)
|
wxSizer* Tab::description_line_widget(wxWindow* parent, ogStaticText* *StaticText)
|
||||||
|
@ -2290,6 +2290,12 @@ void TabPrinter::build_sla()
|
||||||
optgroup->append_single_option_line("absolute_correction");
|
optgroup->append_single_option_line("absolute_correction");
|
||||||
optgroup->append_single_option_line("gamma_correction");
|
optgroup->append_single_option_line("gamma_correction");
|
||||||
|
|
||||||
|
optgroup = page->new_optgroup(_(L("Exposure")));
|
||||||
|
optgroup->append_single_option_line("min_exposure_time");
|
||||||
|
optgroup->append_single_option_line("max_exposure_time");
|
||||||
|
optgroup->append_single_option_line("min_initial_exposure_time");
|
||||||
|
optgroup->append_single_option_line("max_initial_exposure_time");
|
||||||
|
|
||||||
optgroup = page->new_optgroup(_(L("Print Host upload")));
|
optgroup = page->new_optgroup(_(L("Print Host upload")));
|
||||||
build_printhost(optgroup.get());
|
build_printhost(optgroup.get());
|
||||||
|
|
||||||
|
@ -2560,7 +2566,7 @@ void TabPrinter::build_unregular_pages()
|
||||||
optgroup = page->new_optgroup(_(L("Preview")));
|
optgroup = page->new_optgroup(_(L("Preview")));
|
||||||
|
|
||||||
auto reset_to_filament_color = [this, extruder_idx](wxWindow* parent) {
|
auto reset_to_filament_color = [this, extruder_idx](wxWindow* parent) {
|
||||||
add_scaled_button(parent, &m_reset_to_filament_color, "undo",
|
add_scaled_button(parent, &m_reset_to_filament_color, "undo",
|
||||||
_(L("Reset to Filament Color")), wxBU_LEFT | wxBU_EXACTFIT);
|
_(L("Reset to Filament Color")), wxBU_LEFT | wxBU_EXACTFIT);
|
||||||
ScalableButton* btn = m_reset_to_filament_color;
|
ScalableButton* btn = m_reset_to_filament_color;
|
||||||
btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
|
||||||
|
@ -2571,7 +2577,7 @@ void TabPrinter::build_unregular_pages()
|
||||||
{
|
{
|
||||||
std::vector<std::string> colors = static_cast<const ConfigOptionStrings*>(m_config->option("extruder_colour"))->values;
|
std::vector<std::string> colors = static_cast<const ConfigOptionStrings*>(m_config->option("extruder_colour"))->values;
|
||||||
colors[extruder_idx] = "";
|
colors[extruder_idx] = "";
|
||||||
|
|
||||||
DynamicPrintConfig new_conf = *m_config;
|
DynamicPrintConfig new_conf = *m_config;
|
||||||
new_conf.set_key_value("extruder_colour", new ConfigOptionStrings(colors));
|
new_conf.set_key_value("extruder_colour", new ConfigOptionStrings(colors));
|
||||||
load_config(new_conf);
|
load_config(new_conf);
|
||||||
|
@ -3614,11 +3620,7 @@ void TabSLAMaterial::build()
|
||||||
optgroup->append_single_option_line("initial_layer_height");
|
optgroup->append_single_option_line("initial_layer_height");
|
||||||
|
|
||||||
optgroup = page->new_optgroup(_(L("Exposure")));
|
optgroup = page->new_optgroup(_(L("Exposure")));
|
||||||
optgroup->append_single_option_line("exposure_time_min");
|
|
||||||
optgroup->append_single_option_line("exposure_time_max");
|
|
||||||
optgroup->append_single_option_line("exposure_time");
|
optgroup->append_single_option_line("exposure_time");
|
||||||
optgroup->append_single_option_line("initial_exposure_time_min");
|
|
||||||
optgroup->append_single_option_line("initial_exposure_time_max");
|
|
||||||
optgroup->append_single_option_line("initial_exposure_time");
|
optgroup->append_single_option_line("initial_exposure_time");
|
||||||
|
|
||||||
optgroup = page->new_optgroup(_(L("Corrections")));
|
optgroup = page->new_optgroup(_(L("Corrections")));
|
||||||
|
@ -3683,59 +3685,11 @@ void TabSLAMaterial::reload_config()
|
||||||
Tab::reload_config();
|
Tab::reload_config();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
|
|
||||||
enum e_cmp {EQUAL = 1, SMALLER = 2, GREATER = 4, SMALLER_EQ = 3, GREATER_EQ = 5};
|
|
||||||
|
|
||||||
void bound_check(Tab &tb, e_cmp cmp, const char *id, const char *boundid)
|
|
||||||
{
|
|
||||||
double bound = tb.m_config->opt_float(boundid);
|
|
||||||
double value = tb.m_config->opt_float(id);
|
|
||||||
|
|
||||||
auto boundlabel = tb.m_config->def()->get(boundid)->label;
|
|
||||||
auto valuelabel = tb.m_config->def()->get(id)->label;
|
|
||||||
|
|
||||||
double ddiff = value - bound;
|
|
||||||
int diff = ddiff < 0 ? SMALLER : (std::abs(ddiff) < EPSILON ? EQUAL : GREATER);
|
|
||||||
|
|
||||||
if ((cmp | diff) != cmp) {
|
|
||||||
wxString fmt;
|
|
||||||
|
|
||||||
switch (cmp) {
|
|
||||||
case EQUAL: fmt = _(L("%s should be equal to %s")); break;
|
|
||||||
case SMALLER: fmt = _(L("%s should be smaller than %s")); break;
|
|
||||||
case GREATER: fmt = _(L("%s should be greater than %s")); break;
|
|
||||||
case SMALLER_EQ: fmt = _(L("%s should be smaller or equal to %s")); break;
|
|
||||||
case GREATER_EQ: fmt = _(L("%s should be greater or equal to %s")); break;
|
|
||||||
}
|
|
||||||
|
|
||||||
wxString msg_text = wxString::Format(fmt, valuelabel, boundlabel);
|
|
||||||
|
|
||||||
wxMessageDialog dialog(tb.parent(), msg_text,
|
|
||||||
_(L("Value outside bounds")),
|
|
||||||
wxICON_WARNING | wxOK);
|
|
||||||
|
|
||||||
DynamicPrintConfig new_conf = *tb.m_config;
|
|
||||||
if (dialog.ShowModal() == wxID_OK)
|
|
||||||
new_conf.set_key_value(id, new ConfigOptionFloat(bound));
|
|
||||||
|
|
||||||
tb.load_config(new_conf);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void TabSLAMaterial::update()
|
void TabSLAMaterial::update()
|
||||||
{
|
{
|
||||||
if (m_preset_bundle->printers.get_selected_preset().printer_technology() == ptFFF)
|
if (m_preset_bundle->printers.get_selected_preset().printer_technology() == ptFFF)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bound_check(*this, e_cmp::GREATER_EQ, "exposure_time", "exposure_time_min");
|
|
||||||
bound_check(*this, e_cmp::SMALLER_EQ, "exposure_time", "exposure_time_max");
|
|
||||||
bound_check(*this, e_cmp::GREATER_EQ, "initial_exposure_time", "initial_exposure_time_min");
|
|
||||||
bound_check(*this, e_cmp::SMALLER_EQ, "initial_exposure_time", "initial_exposure_time_max");
|
|
||||||
|
|
||||||
// #ys_FIXME. Just a template for this function
|
// #ys_FIXME. Just a template for this function
|
||||||
// m_update_cnt++;
|
// m_update_cnt++;
|
||||||
// ! something to update
|
// ! something to update
|
||||||
|
|
Loading…
Reference in a new issue