mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-27 10:51:22 +00:00
Rename wipe tower ribs related options
This commit is contained in:
@@ -421,6 +421,16 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
|
||||
}
|
||||
#endif
|
||||
|
||||
// BBL printers do not support cone wipe tower
|
||||
if (config->opt_bool("enable_prime_tower") && is_BBL_Printer) {
|
||||
auto wipe_tower_wall_type = config->opt_enum<WipeTowerWallType>("wipe_tower_wall_type");
|
||||
if (wipe_tower_wall_type == WipeTowerWallType::wtwCone) {
|
||||
DynamicPrintConfig new_conf = *config;
|
||||
new_conf.set_key_value("wipe_tower_wall_type", new ConfigOptionEnum<WipeTowerWallType>(WipeTowerWallType::wtwRectangle));
|
||||
apply(config, &new_conf);
|
||||
}
|
||||
}
|
||||
|
||||
// Check "enable_support" and "overhangs" relations only on global settings level
|
||||
if (is_global_config && config->opt_bool("enable_support")) {
|
||||
// Ask only once.
|
||||
@@ -766,14 +776,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
|
||||
toggle_line("preheat_steps", have_ooze_prevention && (preheat_steps > 0));
|
||||
|
||||
bool have_prime_tower = config->opt_bool("enable_prime_tower");
|
||||
for (auto el : {"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_rib_wall", "prime_tower_infill_gap","prime_tower_enable_framework"})
|
||||
for (auto el : {"prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "wipe_tower_wall_type", "prime_tower_infill_gap","prime_tower_enable_framework"})
|
||||
toggle_line(el, have_prime_tower);
|
||||
|
||||
bool have_rib_wall = config->opt_bool("prime_tower_rib_wall")&&have_prime_tower;
|
||||
for (auto el : {"prime_tower_extra_rib_length", "prime_tower_rib_width", "prime_tower_fillet_wall"})
|
||||
toggle_line(el, have_rib_wall);
|
||||
toggle_field("prime_tower_width", !have_rib_wall);
|
||||
|
||||
for (auto el : {"wall_filament", "sparse_infill_filament", "solid_infill_filament", "wipe_tower_filament"})
|
||||
toggle_line(el, !bSEMM);
|
||||
|
||||
@@ -781,18 +786,17 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
|
||||
|
||||
for (auto el : {"wipe_tower_rotation_angle", "wipe_tower_cone_angle",
|
||||
"wipe_tower_extra_spacing", "wipe_tower_max_purge_speed",
|
||||
"wipe_tower_wall_type",
|
||||
"wipe_tower_extra_rib_length","wipe_tower_rib_width","wipe_tower_fillet_wall",
|
||||
"wipe_tower_bridging", "wipe_tower_extra_flow",
|
||||
"wipe_tower_no_sparse_layers"})
|
||||
toggle_line(el, have_prime_tower && !is_BBL_Printer);
|
||||
|
||||
WipeTowerWallType wipe_tower_wall_type = config->opt_enum<WipeTowerWallType>("wipe_tower_wall_type");
|
||||
bool have_rib_wall = (wipe_tower_wall_type == WipeTowerWallType::wtwRib)&&have_prime_tower;
|
||||
toggle_line("wipe_tower_cone_angle", have_prime_tower && !is_BBL_Printer && wipe_tower_wall_type == WipeTowerWallType::wtwCone);
|
||||
toggle_line("wipe_tower_extra_rib_length", have_prime_tower && !is_BBL_Printer && wipe_tower_wall_type == WipeTowerWallType::wtwRib);
|
||||
toggle_line("wipe_tower_rib_width", have_prime_tower && !is_BBL_Printer && wipe_tower_wall_type == WipeTowerWallType::wtwRib);
|
||||
toggle_line("wipe_tower_fillet_wall", have_prime_tower && !is_BBL_Printer && wipe_tower_wall_type == WipeTowerWallType::wtwRib);
|
||||
|
||||
toggle_line("wipe_tower_extra_rib_length", have_rib_wall);
|
||||
toggle_line("wipe_tower_rib_width", have_rib_wall);
|
||||
toggle_line("wipe_tower_fillet_wall", have_rib_wall);
|
||||
toggle_field("prime_tower_width", have_prime_tower && !(is_BBL_Printer && have_rib_wall));
|
||||
|
||||
toggle_line("single_extruder_multi_material_priming", !bSEMM && have_prime_tower && !is_BBL_Printer);
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ public:
|
||||
void check_filament_max_volumetric_speed(DynamicPrintConfig *config);
|
||||
void check_chamber_temperature(DynamicPrintConfig* config);
|
||||
void set_is_BBL_Printer(bool is_bbl_printer) { is_BBL_Printer = is_bbl_printer; };
|
||||
bool get_is_BBL_Printer() { return is_BBL_Printer; };
|
||||
// SLA print
|
||||
void update_print_sla_config(DynamicPrintConfig* config, const bool is_global_config = false);
|
||||
void toggle_print_sla_options(DynamicPrintConfig* config);
|
||||
|
||||
@@ -1562,7 +1562,7 @@ void Choice::set_value(const boost::any& value, bool change_event)
|
||||
m_opt_id == "internal_solid_infill_pattern" || m_opt_id == "sparse_infill_pattern" ||
|
||||
m_opt_id == "support_base_pattern" || m_opt_id == "support_interface_pattern" ||
|
||||
m_opt_id == "ironing_pattern" || m_opt_id == "support_ironing_pattern" ||
|
||||
m_opt_id == "support_style" || m_opt_id == "curr_bed_type")
|
||||
m_opt_id == "support_style" || m_opt_id == "curr_bed_type" || m_opt_id == "wipe_tower_wall_type")
|
||||
{
|
||||
std::string key;
|
||||
const t_config_enum_values& map_names = *m_opt.enum_keys_map;
|
||||
@@ -1653,7 +1653,7 @@ boost::any& Choice::get_value()
|
||||
m_opt_id == "internal_solid_infill_pattern" || m_opt_id == "sparse_infill_pattern" ||
|
||||
m_opt_id == "support_base_pattern" || m_opt_id == "support_interface_pattern" ||
|
||||
m_opt_id == "ironing_pattern" || m_opt_id == "support_ironing_pattern" ||
|
||||
m_opt_id == "support_style" || m_opt_id == "curr_bed_type")
|
||||
m_opt_id == "support_style" || m_opt_id == "curr_bed_type" || m_opt_id == "wipe_tower_wall_type")
|
||||
{
|
||||
const std::string &key = m_opt.enum_values[field->GetSelection()];
|
||||
m_value = int(m_opt.enum_keys_map->at(key));
|
||||
|
||||
@@ -1972,9 +1972,9 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con
|
||||
auto timelapse_type = config.option<ConfigOptionEnum<TimelapseType>>("timelapse_type");
|
||||
bool need_wipe_tower = (timelapse_type ? (timelapse_type->value == TimelapseType::tlSmooth) : false) | enable_wrapping_detection;
|
||||
double extra_spacing = config.option("prime_tower_infill_gap")->getFloat() / 100.;
|
||||
const ConfigOptionBool* use_rib_wall_opt = config.option<ConfigOptionBool>("prime_tower_rib_wall");
|
||||
bool use_rib_wall = use_rib_wall_opt ? use_rib_wall_opt->value: true;
|
||||
double rib_width = config.option("prime_tower_rib_width")->getFloat();
|
||||
const ConfigOptionEnum<WipeTowerWallType>* use_rib_wall_opt = config.option<ConfigOptionEnum<WipeTowerWallType>>("wipe_tower_wall_type");
|
||||
bool use_rib_wall = use_rib_wall_opt ? use_rib_wall_opt->value == WipeTowerWallType::wtwRib: false;
|
||||
double rib_width = config.option("wipe_tower_rib_width")->getFloat();
|
||||
double depth;
|
||||
double filament_change_volume=0.;
|
||||
{
|
||||
@@ -1996,7 +1996,7 @@ Vec3d PartPlate::estimate_wipe_tower_size(const DynamicPrintConfig & config, con
|
||||
if (need_wipe_tower || plate_extruder_size > 1) {
|
||||
float min_wipe_tower_depth = WipeTower::get_limit_depth_by_height(max_height);
|
||||
depth = std::max((double) min_wipe_tower_depth, depth);
|
||||
depth += rib_width / std::sqrt(2) + m_print->config().prime_tower_extra_rib_length.value;
|
||||
depth += rib_width / std::sqrt(2) + m_print->config().wipe_tower_extra_rib_length.value;
|
||||
wipe_tower_size(0) = wipe_tower_size(1) = depth;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4348,7 +4348,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
|
||||
"nozzle_height", "skirt_type", "skirt_loops", "skirt_speed","min_skirt_length", "skirt_distance", "skirt_start_angle",
|
||||
"brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", "preferred_orientation",
|
||||
"enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_tower_skip_points", "prime_tower_enable_framework",
|
||||
"prime_tower_rib_wall","prime_tower_extra_rib_length", "prime_tower_rib_width","prime_tower_fillet_wall", "prime_tower_infill_gap","filament_prime_volume",
|
||||
"prime_tower_infill_gap","filament_prime_volume",
|
||||
"extruder_colour", "filament_colour", "filament_type", "material_colour", "printable_height", "extruder_printable_height", "printer_model", "printer_technology",
|
||||
// These values are necessary to construct SlicingParameters by the Canvas3D variable layer height editor.
|
||||
"layer_height", "initial_layer_print_height", "min_layer_height", "max_layer_height",
|
||||
@@ -5655,8 +5655,8 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
||||
}
|
||||
}
|
||||
}
|
||||
ConfigOptionBool *prime_tower_rib_wall_option = config.option<ConfigOptionBool>("prime_tower_rib_wall", true);
|
||||
prime_tower_rib_wall_option->value = false;
|
||||
ConfigOptionEnum<WipeTowerWallType> *prime_tower_rib_wall_option = config.option<ConfigOptionEnum<WipeTowerWallType>>("wipe_tower_wall_type", true);
|
||||
prime_tower_rib_wall_option->value = WipeTowerWallType::wtwRectangle;
|
||||
|
||||
ConfigOptionPercent *prime_tower_infill_gap_option = config.option<ConfigOptionPercent>("prime_tower_infill_gap", true);
|
||||
prime_tower_infill_gap_option->value = 100;
|
||||
@@ -5684,7 +5684,7 @@ std::vector<size_t> Plater::priv::load_files(const std::vector<fs::path>& input_
|
||||
std::vector<std::string> diff_process_keys;
|
||||
std::string diff_process_settings = diff_settings[0];
|
||||
Slic3r::unescape_strings_cstyle(diff_process_settings, diff_process_keys);
|
||||
diff_process_keys.emplace_back("prime_tower_rib_wall");
|
||||
diff_process_keys.emplace_back("wipe_tower_wall_type");
|
||||
diff_process_keys.emplace_back("prime_tower_infill_gap");
|
||||
diff_process_settings = Slic3r::escape_strings_cstyle(diff_process_keys);
|
||||
diff_settings[0] = diff_process_settings;
|
||||
|
||||
+21
-4
@@ -2581,10 +2581,6 @@ void TabPrint::build()
|
||||
optgroup->append_single_option_line("prime_tower_width", "multimaterial_settings_prime_tower#width");
|
||||
optgroup->append_single_option_line("prime_tower_brim_width", "multimaterial_settings_prime_tower#brim-width");
|
||||
optgroup->append_single_option_line("prime_tower_infill_gap","parameter/prime-tower");
|
||||
optgroup->append_single_option_line("prime_tower_rib_wall", "parameter/prime-tower");
|
||||
optgroup->append_single_option_line("prime_tower_extra_rib_length","parameter/prime-tower");
|
||||
optgroup->append_single_option_line("prime_tower_rib_width","parameter/prime-tower");
|
||||
optgroup->append_single_option_line("prime_tower_fillet_wall","parameter/prime-tower");
|
||||
optgroup->append_single_option_line("wipe_tower_rotation_angle", "multimaterial_settings_prime_tower#wipe-tower-rotation-angle");
|
||||
optgroup->append_single_option_line("wipe_tower_bridging", "multimaterial_settings_prime_tower#maximal-bridging-distance");
|
||||
optgroup->append_single_option_line("wipe_tower_extra_spacing", "multimaterial_settings_prime_tower#wipe-tower-purge-lines-spacing");
|
||||
@@ -2765,6 +2761,27 @@ void TabPrint::toggle_options()
|
||||
}
|
||||
cb->SetValue(n);
|
||||
}
|
||||
|
||||
// BBL printers do not support cone wipe tower
|
||||
field = m_active_page->get_field("wipe_tower_wall_type");
|
||||
if (auto choice = dynamic_cast<Choice*>(field)) {
|
||||
auto def = print_config_def.get("wipe_tower_wall_type");
|
||||
std::vector<int> enum_set_bbl = {wtwRectangle, wtwRib};
|
||||
std::vector<int> enum_set_none_bbl = {wtwRectangle, wtwCone, wtwRib};
|
||||
auto& set = m_config_manipulation.get_is_BBL_Printer() ? enum_set_bbl : enum_set_none_bbl;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
void TabPrint::update()
|
||||
|
||||
Reference in New Issue
Block a user