mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-14 10:17:55 -06:00
Enhancement: Do not slow down external perimeters to meet minimum layer time (#5148)
* POC - Do not slow down external perimeters to meet minimum layer time
* POC - Do not slow down external perimeters to meet minimum layer time - rework
* Revert "POC - Do not slow down external perimeters to meet minimum layer time"
This reverts commit d84ff93f90
.
* Dont slow down external perimeters to meet layer time target v2
* Reverted previous implementation
* UI fixes for dont slow down for layer cooling
* Update dont slow down outer walls naming convention
---------
Co-authored-by: SoftFever <softfeverever@gmail.com>
This commit is contained in:
parent
9ee33e30df
commit
12861a6a3d
6 changed files with 31 additions and 2 deletions
|
@ -222,6 +222,9 @@ struct PerExtruderAdjustments
|
|||
float slow_down_layer_time = 0.f;
|
||||
// Minimum print speed allowed for this extruder.
|
||||
float slow_down_min_speed = 0.f;
|
||||
|
||||
bool dont_slow_down_outer_wall = false;
|
||||
|
||||
|
||||
// Parsed lines.
|
||||
std::vector<CoolingLine> lines;
|
||||
|
@ -330,6 +333,8 @@ std::vector<PerExtruderAdjustments> CoolingBuffer::parse_layer_gcode(const std::
|
|||
adj.cooling_slow_down_enabled = m_config.slow_down_for_layer_cooling.get_at(extruder_id);
|
||||
adj.slow_down_layer_time = float(m_config.slow_down_layer_time.get_at(extruder_id));
|
||||
adj.slow_down_min_speed = float(m_config.slow_down_min_speed.get_at(extruder_id));
|
||||
// ORCA: To enable dont slow down external perimeters feature per filament (extruder)
|
||||
adj.dont_slow_down_outer_wall = m_config.dont_slow_down_outer_wall.get_at(extruder_id);
|
||||
map_extruder_to_per_extruder_adjustment[extruder_id] = i;
|
||||
}
|
||||
|
||||
|
@ -399,7 +404,15 @@ std::vector<PerExtruderAdjustments> CoolingBuffer::parse_layer_gcode(const std::
|
|||
line.type |= CoolingLine::TYPE_EXTERNAL_PERIMETER;
|
||||
if (wipe)
|
||||
line.type |= CoolingLine::TYPE_WIPE;
|
||||
if (boost::contains(sline, ";_EXTRUDE_SET_SPEED") && ! wipe) {
|
||||
|
||||
// ORCA: Dont slowdown external perimeters for layer time feature
|
||||
// use the adjustment pointer to ensure the value for the current extruder (filament) is used.
|
||||
bool adjust_external = true;
|
||||
if(adjustment->dont_slow_down_outer_wall && external_perimeter) adjust_external = false;
|
||||
|
||||
// ORCA: Dont slowdown external perimeters for layer time works by not marking the external perimeter as adjustable,
|
||||
// hence the slowdown algorithm ignores it.
|
||||
if (boost::contains(sline, ";_EXTRUDE_SET_SPEED") && ! wipe && adjust_external) {
|
||||
line.type |= CoolingLine::TYPE_ADJUSTABLE;
|
||||
active_speed_modifier = adjustment->lines.size();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue