Fix of fan control for raft layers.
Fixes Fan starts at first layer, even though disabled for first layer. #7232 This is a regression due to cooling refactoring, which cooled support layers independently from object layers. The bug here was that all the raft layers were cooled together with the first object layer.
This commit is contained in:
parent
efbf64fdea
commit
21e5481a58
2 changed files with 11 additions and 5 deletions
|
@ -1998,13 +1998,19 @@ GCode::LayerResult GCode::process_layer(
|
||||||
// Either printing all copies of all objects, or just a single copy of a single object.
|
// Either printing all copies of all objects, or just a single copy of a single object.
|
||||||
assert(single_object_instance_idx == size_t(-1) || layers.size() == 1);
|
assert(single_object_instance_idx == size_t(-1) || layers.size() == 1);
|
||||||
|
|
||||||
|
// First object, support and raft layer, if available.
|
||||||
const Layer *object_layer = nullptr;
|
const Layer *object_layer = nullptr;
|
||||||
const SupportLayer *support_layer = nullptr;
|
const SupportLayer *support_layer = nullptr;
|
||||||
|
const SupportLayer *raft_layer = nullptr;
|
||||||
for (const LayerToPrint &l : layers) {
|
for (const LayerToPrint &l : layers) {
|
||||||
if (l.object_layer != nullptr && object_layer == nullptr)
|
if (l.object_layer && ! object_layer)
|
||||||
object_layer = l.object_layer;
|
object_layer = l.object_layer;
|
||||||
if (l.support_layer != nullptr && support_layer == nullptr)
|
if (l.support_layer) {
|
||||||
support_layer = l.support_layer;
|
if (! support_layer)
|
||||||
|
support_layer = l.support_layer;
|
||||||
|
if (! raft_layer && support_layer->id() < support_layer->object()->slicing_parameters().raft_layers())
|
||||||
|
raft_layer = support_layer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const Layer &layer = (object_layer != nullptr) ? *object_layer : *support_layer;
|
const Layer &layer = (object_layer != nullptr) ? *object_layer : *support_layer;
|
||||||
GCode::LayerResult result { {}, layer.id(), false, last_layer };
|
GCode::LayerResult result { {}, layer.id(), false, last_layer };
|
||||||
|
@ -2406,7 +2412,7 @@ GCode::LayerResult GCode::process_layer(
|
||||||
log_memory_info();
|
log_memory_info();
|
||||||
|
|
||||||
result.gcode = std::move(gcode);
|
result.gcode = std::move(gcode);
|
||||||
result.cooling_buffer_flush = object_layer || last_layer;
|
result.cooling_buffer_flush = object_layer || raft_layer || last_layer;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1480,7 +1480,7 @@ static inline std::tuple<Polygons, Polygons, Polygons, float> detect_overhangs(
|
||||||
overhang_polygons = to_polygons(layer.lslices);
|
overhang_polygons = to_polygons(layer.lslices);
|
||||||
#endif
|
#endif
|
||||||
// Expand for better stability.
|
// Expand for better stability.
|
||||||
contact_polygons = expand(overhang_polygons, scaled<float>(object_config.raft_expansion.value));
|
contact_polygons = object_config.raft_expansion.value > 0 ? expand(overhang_polygons, scaled<float>(object_config.raft_expansion.value)) : overhang_polygons;
|
||||||
}
|
}
|
||||||
else if (! layer.regions().empty())
|
else if (! layer.regions().empty())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue