Fix misc bugs

This commit is contained in:
SoftFever 2024-07-23 00:12:54 +08:00
parent b4cc526ae4
commit c36d4ad7c9
17 changed files with 18 additions and 25 deletions

View file

@ -156,7 +156,7 @@
"seam_slope_start_height": "0", "seam_slope_start_height": "0",
"seam_slope_steps": "10", "seam_slope_steps": "10",
"seam_slope_type": "none", "seam_slope_type": "none",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -156,7 +156,7 @@
"seam_slope_start_height": "0", "seam_slope_start_height": "0",
"seam_slope_steps": "10", "seam_slope_steps": "10",
"seam_slope_type": "none", "seam_slope_type": "none",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -156,7 +156,7 @@
"seam_slope_start_height": "0", "seam_slope_start_height": "0",
"seam_slope_steps": "10", "seam_slope_steps": "10",
"seam_slope_type": "none", "seam_slope_type": "none",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -156,7 +156,7 @@
"seam_slope_start_height": "0", "seam_slope_start_height": "0",
"seam_slope_steps": "10", "seam_slope_steps": "10",
"seam_slope_type": "none", "seam_slope_type": "none",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -128,7 +128,7 @@
"role_based_wipe_speed": "1", "role_based_wipe_speed": "1",
"seam_gap": "5%", "seam_gap": "5%",
"seam_position": "aligned", "seam_position": "aligned",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "3", "skirt_distance": "3",
"skirt_height": "2", "skirt_height": "2",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -136,7 +136,7 @@
"role_based_wipe_speed": "1", "role_based_wipe_speed": "1",
"seam_gap": "10%", "seam_gap": "10%",
"seam_position": "aligned", "seam_position": "aligned",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "2", "skirt_loops": "2",

View file

@ -115,7 +115,7 @@
"role_based_wipe_speed": "1", "role_based_wipe_speed": "1",
"seam_gap": "10%", "seam_gap": "10%",
"seam_position": "aligned", "seam_position": "aligned",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -115,7 +115,7 @@
"role_based_wipe_speed": "1", "role_based_wipe_speed": "1",
"seam_gap": "10%", "seam_gap": "10%",
"seam_position": "aligned", "seam_position": "aligned",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -154,7 +154,7 @@
"seam_slope_start_height": "0", "seam_slope_start_height": "0",
"seam_slope_steps": "10", "seam_slope_steps": "10",
"seam_slope_type": "external", "seam_slope_type": "external",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "1", "skirt_loops": "1",

View file

@ -114,7 +114,7 @@
"role_based_wipe_speed": "1", "role_based_wipe_speed": "1",
"seam_gap": "10%", "seam_gap": "10%",
"seam_position": "aligned", "seam_position": "aligned",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -114,7 +114,7 @@
"role_based_wipe_speed": "1", "role_based_wipe_speed": "1",
"seam_gap": "10%", "seam_gap": "10%",
"seam_position": "aligned", "seam_position": "aligned",
"single_extruder_multi_material_priming": "1", "single_extruder_multi_material_priming": "0",
"skirt_distance": "2", "skirt_distance": "2",
"skirt_height": "1", "skirt_height": "1",
"skirt_loops": "0", "skirt_loops": "0",

View file

@ -2147,7 +2147,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
throw Slic3r::SlicingError(_(L("No object can be printed. Maybe too small"))); throw Slic3r::SlicingError(_(L("No object can be printed. Maybe too small")));
has_wipe_tower = print.has_wipe_tower() && tool_ordering.has_wipe_tower(); has_wipe_tower = print.has_wipe_tower() && tool_ordering.has_wipe_tower();
// Orca: support all extruder priming // Orca: support all extruder priming
initial_extruder_id = (has_wipe_tower && !print.config().single_extruder_multi_material_priming) ? initial_extruder_id = (!is_bbl_printers && has_wipe_tower && !print.config().single_extruder_multi_material_priming) ?
// The priming towers will be skipped. // The priming towers will be skipped.
tool_ordering.all_extruders().back() : tool_ordering.all_extruders().back() :
// Don't skip the priming towers. // Don't skip the priming towers.
@ -6157,13 +6157,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b
std::string toolchange_gcode_parsed; std::string toolchange_gcode_parsed;
//Orca: Ignore change_filament_gcode if is the first call for a tool change and manual_filament_change is enabled //Orca: Ignore change_filament_gcode if is the first call for a tool change and manual_filament_change is enabled
if (!change_filament_gcode.empty() && !(m_config.manual_filament_change.value && m_toolchange_count == 1)) { if (!change_filament_gcode.empty() && !(m_config.manual_filament_change.value && m_toolchange_count == 1)) {
dyn_config.set_key_value("previous_extruder",
new ConfigOptionInt((int) (m_writer.extruder() != nullptr ? m_writer.extruder()->id() : -1)));
dyn_config.set_key_value("next_extruder", new ConfigOptionInt((int) extruder_id));
dyn_config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index));
dyn_config.set_key_value("layer_z", new ConfigOptionFloat(print_z));
dyn_config.set_key_value("toolchange_z", new ConfigOptionFloat(print_z)); dyn_config.set_key_value("toolchange_z", new ConfigOptionFloat(print_z));
dyn_config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z));
toolchange_gcode_parsed = placeholder_parser_process("change_filament_gcode", change_filament_gcode, extruder_id, &dyn_config); toolchange_gcode_parsed = placeholder_parser_process("change_filament_gcode", change_filament_gcode, extruder_id, &dyn_config);
check_add_eol(toolchange_gcode_parsed); check_add_eol(toolchange_gcode_parsed);

View file

@ -875,7 +875,7 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume()
return false; return false;
}; };
std::optional<unsigned int>current_extruder_id; std::optional<unsigned int>current_extruder_id(-1);
for (int i = 0; i < m_layer_tools.size(); ++i) { for (int i = 0; i < m_layer_tools.size(); ++i) {
LayerTools& lt = m_layer_tools[i]; LayerTools& lt = m_layer_tools[i];
if (lt.extruders.empty()) if (lt.extruders.empty())

View file

@ -1063,7 +1063,7 @@ namespace client
case coPercents: output.set_d(static_cast<const ConfigOptionPercents*>(opt.opt)->values[idx]); break; case coPercents: output.set_d(static_cast<const ConfigOptionPercents*>(opt.opt)->values[idx]); break;
case coPoints: output.set_s(to_string(static_cast<const ConfigOptionPoints*>(opt.opt)->values[idx])); break; case coPoints: output.set_s(to_string(static_cast<const ConfigOptionPoints*>(opt.opt)->values[idx])); break;
case coBools: output.set_b(static_cast<const ConfigOptionBools*>(opt.opt)->values[idx] != 0); break; case coBools: output.set_b(static_cast<const ConfigOptionBools*>(opt.opt)->values[idx] != 0); break;
//case coEnums: output.set_s(opt.opt->vserialize()[idx]); break; case coEnums: output.set_i(static_cast<const ConfigOptionInts *>(opt.opt)->values[idx]); break;
default: default:
ctx->throw_exception("Unsupported vector variable type", opt.it_range); ctx->throw_exception("Unsupported vector variable type", opt.it_range);
} }

View file

@ -2581,6 +2581,7 @@ void Print::_make_wipe_tower()
for (unsigned int i = 0; i<number_of_extruders; ++i) for (unsigned int i = 0; i<number_of_extruders; ++i)
wipe_volumes.push_back(std::vector<float>(flush_matrix.begin()+i*number_of_extruders, flush_matrix.begin()+(i+1)*number_of_extruders)); wipe_volumes.push_back(std::vector<float>(flush_matrix.begin()+i*number_of_extruders, flush_matrix.begin()+(i+1)*number_of_extruders));
const auto bUseWipeTower2 = is_BBL_printer() ? false : true;
// Orca: itertate over wipe_volumes and change the non-zero values to the prime_volume // Orca: itertate over wipe_volumes and change the non-zero values to the prime_volume
if (!m_config.purge_in_prime_tower && !is_BBL_printer()) { if (!m_config.purge_in_prime_tower && !is_BBL_printer()) {
for (unsigned int i = 0; i < number_of_extruders; ++i) { for (unsigned int i = 0; i < number_of_extruders; ++i) {
@ -2593,7 +2594,7 @@ void Print::_make_wipe_tower()
} }
// Let the ToolOrdering class know there will be initial priming extrusions at the start of the print. // Let the ToolOrdering class know there will be initial priming extrusions at the start of the print.
m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int)-1, true); m_wipe_tower_data.tool_ordering = ToolOrdering(*this, (unsigned int) -1, bUseWipeTower2 ? true : false);
if (!m_wipe_tower_data.tool_ordering.has_wipe_tower()) if (!m_wipe_tower_data.tool_ordering.has_wipe_tower())
// Don't generate any wipe tower. // Don't generate any wipe tower.
@ -2636,7 +2637,7 @@ void Print::_make_wipe_tower()
} }
this->throw_if_canceled(); this->throw_if_canceled();
if (is_BBL_printer()) { if (!bUseWipeTower2) {
// in BBL machine, wipe tower is only use to prime extruder. So just use a global wipe volume. // in BBL machine, wipe tower is only use to prime extruder. So just use a global wipe volume.
WipeTower wipe_tower(m_config, m_plate_index, m_origin, m_config.prime_volume, m_wipe_tower_data.tool_ordering.first_extruder(), WipeTower wipe_tower(m_config, m_plate_index, m_origin, m_config.prime_volume, m_wipe_tower_data.tool_ordering.first_extruder(),
m_wipe_tower_data.tool_ordering.empty() ? 0.f : m_wipe_tower_data.tool_ordering.back().print_z); m_wipe_tower_data.tool_ordering.empty() ? 0.f : m_wipe_tower_data.tool_ordering.back().print_z);

View file

@ -4156,7 +4156,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Prime all printing extruders"); def->label = L("Prime all printing extruders");
def->tooltip = L("If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print."); def->tooltip = L("If enabled, all printing extruders will be primed at the front edge of the print bed at the start of the print.");
def->mode = comAdvanced; def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(true)); def->set_default_value(new ConfigOptionBool(false));
def = this->add("slice_closing_radius", coFloat); def = this->add("slice_closing_radius", coFloat);
def->label = L("Slice gap closing radius"); def->label = L("Slice gap closing radius");

View file

@ -9186,8 +9186,6 @@ void GLCanvas3D::_load_wipe_tower_toolpaths(const BuildVolume& build_volume, con
ctxt.print = print; ctxt.print = print;
ctxt.tool_colors = tool_colors.empty() ? nullptr : &tool_colors; ctxt.tool_colors = tool_colors.empty() ? nullptr : &tool_colors;
//BBS: has no single_extruder_multi_material_priming
//if (print->wipe_tower_data().priming && print->config().single_extruder_multi_material_priming)
if (print->wipe_tower_data().priming) if (print->wipe_tower_data().priming)
for (int i=0; i<(int)print->wipe_tower_data().priming.get()->size(); ++i) for (int i=0; i<(int)print->wipe_tower_data().priming.get()->size(); ++i)
ctxt.priming.emplace_back(print->wipe_tower_data().priming.get()->at(i)); ctxt.priming.emplace_back(print->wipe_tower_data().priming.get()->at(i));