ENH: Reduce unnecessary solid fills

jira: none
Change-Id: I9f0f3eeacb6a553ef06c9afbb1299ff6139e77b9
(cherry picked from commit 2a00a0d88984ad8aeb664308465be995c834a101)
This commit is contained in:
zhimin.zeng
2025-03-14 19:04:32 +08:00
committed by Noisyfox
parent 8e658d13fb
commit b077e0d39c

View File

@@ -3949,16 +3949,25 @@ void WipeTower::generate_new(std::vector<std::vector<WipeTower::ToolChangeResult
}
int id = std::find_if(m_wipe_tower_blocks.begin(), m_wipe_tower_blocks.end(), [&](const WipeTowerBlock &b) { return &b == &block; }) - m_wipe_tower_blocks.begin();
bool interface_solid = solid_blocks_id.count(id);
int finish_layer_filament = wall_idx;
int finish_layer_filament = -1;
if (block.last_filament_change_id != -1) {
finish_layer_filament = block.last_filament_change_id;
} else if (block.last_nozzle_change_id != -1) {
finish_layer_filament = block.last_nozzle_change_id;
}
WipeTowerBlock * last_layer_finish_block = get_block_by_category(get_filament_category(layer.tool_changes.front().old_tool), false);
if (!layer.tool_changes.empty() && last_layer_finish_block && last_layer_finish_block->block_id == block.block_id && finish_layer_filament == -1) {
finish_layer_filament = layer.tool_changes.front().old_tool;
}
if (finish_layer_filament == -1) {
finish_layer_filament = wall_idx;
}
ToolChangeResult finish_block_tcr;
if (interface_solid ||(block.solid_infill[m_cur_layer_id] && block.filament_adhesiveness_category != m_filament_categories[wall_idx])) {
interface_solid = interface_solid && !((block.solid_infill[m_cur_layer_id] && block.filament_adhesiveness_category != m_filament_categories[wall_idx]));//noly reduce speed when
if (interface_solid || (block.solid_infill[m_cur_layer_id] && block.filament_adhesiveness_category != m_filament_categories[finish_layer_filament])) {
interface_solid = interface_solid && !((block.solid_infill[m_cur_layer_id] && block.filament_adhesiveness_category != m_filament_categories[finish_layer_filament]));//noly reduce speed when
finish_block_tcr = finish_block_solid(block, finish_layer_filament, layer.extruder_fill, interface_solid);
block.finish_depth[m_cur_layer_id] = block.start_depth + block.depth;
}