Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/CuraEngine.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2022-10-28 17:55:17 +0300
committerRich Felker <dalias@aerifal.cx>2022-11-02 16:27:41 +0300
commitd21f20c941e64c94e595cd81042955de3709495a (patch)
treedc6a4daa6b1e5e61568cdd30bb948d41c8a5990f
parentb920618fd5956aa123d9df1c44e5e57b5112d380 (diff)
Never increase speeds/accels/jerks with initial layer slowdown
Fixes https://github.com/Ultimaker/Cura/issues/13681
-rw-r--r--src/GCodePathConfig.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/GCodePathConfig.cpp b/src/GCodePathConfig.cpp
index d96147862..aeb9ab393 100644
--- a/src/GCodePathConfig.cpp
+++ b/src/GCodePathConfig.cpp
@@ -37,9 +37,12 @@ GCodePathConfig::GCodePathConfig(const PrintFeatureType& type, const coord_t lin
void GCodePathConfig::smoothSpeed(GCodePathConfig::SpeedDerivatives first_layer_config, const LayerIndex& layer_nr, const LayerIndex& max_speed_layer_nr)
{
double max_speed_layer = max_speed_layer_nr;
- speed_derivatives.speed = (speed_derivatives.speed * layer_nr) / max_speed_layer + (first_layer_config.speed * (max_speed_layer - layer_nr) / max_speed_layer);
- speed_derivatives.acceleration = (speed_derivatives.acceleration * layer_nr) / max_speed_layer + (first_layer_config.acceleration * (max_speed_layer - layer_nr) / max_speed_layer);
- speed_derivatives.jerk = (speed_derivatives.jerk * layer_nr) / max_speed_layer + (first_layer_config.jerk * (max_speed_layer - layer_nr) / max_speed_layer);
+ double first_layer_speed = std::min(speed_derivatives.speed, first_layer_config.speed);
+ double first_layer_acceleration = std::min(speed_derivatives.acceleration, first_layer_config.acceleration);
+ double first_layer_jerk = std::min(speed_derivatives.jerk, first_layer_config.jerk);
+ speed_derivatives.speed = (speed_derivatives.speed * layer_nr) / max_speed_layer + (first_layer_speed * (max_speed_layer - layer_nr) / max_speed_layer);
+ speed_derivatives.acceleration = (speed_derivatives.acceleration * layer_nr) / max_speed_layer + (first_layer_acceleration * (max_speed_layer - layer_nr) / max_speed_layer);
+ speed_derivatives.jerk = (speed_derivatives.jerk * layer_nr) / max_speed_layer + (first_layer_jerk * (max_speed_layer - layer_nr) / max_speed_layer);
}
double GCodePathConfig::getExtrusionMM3perMM() const