Disabling acceleration control persists single M204 command in gcode #795

This commit is contained in:
SoftFever 2023-04-22 09:48:14 +08:00
parent 3ea5a75388
commit 40ecd8c831

View file

@ -2824,15 +2824,12 @@ GCode::LayerResult GCode::process_layer(
//BBS //BBS
if (first_layer) { if (first_layer) {
//BBS: set first layer global acceleration
if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) { if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) {
double acceleration = m_config.initial_layer_acceleration.value; gcode += m_writer.set_acceleration((unsigned int)floor(m_config.initial_layer_acceleration.value + 0.5));
gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5));
} }
if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) { if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) {
double jerk = m_config.initial_layer_jerk.value; gcode += m_writer.set_jerk_xy(m_config.initial_layer_jerk.value);
gcode += m_writer.set_jerk_xy(jerk);
} }
} }
@ -2853,16 +2850,14 @@ GCode::LayerResult GCode::process_layer(
gcode += this->unretract(); gcode += this->unretract();
} }
} }
//BBS: reset acceleration at sencond layer // BBS: reset acceleration at sencond layer
if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) { if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) {
double acceleration = m_config.default_acceleration.value; gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5));
gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5)); }
}
if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) { if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) {
double jerk = m_config.default_jerk.value; gcode += m_writer.set_jerk_xy(m_config.default_jerk.value);
gcode += m_writer.set_jerk_xy(jerk); }
}
// Transition from 1st to 2nd layer. Adjust nozzle temperatures as prescribed by the nozzle dependent // Transition from 1st to 2nd layer. Adjust nozzle temperatures as prescribed by the nozzle dependent
// nozzle_temperature_initial_layer vs. temperature settings. // nozzle_temperature_initial_layer vs. temperature settings.
@ -3617,7 +3612,8 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string
//BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value.
if (!this->on_first_layer()) { if (!this->on_first_layer()) {
// reset acceleration // reset acceleration
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); if (m_config.default_acceleration.value > 0)
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5));
if(m_config.default_jerk.value > 0) if(m_config.default_jerk.value > 0)
gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); gcode += m_writer.set_jerk_xy(m_config.default_jerk.value);
} }
@ -3648,7 +3644,8 @@ std::string GCode::extrude_path(ExtrusionPath path, std::string description, dou
//BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value.
if (!this->on_first_layer()){ if (!this->on_first_layer()){
// reset acceleration // reset acceleration
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); if (m_config.default_acceleration.value > 0)
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5));
if(m_config.default_jerk.value > 0) if(m_config.default_jerk.value > 0)
gcode += m_writer.set_jerk_xy(m_config.default_jerk.value); gcode += m_writer.set_jerk_xy(m_config.default_jerk.value);
@ -4217,28 +4214,19 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string
// SoftFever // SoftFever
if (this->on_first_layer()) { if (this->on_first_layer()) {
if (m_config.default_acceleration.value > 0) { if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) {
auto accel = (unsigned int)floor(m_config.initial_layer_acceleration.value + 0.5); gcode += m_writer.set_acceleration((unsigned int)floor(m_config.initial_layer_acceleration.value + 0.5));
if (accel > 0)
gcode += m_writer.set_acceleration(accel);
} }
if (m_config.default_jerk.value > 0) { if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) {
auto jerk = m_config.initial_layer_jerk.value; gcode += m_writer.set_jerk_xy(m_config.initial_layer_jerk.value);
if (jerk > 0)
gcode += m_writer.set_jerk_xy(jerk);
} }
} } else {
else if (m_config.default_acceleration.value > 0 && m_config.travel_acceleration.value > 0) {
{ gcode += m_writer.set_acceleration((unsigned int)floor(m_config.travel_acceleration.value + 0.5));
if(m_config.default_jerk.value > 0) }
{
auto jerk = m_config.travel_jerk.value; if (m_config.default_jerk.value > 0 && m_config.travel_jerk.value > 0) {
auto accel = (unsigned int)floor(m_config.travel_acceleration.value + 0.5); gcode += m_writer.set_jerk_xy(m_config.travel_jerk.value);
if(jerk > 0)
gcode += m_writer.set_jerk_xy(jerk);
if(accel > 0)
gcode += m_writer.set_acceleration(accel);
} }
} }
// if a retraction would be needed, try to use reduce_crossing_wall to plan a // if a retraction would be needed, try to use reduce_crossing_wall to plan a