diff --git a/src/libslic3r/Format/SL1.cpp b/src/libslic3r/Format/SL1.cpp index 3f2cb1da71..0201aa20be 100644 --- a/src/libslic3r/Format/SL1.cpp +++ b/src/libslic3r/Format/SL1.cpp @@ -76,7 +76,8 @@ std::string to_json(const SLAPrint& print, const ConfMap &m) pt::ptree below_node; pt::ptree above_node; - const t_config_enum_names& enum_names = ConfigOptionEnum::get_enum_names(); + const t_config_enum_names& tilt_enum_names = ConfigOptionEnum::get_enum_names(); + const t_config_enum_names& tower_enum_names = ConfigOptionEnum::get_enum_names(); for (const std::string& opt_key : tilt_options()) { const ConfigOption* opt = cfg.option(opt_key); @@ -104,6 +105,7 @@ std::string to_json(const SLAPrint& print, const ConfMap &m) } break; case coEnums: { + const t_config_enum_names& enum_names = opt_key == "tower_profile" ? tower_enum_names : tilt_enum_names; auto values = static_cast*>(opt); below_node.put(opt_key, enum_names[values->get_at(0)]); above_node.put(opt_key, enum_names[values->get_at(1)]); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 65c8188984..bbef0e84e0 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -255,18 +255,36 @@ static t_config_enum_values s_keys_map_PerimeterGeneratorType { }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PerimeterGeneratorType) +static const t_config_enum_values s_keys_map_TowerProfiles{ + { "layer1", tpLayer1 }, + { "layer2", tpLayer2 }, + { "layer3", tpLayer3 }, + { "layer4", tpLayer4 }, + { "layer5", tpLayer5 }, + { "layer8", tpLayer8 }, + { "layer11", tpLayer11 }, + { "layer14", tpLayer14 }, + { "layer18", tpLayer18 }, + { "layer22", tpLayer22 }, + { "layer24", tpLayer24 }, +}; +CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(TowerProfiles) + static const t_config_enum_values s_keys_map_TiltProfiles{ - { "homingFast", tpHomingFast, }, - { "homingSlow", tpHomingSlow, }, - { "moveFast", tpMoveFast, }, - { "moveSlow", tpMoveSlow, }, - { "layer", tpLayer, }, - { "layerMove", tpLayerMove, }, - { "superSlow", tpSuperSlow, }, - { "resinSensor", tpResinSensor, }, - { "layerMoveSlow", tpLayerMoveSlow,}, - { "layerRelease", tpLayerRelease, }, - { "layerMoveFast", tpLayerMoveFast } + { "move120", tpMove120 }, + { "layer200", tpLayer200 }, + { "move300", tpMove300 }, + { "layer400", tpLayer400 }, + { "layer600", tpLayer600 }, + { "layer800", tpLayer800 }, + { "layer1000", tpLayer1000 }, + { "layer1250", tpLayer1250 }, + { "layer1500", tpLayer1500 }, + { "layer1750", tpLayer1750 }, + { "layer2000", tpLayer2000 }, + { "layer2250", tpLayer2250 }, + { "move5120", tpMove5120 }, + { "move8000", tpMove8000 }, }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(TiltProfiles) @@ -3890,7 +3908,7 @@ void PrintConfigDef::init_sla_params() def->sidetext = L("%"); def->min = 0; def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(50.)); + def->set_default_value(new ConfigOptionFloat(35.)); def = this->add("relative_correction", coFloats); def->label = L("Printer scaling correction"); @@ -4435,86 +4453,74 @@ void PrintConfigDef::init_sla_tilt_params() def->mode = comExpert; def->set_default_value(new ConfigOptionInts({ 0, 0})); - //ysFIXME def = this->add("tower_profile", coEnums); def->full_label = L("Tower profile"); def->tooltip = L("Tower profile used for tower raise."); def->mode = comExpert; - def->set_enum({ - { "homingFast", L("Homing Fast"), }, - { "homingSlow", L("Homing Slow"), }, - { "moveFast", L("Move Fast"), }, - { "moveSlow", L("Move Slow"), }, - { "layer", L("Layer"), }, - { "layerMove", L("Layer Move"), }, - { "superSlow", L("Super Slow"), }, - { "resinSensor", L("Resin Sensor"), }, + def->sidetext = L("mm/s"); + def->set_enum({ + { "layer1", "1" }, + { "layer2", "2" }, + { "layer3", "3" }, + { "layer4", "4" }, + { "layer5", "5" }, + { "layer8", "8" }, + { "layer11", "11" }, + { "layer14", "14" }, + { "layer18", "18" }, + { "layer22", "22" }, + { "layer24", "24" }, }); - def->set_default_value(new ConfigOptionEnums({ tpLayer, tpLayer })); + def->set_default_value(new ConfigOptionEnums({ tpLayer22, tpLayer22 })); + + const std::initializer_list> tilt_profiles_il = { + { "move120", "120" }, + { "layer200", "200" }, + { "move300", "300" }, + { "layer400", "400" }, + { "layer600", "600" }, + { "layer800", "800" }, + { "layer1000", "1000" }, + { "layer1250", "1250" }, + { "layer1500", "1500" }, + { "layer1750", "1750" }, + { "layer2000", "2000" }, + { "layer2250", "2250" }, + { "move5120", "5120" }, + { "move8000", "8000" }, + }; def = this->add("tilt_down_initial_profile", coEnums); def->full_label = L("Tilt down initial profile"); def->tooltip = L("Tilt profile used for an initial portion of tilt down move."); def->mode = comExpert; - def->set_enum({ - { "homingFast", L("Homing Fast"), }, - { "homingSlow", L("Homing Slow"), }, - { "moveFast", L("Move Fast"), }, - { "moveSlow", L("Move Slow"), }, - { "layerMoveSlow", L("Layer Move Slow"),}, - { "layerRelease", L("Layer Release"), }, - { "layerMoveFast", L("Layer Move Fast") }, - { "superSlow", L("Super Slow"), }, - }); - def->set_default_value(new ConfigOptionEnums({ tpLayerMoveFast, tpLayerMoveFast })); + def->sidetext = L("μ-steps/s"); + def->set_enum(tilt_profiles_il); + def->set_default_value(new ConfigOptionEnums({ tpLayer1750, tpLayer1750 })); def = this->add("tilt_down_finish_profile", coEnums); def->full_label = L("Tilt down finish profile"); def->tooltip = L("Tilt profile used for the rest of the tilt down move."); def->mode = comExpert; - def->set_enum({ - { "homingFast", L("Homing Fast"), }, - { "homingSlow", L("Homing Slow"), }, - { "moveFast", L("Move Fast"), }, - { "moveSlow", L("Move Slow"), }, - { "layerMoveSlow", L("Layer Move Slow"),}, - { "layerRelease", L("Layer Release"), }, - { "layerMoveFast", L("Layer Move Fast") }, - { "superSlow", L("Super Slow"), }, - }); - def->set_default_value(new ConfigOptionEnums({ tpLayerMoveSlow, tpLayerMoveSlow })); + def->sidetext = L("μ-steps/s"); + def->set_enum(tilt_profiles_il); + def->set_default_value(new ConfigOptionEnums({ tpLayer1750, tpLayer1750 })); def = this->add("tilt_up_initial_profile", coEnums); def->full_label = L("Tilt up initial profile"); def->tooltip = L("Tilt profile used for an initial portion of tilt up move."); def->mode = comExpert; - def->set_enum({ - { "homingFast", L("Homing Fast"), }, - { "homingSlow", L("Homing Slow"), }, - { "moveFast", L("Move Fast"), }, - { "moveSlow", L("Move Slow"), }, - { "layerMoveSlow", L("Layer Move Slow"),}, - { "layerRelease", L("Layer Release"), }, - { "layerMoveFast", L("Layer Move Fast") }, - { "superSlow", L("Super Slow"), }, - }); - def->set_default_value(new ConfigOptionEnums({ tpMoveFast, tpMoveFast })); + def->sidetext = L("μ-steps/s"); + def->set_enum(tilt_profiles_il); + def->set_default_value(new ConfigOptionEnums({ tpMove8000, tpMove8000 })); def = this->add("tilt_up_finish_profile", coEnums); def->full_label = L("Tilt up finish profile"); def->tooltip = L("Tilt profile used for the rest of the tilt-up."); def->mode = comExpert; - def->set_enum({ - { "homingFast", L("Homing Fast"), }, - { "homingSlow", L("Homing Slow"), }, - { "moveFast", L("Move Fast"), }, - { "moveSlow", L("Move Slow"), }, - { "layerMoveSlow", L("Layer Move Slow"),}, - { "layerRelease", L("Layer Release"), }, - { "layerMoveFast", L("Layer Move Fast") }, - { "superSlow", L("Super Slow"), }, - }); - def->set_default_value(new ConfigOptionEnums({ tpLayerMoveFast, tpLayerMoveFast })); + def->sidetext = L("μ-steps/s"); + def->set_enum(tilt_profiles_il); + def->set_default_value(new ConfigOptionEnums({ tpLayer1750, tpLayer1750 })); def = this->add("use_tilt", coBools); def->full_label = L("Use tilt"); @@ -4592,16 +4598,6 @@ void PrintConfigDef::init_sla_tilt_params() def->mode = comExpert; def->set_default_value(new ConfigOptionFloats({ 0., 0. })); - def = this->add("moves_time_ms", coFloats); - def->full_label = L("Moves time"); - def->tooltip = L("Measured time of this layer separation procedure. This parameter will " - "be deprecated and tilt times will be automatically calculated."); - def->sidetext = L("s"); - def->min = 0; - def->max = 60; - def->mode = comExpert; - def->set_default_value(new ConfigOptionFloats({ 4.5, 4.5 })); - } @@ -4897,23 +4893,21 @@ static std::vector s_Preset_sla_tilt_options{ ,"tilt_up_finish_profile" ,"tilt_up_cycles" ,"tilt_up_delay_ms" - ,"moves_time_ms" }; const std::vector& tilt_options() { return s_Preset_sla_tilt_options; } // Default values containe option pair of values (Below and Above) for each titl modes -// (Slow, Fast, HighViscosity and NoTilt) +// (Slow, Fast, HighViscosity and NoTilt) -> used for SL1S and other vendors printers const std::map tilt_options_floats_defs = { {"delay_before_exposure_ms", ConfigOptionFloats({ 3., 3., 0., 1., 3.5, 3.5, 0., 0. }) } , {"delay_after_exposure_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , {"tilt_down_offset_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , - {"tilt_down_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0.5, 0., 0., 0., 0. }) } , {"tilt_up_offset_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , {"tilt_up_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , - {"moves_time_ms", ConfigOptionFloats({ 4.5, 4.5, 2.1, 4.3, 14.25, 14.25, 0., 0. }) } , }; const std::map tilt_options_ints_defs = @@ -4930,13 +4924,58 @@ const std::map tilt_options_bools_defs = {"use_tilt", ConfigOptionBools({ true, true, true, true, true, true, false, false })} , }; +const std::map> tower_tilt_options_enums_defs = +{ + {"tower_profile", ConfigOptionEnums({ tpLayer22, tpLayer22, tpLayer22, tpLayer22, tpLayer2, tpLayer2, tpLayer1, tpLayer1 })} , +}; + const std::map> tilt_options_enums_defs = { - {"tower_profile", ConfigOptionEnums({ tpLayer, tpLayer, tpLayer, tpLayer, tpSuperSlow, tpSuperSlow, tpLayer, tpLayer })} , - {"tilt_down_initial_profile", ConfigOptionEnums({ tpLayerMoveFast, tpLayerMoveFast, tpLayerMoveFast, tpLayerMoveFast, tpSuperSlow, tpSuperSlow, tpHomingSlow, tpHomingSlow }) } , - {"tilt_down_finish_profile", ConfigOptionEnums({ tpLayerMoveSlow, tpLayerMoveSlow, tpMoveFast, tpLayerMoveSlow, tpLayerMoveSlow, tpLayerMoveSlow, tpHomingSlow, tpHomingSlow }) } , - {"tilt_up_initial_profile", ConfigOptionEnums({ tpMoveFast, tpMoveFast, tpMoveFast, tpMoveFast, tpLayerMoveSlow, tpLayerMoveSlow, tpHomingSlow, tpHomingSlow }) } , - {"tilt_up_finish_profile", ConfigOptionEnums({ tpLayerMoveFast, tpLayerMoveFast, tpLayerMoveFast, tpLayerMoveFast, tpSuperSlow, tpSuperSlow, tpHomingSlow, tpHomingSlow }) } , + {"tilt_down_initial_profile", ConfigOptionEnums({ tpLayer1750, tpLayer1750, tpLayer1750, tpLayer1750, tpLayer800, tpLayer800, tpMove120, tpMove120 }) } , + {"tilt_down_finish_profile", ConfigOptionEnums({ tpLayer1750, tpLayer1750, tpMove8000, tpLayer1750, tpLayer1750, tpLayer1750, tpMove120, tpMove120 }) } , + {"tilt_up_initial_profile", ConfigOptionEnums({ tpMove8000, tpMove8000, tpMove8000, tpMove8000, tpLayer1750, tpLayer1750, tpMove120, tpMove120 }) } , + {"tilt_up_finish_profile", ConfigOptionEnums({ tpLayer1750, tpLayer1750, tpLayer1750, tpLayer1750, tpLayer800, tpLayer800, tpMove120, tpMove120 }) } , +}; + +// Default values containe option pair of values (Below and Above) for each titl modes +// (Slow, Fast, HighViscosity and NoTilt) -> used for SL1 printer + +const std::map tilt_options_floats_sl1_defs = +{ + {"delay_before_exposure_ms", ConfigOptionFloats({ 3., 3., 0., 1., 3.5, 3.5, 0., 0. }) } , + {"delay_after_exposure_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_offset_delay_ms", ConfigOptionFloats({ 1., 1., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_down_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , + {"tilt_up_offset_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 1., 1., 0., 0. }) } , + {"tilt_up_delay_ms", ConfigOptionFloats({ 0., 0., 0., 0., 0., 0., 0., 0. }) } , +}; + +const std::map tilt_options_ints_sl1_defs = +{ + {"tower_hop_height_nm", ConfigOptionInts({ 0, 0, 0, 0, 5, 5, 0, 0 }) } , + {"tilt_down_offset_steps", ConfigOptionInts({ 650, 650, 0, 0, 2200, 2200, 0, 0 }) } , + {"tilt_down_cycles", ConfigOptionInts({ 1, 1, 1, 1, 1, 1, 0, 0 }) } , + {"tilt_up_offset_steps", ConfigOptionInts({ 400, 400, 400, 400, 2200, 2200, 0, 0 }) } , + {"tilt_up_cycles", ConfigOptionInts({ 1, 1, 1, 1, 1, 1, 0, 0 }) } , +}; + +const std::map tilt_options_bools_sl1_defs = +{ + {"use_tilt", ConfigOptionBools({ true, true, true, true, true, true, false, false })} , +}; + + +const std::map> tower_tilt_options_enums_sl1_defs = +{ + {"tower_profile", ConfigOptionEnums({ tpLayer22, tpLayer22, tpLayer22, tpLayer22, tpLayer2, tpLayer2, tpLayer1, tpLayer1 })} , +}; + +const std::map> tilt_options_enums_sl1_defs = +{ + {"tilt_down_initial_profile", ConfigOptionEnums({ tpLayer400, tpLayer400, tpLayer400, tpLayer400, tpLayer600, tpLayer600, tpMove120, tpMove120 }) } , + {"tilt_down_finish_profile", ConfigOptionEnums({ tpLayer1500, tpLayer1500, tpLayer1750, tpLayer1500, tpLayer1500, tpLayer1500, tpMove120, tpMove120 }) } , + {"tilt_up_initial_profile", ConfigOptionEnums({ tpMove5120, tpMove5120, tpMove5120, tpMove5120, tpLayer1500, tpLayer1500, tpMove120, tpMove120 }) } , + {"tilt_up_finish_profile", ConfigOptionEnums({ tpLayer400, tpLayer400, tpLayer400, tpLayer400, tpLayer600, tpLayer600, tpMove120, tpMove120 }) } , }; void handle_legacy_sla(DynamicPrintConfig &config) @@ -4967,33 +5006,49 @@ void handle_legacy_sla(DynamicPrintConfig &config) ) { int tilt_mode = config.option("material_print_speed")->getInt(); + const bool is_sl1_model = config.opt_string("printer_model") != "SL1"; + + const std::map floats_defs = is_sl1_model ? tilt_options_floats_sl1_defs : tilt_options_floats_defs; + const std::map ints_defs = is_sl1_model ? tilt_options_ints_sl1_defs : tilt_options_ints_defs; + const std::map bools_defs = is_sl1_model ? tilt_options_bools_sl1_defs : tilt_options_bools_defs; + const std::map> tower_enums_defs = is_sl1_model ? tower_tilt_options_enums_sl1_defs : tower_tilt_options_enums_defs; + const std::map> tilt_enums_defs = is_sl1_model ? tilt_options_enums_sl1_defs : tilt_options_enums_defs; + for (const std::string& opt_key : s_Preset_sla_tilt_options) { switch (config.def()->get(opt_key)->type) { case coFloats: { - ConfigOptionFloats values = tilt_options_floats_defs.at(opt_key); + ConfigOptionFloats values = floats_defs.at(opt_key); double val1 = values.get_at(2 * tilt_mode); double val2 = values.get_at(2 * tilt_mode + 1); config.set_key_value(opt_key, new ConfigOptionFloats({ val1, val2 })); } break; case coInts: { - auto values = tilt_options_ints_defs.at(opt_key); + auto values = ints_defs.at(opt_key); int val1 = values.get_at(2 * tilt_mode); int val2 = values.get_at(2 * tilt_mode + 1); config.set_key_value(opt_key, new ConfigOptionInts({ val1, val2 })); } break; case coBools: { - auto values = tilt_options_bools_defs.at(opt_key); + auto values = bools_defs.at(opt_key); bool val1 = values.get_at(2 * tilt_mode); bool val2 = values.get_at(2 * tilt_mode + 1); config.set_key_value(opt_key, new ConfigOptionBools({ val1, val2 })); } break; case coEnums: { - auto values = tilt_options_enums_defs.at(opt_key); - int val1 = values.get_at(2 * tilt_mode); - int val2 = values.get_at(2 * tilt_mode + 1); + int val1, val2; + if (opt_key == "tower_profile") { + auto values = tower_enums_defs.at(opt_key); + val1 = values.get_at(2 * tilt_mode); + val2 = values.get_at(2 * tilt_mode + 1); + } + else { + auto values = tilt_enums_defs.at(opt_key); + val1 = values.get_at(2 * tilt_mode); + val2 = values.get_at(2 * tilt_mode + 1); + } config.set_key_value(opt_key, new ConfigOptionEnumsGeneric({ val1, val2 })); } break; diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 385e9f869a..4e66ff1ca0 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -163,18 +163,35 @@ enum class GCodeThumbnailsFormat { PNG, JPG, QOI }; +enum TowerProfiles : int { + tpLayer1, + tpLayer2, + tpLayer3, + tpLayer4, + tpLayer5, + tpLayer8, + tpLayer11, + tpLayer14, + tpLayer18, + tpLayer22, + tpLayer24, +}; + enum TiltProfiles : int { - tpHomingFast, - tpHomingSlow, - tpMoveFast, - tpMoveSlow, - tpLayer, - tpLayerMove, - tpSuperSlow, - tpResinSensor, - tpLayerMoveSlow, - tpLayerRelease, - tpLayerMoveFast, + tpMove120, + tpLayer200, + tpMove300, + tpLayer400, + tpLayer600, + tpLayer800, + tpLayer1000, + tpLayer1250, + tpLayer1500, + tpLayer1750, + tpLayer2000, + tpLayer2250, + tpMove5120, + tpMove8000, }; #define CONFIG_OPTION_ENUM_DECLARE_STATIC_MAPS(NAME) \ @@ -1160,7 +1177,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloats, delay_before_exposure_ms)) ((ConfigOptionFloats, delay_after_exposure_ms)) ((ConfigOptionInts, tower_hop_height_nm)) - ((ConfigOptionEnums, tower_profile)) + ((ConfigOptionEnums, tower_profile)) ((ConfigOptionBools, use_tilt)) ((ConfigOptionEnums, tilt_down_initial_profile)) ((ConfigOptionInts, tilt_down_offset_steps)) @@ -1174,7 +1191,6 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionEnums, tilt_up_finish_profile)) ((ConfigOptionInts, tilt_up_cycles)) ((ConfigOptionFloats, tilt_up_delay_ms)) - ((ConfigOptionFloats, moves_time_ms)) ) PRINT_CONFIG_CLASS_DEFINE( diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp index 3d79933255..c0a4519c02 100644 --- a/src/libslic3r/SLAPrint.cpp +++ b/src/libslic3r/SLAPrint.cpp @@ -905,7 +905,6 @@ bool SLAPrint::invalidate_state_by_config_options(const std::vector steps; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 0b0e5d1ed7..7dbc4db19a 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -5410,11 +5410,11 @@ static void append_tilt_options_line(ConfigOptionsGroupShp optgroup, const std:: { auto option = optgroup->get_option(opt_key, 0); auto line = Line{ option.opt.full_label, "" }; - option.opt.width = Field::def_width_wider(); + option.opt.width = Field::def_width/*_wider*/(); line.append_option(option); option = optgroup->get_option(opt_key, 1); - option.opt.width = Field::def_width_wider(); + option.opt.width = Field::def_width/*_wider*/(); line.append_option(option); optgroup->append_line(line); @@ -5427,7 +5427,7 @@ void TabSLAMaterial::build_tilt_group(Slic3r::GUI::PageShp page) {L("Below"), L("Values in this column are for ???")}, {L("Above"), L("Values in this column are for ???")}, }; - create_legend(page, legend_columns, comExpert, true); + create_legend(page, legend_columns, comExpert/*, true*/); auto optgroup = page->new_optgroup(L("Tilt profiles")); optgroup->m_on_change = [this, optgroup](const t_config_option_key& key, boost::any value) @@ -5486,7 +5486,6 @@ std::vector disable_tilt_options = { ,"tilt_up_finish_profile" ,"tilt_up_cycles" ,"tilt_up_delay_ms" - ,"moves_time_ms" }; void TabSLAMaterial::toggle_tilt_options(bool is_above)