mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-16 02:16:04 +08:00
fix bad initialization of extruder sized vector settings.
supermerill/SuperSlicer#1938
This commit is contained in:
parent
5d622f6319
commit
0c6cac7aac
@ -413,8 +413,9 @@ public:
|
||||
virtual bool is_nil(size_t idx) const = 0;
|
||||
// Get if the size of this vector is/should be the same as nozzle_diameter
|
||||
bool is_extruder_size() const { return (flags & FCO_EXTRUDER_ARRAY) != 0; }
|
||||
void set_is_extruder_size(bool is_extruder_size) {
|
||||
ConfigOptionVectorBase* set_is_extruder_size(bool is_extruder_size) {
|
||||
if (is_extruder_size) this->flags |= FCO_EXTRUDER_ARRAY; else this->flags &= uint8_t(0xFF ^ FCO_EXTRUDER_ARRAY);
|
||||
return this;
|
||||
}
|
||||
virtual double getFloat(int idx) const { throw BadOptionTypeException("Calling ConfigOption::getFloat(idx) on a non-numeric arrray ConfigOptionVectorBase"); }
|
||||
|
||||
@ -808,6 +809,7 @@ class ConfigOptionIntsTempl : public ConfigOptionVector<int32_t>
|
||||
{
|
||||
public:
|
||||
ConfigOptionIntsTempl() : ConfigOptionVector<int32_t>() {}
|
||||
explicit ConfigOptionIntsTempl(int32_t default_value) : ConfigOptionVector<int32_t>(default_value) {}
|
||||
explicit ConfigOptionIntsTempl(size_t n, int32_t value) : ConfigOptionVector<int32_t>(n, value) {}
|
||||
explicit ConfigOptionIntsTempl(std::initializer_list<int32_t> il) : ConfigOptionVector<int32_t>(std::move(il)) {}
|
||||
|
||||
@ -1000,10 +1002,11 @@ class ConfigOptionPercentsTempl : public ConfigOptionFloatsTempl<NULLABLE>
|
||||
{
|
||||
public:
|
||||
ConfigOptionPercentsTempl() : ConfigOptionFloatsTempl<NULLABLE>() {}
|
||||
explicit ConfigOptionPercentsTempl(double default_value) : ConfigOptionFloatsTempl<NULLABLE>(default_value) {}
|
||||
explicit ConfigOptionPercentsTempl(size_t n, double value) : ConfigOptionFloatsTempl<NULLABLE>(n, value) {}
|
||||
explicit ConfigOptionPercentsTempl(std::initializer_list<double> il) : ConfigOptionFloatsTempl<NULLABLE>(std::move(il)) {}
|
||||
explicit ConfigOptionPercentsTempl(const std::vector<double>& vec) : ConfigOptionFloatsTempl<NULLABLE>(vec) {}
|
||||
explicit ConfigOptionPercentsTempl(std::vector<double>&& vec) : ConfigOptionFloatsTempl<NULLABLE>(std::move(vec)) {}
|
||||
explicit ConfigOptionPercentsTempl(const std::vector<double>& vec) : ConfigOptionFloatsTempl<NULLABLE>(vec) {}
|
||||
explicit ConfigOptionPercentsTempl(std::vector<double>&& vec) : ConfigOptionFloatsTempl<NULLABLE>(std::move(vec)) {}
|
||||
|
||||
static ConfigOptionType static_type() { return coPercents; }
|
||||
ConfigOptionType type() const override { return static_type(); }
|
||||
@ -1134,6 +1137,7 @@ class ConfigOptionFloatsOrPercentsTempl : public ConfigOptionVector<FloatOrPerce
|
||||
{
|
||||
public:
|
||||
ConfigOptionFloatsOrPercentsTempl() : ConfigOptionVector<FloatOrPercent>() {}
|
||||
explicit ConfigOptionFloatsOrPercentsTempl(FloatOrPercent default_value) : ConfigOptionVector<FloatOrPercent>(default_value) {}
|
||||
explicit ConfigOptionFloatsOrPercentsTempl(size_t n, FloatOrPercent value) : ConfigOptionVector<FloatOrPercent>(n, value) {}
|
||||
explicit ConfigOptionFloatsOrPercentsTempl(std::initializer_list<FloatOrPercent> il) : ConfigOptionVector<FloatOrPercent>(std::move(il)) {}
|
||||
explicit ConfigOptionFloatsOrPercentsTempl(const std::vector<FloatOrPercent> &vec) : ConfigOptionVector<FloatOrPercent>(vec) {}
|
||||
|
@ -1408,9 +1408,9 @@ void PageDiameters::apply_custom_config(DynamicPrintConfig &config)
|
||||
{
|
||||
|
||||
auto *opt_nozzle = new ConfigOptionFloats(1, spin_nozzle->GetValue());
|
||||
config.set_key_value("nozzle_diameter", opt_nozzle);
|
||||
config.set_key_value("nozzle_diameter", opt_nozzle->set_is_extruder_size(true));
|
||||
auto *opt_filam = new ConfigOptionFloats(1, spin_filam->GetValue());
|
||||
config.set_key_value("filament_diameter", opt_filam);
|
||||
config.set_key_value("filament_diameter", opt_filam->set_is_extruder_size(true));
|
||||
|
||||
config.set_key_value("extrusion_width", new ConfigOptionFloatOrPercent(105, true));
|
||||
config.set_key_value("first_layer_extrusion_width", new ConfigOptionFloatOrPercent(140, true));
|
||||
@ -1487,13 +1487,13 @@ PageTemperatures::PageTemperatures(ConfigWizard *parent)
|
||||
void PageTemperatures::apply_custom_config(DynamicPrintConfig &config)
|
||||
{
|
||||
auto *opt_extr = new ConfigOptionInts(1, spin_extr->GetValue());
|
||||
config.set_key_value("temperature", opt_extr);
|
||||
config.set_key_value("temperature", opt_extr->set_is_extruder_size(true));
|
||||
auto *opt_extr1st = new ConfigOptionInts(1, spin_extr->GetValue());
|
||||
config.set_key_value("first_layer_temperature", opt_extr1st);
|
||||
config.set_key_value("first_layer_temperature", opt_extr1st->set_is_extruder_size(true));
|
||||
auto *opt_bed = new ConfigOptionInts(1, spin_bed->GetValue());
|
||||
config.set_key_value("bed_temperature", opt_bed);
|
||||
config.set_key_value("bed_temperature", opt_bed->set_is_extruder_size(true));
|
||||
auto *opt_bed1st = new ConfigOptionInts(1, spin_bed->GetValue());
|
||||
config.set_key_value("first_layer_bed_temperature", opt_bed1st);
|
||||
config.set_key_value("first_layer_bed_temperature", opt_bed1st->set_is_extruder_size(true));
|
||||
}
|
||||
|
||||
|
||||
|
@ -1686,7 +1686,7 @@ bool Tab::create_pages(std::string setting_type_name, int idx_page)
|
||||
for (size_t i = 1; i < nozzle_diameters.size(); i++)
|
||||
nozzle_diameters[i] = frst_diam;
|
||||
|
||||
new_conf.set_key_value("nozzle_diameter", new ConfigOptionFloats(nozzle_diameters));
|
||||
new_conf.set_key_value("nozzle_diameter", (new ConfigOptionFloats(nozzle_diameters))->set_is_extruder_size(true));
|
||||
} else
|
||||
new_conf.set_key_value("single_extruder_multi_material", new ConfigOptionBool(false));
|
||||
|
||||
@ -2147,7 +2147,7 @@ bool Tab::create_pages(std::string setting_type_name, int idx_page)
|
||||
} else
|
||||
nozzle_diameters[idx_page] = nozzle_diameters[idx_page == 0 ? 1 : 0];
|
||||
|
||||
new_conf.set_key_value("nozzle_diameter", new ConfigOptionFloats(nozzle_diameters));
|
||||
new_conf.set_key_value("nozzle_diameter", (new ConfigOptionFloats(nozzle_diameters))->set_is_extruder_size(true));
|
||||
load_config(new_conf);
|
||||
}
|
||||
}
|
||||
@ -2172,7 +2172,7 @@ bool Tab::create_pages(std::string setting_type_name, int idx_page)
|
||||
colors[idx_page] = "";
|
||||
|
||||
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))->set_is_extruder_size(true));
|
||||
load_config(new_conf);
|
||||
|
||||
update_dirty();
|
||||
@ -3066,7 +3066,7 @@ void TabPrinter::toggle_options()
|
||||
}
|
||||
field = get_field("time_estimation_compensation");
|
||||
if (field) field->toggle(machine_limits_usage->value <= MachineLimitsUsage::TimeEstimateOnly);
|
||||
update_machine_limits_description(machine_limits_usage->value);
|
||||
update_machine_limits_description(machine_limits_usage->value);
|
||||
}
|
||||
|
||||
//z step checks
|
||||
|
Loading…
x
Reference in New Issue
Block a user