Fix of Negative Feedrates: G1 F-3.84007e+006 stops smoothie

The problem was caused by the gap fill algorithm, which worked
with square extrusion width values as with rounded extrusion widths,
which sometimes lead to negative extrusion cross sections
for high height to width ratios.

The extrusion width logic has been changed to consider the input width
to be the extrusion spacing, not the extrusion width. The change certainly
removed the negative feed rates, but it also certainly increased the gap
fill width to some exent. It needs to be verified now, whether the gap fill
does not extrude too much.

https://github.com/prusa3d/Slic3r/issues/677
This commit is contained in:
bubnikv 2018-02-02 19:48:16 +01:00
parent b4483fdcbd
commit ea9920e5d6

View file

@ -483,8 +483,9 @@ PerimeterGenerator::_variable_width(const ThickPolylines &polylines, ExtrusionRo
if (path.polyline.points.empty()) {
path.polyline.append(line.a);
path.polyline.append(line.b);
flow.width = unscale(w);
// Convert from spacing to extrusion width based on the extrusion model
// of a square extrusion ended with semi circles.
flow.width = unscale(w) + flow.height * (1. - 0.25 * PI);
#ifdef SLIC3R_DEBUG
printf(" filling %f gap\n", flow.width);
#endif