2021-07-20 - nasty slic3r bug

i've just reported a nasty bug in slic3r, when i've noticed that "solid_infill_every_layers = 1" does not generate valid infill for some geometries. for SOME geometries. looks like some weirdo corner case, that (unfortunately) goes unnoticed (no errors, no warnings) unless you explicitly look for it.

when you setup an infill pattern, internal space of an object looks good, eg:

correct infill

the problem starts when you do solid (i.e. 100%) infill. then you may get this:

missing infill

without center part, the print is doomed to fail.

why did it go unnoticed for such a long time? well – it's not a mainstream to print solid infill for every layer. i also do it only because i want to make sure print is watertight and as rigid/strong as possible (yes – i know that perimeters are more important…).

more over the bug appears only on some geometries configuration. for instance i used following openscad code to generate the simple geometry, that caused this issue:

h = 3;
eps = 0.1;
rx = 11;

module screw_holes_()
{
  n=10;
  for(i=[0:n])
    rotate(i*[0, 0, 360/n])
      translate([rx+2+2+3.5/2, 0, -eps])
        cylinder(r=3.5/2, h=h+2*eps);
}


difference()
{
  cylinder(r=rx+2+2+3.5+2, h=h);
  screw_holes_();
}

it is enough to change from 11 holes to 10… and the problem is “gone”. similarly relative positioning of certain elements is critical… and yet it's already 2nd time i hit this bug this year. fortunately this time i managed to narrow it down and narrow to sth manageable. i hope slic3r team will fix this issue in next release. for the time being, i've just increased perimeters to sth absurd for the model, i.e. 60. ;) this solved the issue, as now only “perimeters” are generated and there is no “infill” that can be an issue. hacks. hacks everywhere… ;)

EDIT 2021-07-22

i've also reported this bug to PrusaSlicer. let's see who will provide the solution first.