mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-07-27 22:32:00 +08:00
#542 fix bad temperature set
This commit is contained in:
parent
c21af799d7
commit
5e65b9416b
@ -2297,7 +2297,6 @@ void GCode::process_layer(
|
|||||||
// In single extruder multi material mode, set the temperature for the current extruder only.
|
// In single extruder multi material mode, set the temperature for the current extruder only.
|
||||||
continue;
|
continue;
|
||||||
int temperature = print.config().temperature.get_at(extruder.id());
|
int temperature = print.config().temperature.get_at(extruder.id());
|
||||||
if (temperature > 0 && temperature != print.config().first_layer_temperature.get_at(extruder.id()))
|
|
||||||
gcode += m_writer.set_temperature(temperature, false, extruder.id());
|
gcode += m_writer.set_temperature(temperature, false, extruder.id());
|
||||||
}
|
}
|
||||||
gcode += m_writer.set_bed_temperature(print.config().bed_temperature.get_at(first_extruder_id));
|
gcode += m_writer.set_bed_temperature(print.config().bed_temperature.get_at(first_extruder_id));
|
||||||
@ -2589,6 +2588,9 @@ void GCode::process_layer(
|
|||||||
this->set_origin(unscale(offset));
|
this->set_origin(unscale(offset));
|
||||||
if (instance_to_print.object_by_extruder.support != nullptr && !print_wipe_extrusions) {
|
if (instance_to_print.object_by_extruder.support != nullptr && !print_wipe_extrusions) {
|
||||||
m_layer = layers[instance_to_print.layer_id].support_layer;
|
m_layer = layers[instance_to_print.layer_id].support_layer;
|
||||||
|
if (m_layer != nullptr && m_layer->bottom_z() < EPSILON)
|
||||||
|
gcode += m_writer.set_temperature(m_config.first_layer_temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
||||||
|
else
|
||||||
gcode += m_writer.set_temperature(m_config.temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
gcode += m_writer.set_temperature(m_config.temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
||||||
gcode += this->extrude_support(
|
gcode += this->extrude_support(
|
||||||
// support_extrusion_role is erSupportMaterial, erSupportMaterialInterface or erMixed for all extrusion paths.
|
// support_extrusion_role is erSupportMaterial, erSupportMaterialInterface or erMixed for all extrusion paths.
|
||||||
@ -3828,6 +3830,8 @@ std::string GCode::extrude_perimeters(const Print &print, const std::vector<Obje
|
|||||||
m_writer.apply_print_region_config(print.regions()[®ion - &by_region.front()]->config());
|
m_writer.apply_print_region_config(print.regions()[®ion - &by_region.front()]->config());
|
||||||
if (m_config.print_temperature > 0)
|
if (m_config.print_temperature > 0)
|
||||||
gcode += m_writer.set_temperature(m_config.print_temperature.value, false, m_writer.tool()->id());
|
gcode += m_writer.set_temperature(m_config.print_temperature.value, false, m_writer.tool()->id());
|
||||||
|
else if (m_layer != nullptr && m_layer->bottom_z() < EPSILON)
|
||||||
|
gcode += m_writer.set_temperature(m_config.first_layer_temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
||||||
else
|
else
|
||||||
gcode += m_writer.set_temperature(m_config.temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
gcode += m_writer.set_temperature(m_config.temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
||||||
for (const ExtrusionEntity *ee : region.perimeters)
|
for (const ExtrusionEntity *ee : region.perimeters)
|
||||||
@ -3846,6 +3850,8 @@ std::string GCode::extrude_infill(const Print &print, const std::vector<ObjectBy
|
|||||||
m_writer.apply_print_region_config(print.regions()[®ion - &by_region.front()]->config());
|
m_writer.apply_print_region_config(print.regions()[®ion - &by_region.front()]->config());
|
||||||
if (m_config.print_temperature > 0)
|
if (m_config.print_temperature > 0)
|
||||||
gcode += m_writer.set_temperature(m_config.print_temperature.value, false, m_writer.tool()->id());
|
gcode += m_writer.set_temperature(m_config.print_temperature.value, false, m_writer.tool()->id());
|
||||||
|
else if(m_layer!=nullptr && m_layer->bottom_z() < EPSILON)
|
||||||
|
gcode += m_writer.set_temperature(m_config.first_layer_temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
||||||
else
|
else
|
||||||
gcode += m_writer.set_temperature(m_config.temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
gcode += m_writer.set_temperature(m_config.temperature.get_at(m_writer.tool()->id()), false, m_writer.tool()->id());
|
||||||
ExtrusionEntitiesPtr extrusions { region.infills };
|
ExtrusionEntitiesPtr extrusions { region.infills };
|
||||||
@ -3979,7 +3985,7 @@ std::string GCode::_extrude(const ExtrusionPath &path, const std::string &descri
|
|||||||
double e_per_mm = path.mm3_per_mm
|
double e_per_mm = path.mm3_per_mm
|
||||||
* m_writer.tool()->e_per_mm3()
|
* m_writer.tool()->e_per_mm3()
|
||||||
* this->config().print_extrusion_multiplier.get_abs_value(1);
|
* this->config().print_extrusion_multiplier.get_abs_value(1);
|
||||||
if (std::abs(this->m_layer->height - this->m_layer->print_z) < EPSILON) e_per_mm *= this->config().first_layer_flow_ratio.get_abs_value(1);
|
if (m_layer->bottom_z() < EPSILON) e_per_mm *= this->config().first_layer_flow_ratio.get_abs_value(1);
|
||||||
if (m_writer.extrusion_axis().empty()) e_per_mm = 0;
|
if (m_writer.extrusion_axis().empty()) e_per_mm = 0;
|
||||||
if (path.polyline.lines().size() > 0) {
|
if (path.polyline.lines().size() > 0) {
|
||||||
//get last direction //TODO: save it
|
//get last direction //TODO: save it
|
||||||
|
@ -136,7 +136,7 @@ std::string GCodeWriter::set_temperature(const unsigned int temperature, bool wa
|
|||||||
temp_w_offset += int16_t(get_tool(tool)->temp_offset());
|
temp_w_offset += int16_t(get_tool(tool)->temp_offset());
|
||||||
temp_w_offset = std::max(int16_t(0), std::min(int16_t(2000), temp_w_offset));
|
temp_w_offset = std::max(int16_t(0), std::min(int16_t(2000), temp_w_offset));
|
||||||
|
|
||||||
if (m_last_temperature_with_offset == temp_w_offset)
|
if (m_last_temperature_with_offset == temp_w_offset && !wait)
|
||||||
return "";
|
return "";
|
||||||
if (wait && (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish)))
|
if (wait && (FLAVOR_IS(gcfMakerWare) || FLAVOR_IS(gcfSailfish)))
|
||||||
return "";
|
return "";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user