From a9c8ab6f9f4478729f4f4457121cd082ba4161f7 Mon Sep 17 00:00:00 2001 From: cjw Date: Fri, 18 Apr 2025 16:54:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=A0=8F=E6=8B=86=E5=88=86?= =?UTF-8?q?=E3=80=82=E8=BF=9E=E7=BB=AD=E6=9D=90=E6=96=99=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/slic3r/GUI/Tab.cpp | 259 +++++++++++++++++++++++++++++++++-------- 1 file changed, 210 insertions(+), 49 deletions(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 5078898cd..d302aebe1 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2083,12 +2083,12 @@ void TabPrint::build() page = add_options_page(L("Support"), "support"); optgroup = page->new_optgroup("", L"param_support"); optgroup->append_single_option_line("enable_support", "support"); - optgroup->append_single_option_line("support_type", "support#support-types"); - optgroup->append_single_option_line("support_style", "support#support-styles"); - optgroup->append_single_option_line("support_threshold_angle", "support#threshold-angle"); - optgroup->append_single_option_line("support_on_build_plate_only"); - optgroup->append_single_option_line("support_critical_regions_only"); - optgroup->append_single_option_line("support_remove_small_overhang"); + //optgroup->append_single_option_line("support_type", "support#support-types"); + //optgroup->append_single_option_line("support_style", "support#support-styles"); + //optgroup->append_single_option_line("support_threshold_angle", "support#threshold-angle"); + //optgroup->append_single_option_line("support_on_build_plate_only"); + //optgroup->append_single_option_line("support_critical_regions_only"); + //optgroup->append_single_option_line("support_remove_small_overhang"); //optgroup->append_single_option_line("enforce_support_layers"); //optgroup = page->new_optgroup(L("Raft"), L"param_raft"); @@ -3252,53 +3252,180 @@ void TabFilament::toggle_options() { if (!m_active_page) return; - + //m_active_page->clear(); + //return; bool is_BBL_printer = false; if (m_preset_bundle) { is_BBL_printer = m_preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset( m_preset_bundle); } + //wxString abc = wxGetApp().get_tab(Preset::TYPE_CONFIG)->get_combo_box()->GetTextLabel(); + wxString abc = wxString::FromUTF8( m_preset_bundle->filaments.get_edited_preset().name); + //InfillPattern bcd = m_preset_bundle->configs.get_edited_preset().config.opt_enum("top_surface_pattern"); + wxString lian_xu = _L("Lian xu"); + if (abc.Contains(lian_xu)) { + if (m_active_page->title() == "Filament") + { + toggle_option("filament_type", false); + toggle_option("filament_vendor", false); + //xiamian++ + toggle_option("default_filament_colour", false); + toggle_option("filament_diameter", false); + toggle_option("filament_flow_ratio", false); + toggle_option("filament_density", false); + toggle_option("filament_cost", false); + toggle_option("temperature_vitrification", false); + toggle_option("nozzle_temperature_range_low", false); + toggle_option("nozzle_temperature_range_high", false); + toggle_option("filament_max_volumetric_speed", false); + toggle_option("enable_pressure_advance", false); + //BBS: hide these useless option for bambu printer + toggle_line("enable_pressure_advance", !is_BBL_printer); + if (is_BBL_printer) + toggle_line("pressure_advance", false); + else { + toggle_line("pressure_advance", true); + toggle_option("pressure_advance", m_config->opt_bool("enable_pressure_advance", 0)); + } - if (m_active_page->title() == "Cooling") - { - bool cooling = m_config->opt_bool("slow_down_for_layer_cooling", 0); - toggle_option("slow_down_min_speed", cooling); + bool support_chamber_temp_control = this->m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_chamber_temp_control"); + toggle_line("chamber_temperatures", support_chamber_temp_control); - bool has_enable_overhang_bridge_fan = m_config->opt_bool("enable_overhang_bridge_fan", 0); - for (auto el : { "overhang_fan_speed", "overhang_fan_threshold" }) - toggle_option(el, has_enable_overhang_bridge_fan); - - bool support_air_filtration = m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_air_filtration"); - toggle_line("activate_air_filtration",is_BBL_printer && support_air_filtration); - - for (auto elem : { "during_print_exhaust_fan_speed","complete_print_exhaust_fan_speed" }) - toggle_line(elem, m_config->opt_bool("activate_air_filtration",0)&&support_air_filtration); - - } - if (m_active_page->title() == "Filament") - { - toggle_option("filament_type", false); - toggle_option("filament_vendor", false); - //BBS: hide these useless option for bambu printer - toggle_line("enable_pressure_advance", !is_BBL_printer); - if (is_BBL_printer) - toggle_line("pressure_advance", false); - else { - toggle_line("pressure_advance", true); - toggle_option("pressure_advance", m_config->opt_bool("enable_pressure_advance", 0)); + for (auto el : + { "cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer" }) + toggle_line(el, is_BBL_printer); } - bool support_chamber_temp_control = this->m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_chamber_temp_control"); - toggle_line("chamber_temperatures", support_chamber_temp_control); + if (m_active_page->title() == "Cooling") + { + toggle_option("close_fan_the_first_x_layers", false); + toggle_option("fan_min_speed", false); + toggle_option("fan_cooling_layer_time", false); + toggle_option("fan_max_speed", false); + toggle_option("slow_down_layer_time", false); + + toggle_line("reduce_fan_stop_start_freq", false); + + toggle_line("slow_down_for_layer_cooling", false); + toggle_option("slow_down_min_speed", false); + + toggle_line("enable_overhang_bridge_fan", false); + toggle_option("overhang_fan_threshold", false); + toggle_option("overhang_fan_speed", false); - for (auto el : - {"cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer"}) - toggle_line(el, is_BBL_printer); + toggle_option("additional_cooling_fan_speed", false); + + bool support_air_filtration = m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_air_filtration"); + toggle_line("activate_air_filtration", is_BBL_printer && support_air_filtration); + + for (auto elem : { "during_print_exhaust_fan_speed","complete_print_exhaust_fan_speed" }) + toggle_line(elem, m_config->opt_bool("activate_air_filtration", 0) && support_air_filtration); + } + if (m_active_page->title() == "Advanced") { + toggle_option("filament_start_gcode", false); + toggle_option("filament_end_gcode", false); + } + if (m_active_page->title() == "Notes") { + toggle_option("filament_notes", false); + } + if (m_active_page->title() == "Setting Overrides") { + update_filament_overrides_page(); + for (const std::string opt_key : { "filament_retraction_length", + "filament_z_hop", + "filament_z_hop_types", + "filament_retraction_speed", + "filament_deretraction_speed", + //"filament_retract_restart_extra", + "filament_retraction_minimum_travel", + "filament_retract_when_changing_layer", + "filament_wipe", + //BBS + "filament_wipe_distance", + "filament_retract_before_wipe", + "filament_long_retractions_when_cut", + "filament_retraction_distances_when_cut" + }) + toggle_option(opt_key, false); + } } + else { + if (m_active_page->title() == "Cooling") + { + - if (m_active_page->title() == "Setting Overrides") - update_filament_overrides_page(); + toggle_option("close_fan_the_first_x_layers", true); + toggle_option("fan_min_speed", true); + toggle_option("fan_cooling_layer_time", true); + toggle_option("fan_max_speed", true); + toggle_option("slow_down_layer_time", true); + + toggle_line("reduce_fan_stop_start_freq", true); + + toggle_line("slow_down_for_layer_cooling", true); + toggle_option("slow_down_min_speed", true); + + toggle_line("enable_overhang_bridge_fan", true); + toggle_option("overhang_fan_threshold", true); + toggle_option("overhang_fan_speed", true); + + toggle_option("additional_cooling_fan_speed", true); + + bool cooling = m_config->opt_bool("slow_down_for_layer_cooling", 0); + toggle_option("slow_down_min_speed", cooling); + + bool has_enable_overhang_bridge_fan = m_config->opt_bool("enable_overhang_bridge_fan", 0); + for (auto el : { "overhang_fan_speed", "overhang_fan_threshold" }) + toggle_option(el, has_enable_overhang_bridge_fan); + + bool support_air_filtration = m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_air_filtration"); + toggle_line("activate_air_filtration", is_BBL_printer && support_air_filtration); + + for (auto elem : { "during_print_exhaust_fan_speed","complete_print_exhaust_fan_speed" }) + toggle_line(elem, m_config->opt_bool("activate_air_filtration", 0) && support_air_filtration); + + } + if (m_active_page->title() == "Filament") + { + toggle_option("filament_type", false); + toggle_option("filament_vendor", false); + //xiamian++ + toggle_option("default_filament_colour", true); + toggle_option("filament_diameter", true); + toggle_option("filament_flow_ratio", true); + toggle_option("filament_density", true); + toggle_option("filament_cost", true); + toggle_option("temperature_vitrification", true); + toggle_option("nozzle_temperature_range_low", true); + toggle_option("nozzle_temperature_range_high", true); + toggle_option("filament_max_volumetric_speed", true); + toggle_option("enable_pressure_advance", true); + //BBS: hide these useless option for bambu printer + toggle_line("enable_pressure_advance", !is_BBL_printer); + if (is_BBL_printer) + toggle_line("pressure_advance", false); + else { + toggle_line("pressure_advance", true); + toggle_option("pressure_advance", m_config->opt_bool("enable_pressure_advance", 0)); + } + + bool support_chamber_temp_control = this->m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_chamber_temp_control"); + toggle_line("chamber_temperatures", support_chamber_temp_control); + + for (auto el : + { "cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer" }) + toggle_line(el, is_BBL_printer); + } + if (m_active_page->title() == "Advanced") { + toggle_option("filament_start_gcode", true); + toggle_option("filament_end_gcode", true); + } + if (m_active_page->title() == "Notes") { + toggle_option("filament_notes", true); + } + if (m_active_page->title() == "Setting Overrides") + update_filament_overrides_page(); + } } void TabFilament::update() @@ -3309,7 +3436,7 @@ void TabFilament::update() m_config_manipulation.check_filament_max_volumetric_speed(m_config); m_update_cnt++; - + //m_parent->get_paged_view()->Close(); update_description_lines(); //BBS: GUI refactor //Layout(); @@ -4422,12 +4549,39 @@ void TabConfig::toggle_options() { if (m_preset_bundle) { is_BBL_printer = m_preset_bundle->configs.get_edited_preset().is_bbl_vendor_preset(m_preset_bundle); } - //std::string cde = "1"; - //m_preset_bundle->filament_presets - /* for (auto& f : m_preset_bundle->filament_presets) { - cde = f; - }*/ - + bool enable_support = m_preset_bundle->prints.get_edited_preset().config.opt_bool("enable_support"); + + for (auto el : { "support_style", "support_base_pattern", + "support_base_pattern_spacing", "support_expansion", "support_angle", + "support_interface_pattern", "support_interface_top_layers", "support_interface_bottom_layers", + "bridge_no_support", "max_bridge_length", "support_top_z_distance", "support_bottom_z_distance", + //BBS: add more support params to dependent of enable_support + "support_type", "support_on_build_plate_only", + "support_remove_small_overhang","support_interface_not_for_body", + "support_object_xy_distance","support_object_first_layer_gap",/* "independent_support_layer_height"*/ + "support_filament","support_interface_filament"}) + toggle_option(el, enable_support); + + Field* field = m_active_page->get_field("support_style"); + auto support_type = m_config->opt_enum("support_type"); + if (auto choice = dynamic_cast(field)) { + auto def = print_config_def.get("support_style"); + std::vector enum_set_normal = { smsDefault, smsGrid, smsSnug }; + std::vector enum_set_tree = { smsDefault, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsTreeOrganic }; + auto& set = is_tree(support_type) ? enum_set_tree : enum_set_normal; + auto& opt = const_cast(field->m_opt); + auto cb = dynamic_cast(choice->window); + auto n = cb->GetValue(); + opt.enum_values.clear(); + opt.enum_labels.clear(); + cb->Clear(); + for (auto i : set) { + opt.enum_values.push_back(def->enum_values[i]); + opt.enum_labels.push_back(def->enum_labels[i]); + cb->Append(_(def->enum_labels[i])); + } + cb->SetValue(n); + } //p->combos_filament //m_preset_bundle->configs.update_dirty(); //wxString abc = wxString::FromUTF8( m_preset_bundle->configs.get_selected_preset().name); @@ -4783,9 +4937,14 @@ void Tab::rebuild_page_tree() // suppress activate page before page_tree rebuilding m_disable_tree_sel_changed_event = true; m_tabctrl->DeleteAllItems(); - + //wxString abc = wxGetApp().get_tab(Preset::TYPE_CONFIG)->get_combo_box()->GetTextLabel(); + //wxString lian_xu = _L("Lian xu"); + //bool isLianxu = abc.Contains(lian_xu); for (auto p : m_pages) { + /* if (isLianxu) { + if (p->g) {} + }*/ if (!p->get_show()) continue; auto itemId = m_tabctrl->AppendItem(translate_category(p->title(), m_type), p->iconID()); @@ -4883,6 +5042,7 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/, bool current_dirty = ! delete_current && m_presets->current_is_dirty(); bool print_tab = m_presets->type() == Preset::TYPE_PRINT || m_presets->type() == Preset::TYPE_SLA_PRINT; bool printer_tab = m_presets->type() == Preset::TYPE_PRINTER; + //bool filament_tab = m_presets->type() == Preset::TYPE_FILAMENT; bool canceled = false; bool no_transfer = false; bool technology_changed = false; @@ -5071,7 +5231,8 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/, // Initialize the UI from the current preset. if (printer_tab) static_cast(this)->update_pages(); - + /* if (filament_tab) + static_cast(this)->update_pages();*/ if (! is_selected && printer_tab) { /* There is a case, when :