工具栏拆分。连续材料禁用修改

This commit is contained in:
cjw 2025-04-18 16:54:34 +08:00
parent 885c2fcf2e
commit a9c8ab6f9f
1 changed files with 210 additions and 49 deletions

View File

@ -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,34 +3252,34 @@ 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);
}
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 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);
}
//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<InfillPattern>("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)
@ -3293,12 +3293,139 @@ void TabFilament::toggle_options()
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"})
{ "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() == "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);
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")
{
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<SupportType>("support_type");
if (auto choice = dynamic_cast<Choice*>(field)) {
auto def = print_config_def.get("support_style");
std::vector<int> enum_set_normal = { smsDefault, smsGrid, smsSnug };
std::vector<int> enum_set_tree = { smsDefault, smsTreeSlim, smsTreeStrong, smsTreeHybrid, smsTreeOrganic };
auto& set = is_tree(support_type) ? enum_set_tree : enum_set_normal;
auto& opt = const_cast<ConfigOptionDef&>(field->m_opt);
auto cb = dynamic_cast<ComboBox*>(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<TabPrinter*>(this)->update_pages();
/* if (filament_tab)
static_cast<TabFilament*>(this)->update_pages();*/
if (! is_selected && printer_tab)
{
/* There is a case, when :