Even on perfectly 90 degree perpendicular to surface objects, without infill 'extra perimeters when needed' does enforce minimum of 2 perimeters. disabling this option makes proper 1 perimeter part.
On which version of Slic3r are you seeing this behavior?
Can you try 1.2.2-dev?
Are you using Windows?
@curiouspl2, I can't reproduce this.
Can you provide all the usual information, with complete steps for reproducing the issue?
note this model also exposes problem with infill not anchored at perimeters (note how you can even see honeycomb infill from layers below visible in many places on screenshots)
also a note - if external perimeter width is set above 0.8 , then everything is ok .
1.2.2 experimntal is also affected.
just tried 1.2.4 and it's also affected.
something is generally wrong about angle detection logic , because if you slice 25 to 40 fan adapter (rotated properly ofc) from here :
you get 1 perimeter result gcode file, even though it is not perpendicular to the table.
it has not very steep angle, but still it means not whole top layer lies on bottom layer, so
1)extrusion width is different - extrudate is not spreaded 100% like on layer directly below
2)bonding is very weak
3)with just a bit more steep angle effects of 1 and 2 will eventually grow enough to create holes.
'create extra perimeters when needed' theoretically should mediate that but there is no angle threshold.
extrusion compensation (the more angle the more extrudate) could help to gap this problem, and would also solve
but it is not currently implemented and even if it would be implemented - different printers with different nozzle sizes , extruder gear ratios and using various materials have various ability to overextrude - so the minimum angle varies across machine/material and should be tuneable anyway.
Simpler and more robust implementation of extra perimeters. #2395
Good catch there. I reimplemented the detection algorithm for extra perimeters. Your test case now has the extra perimeters in a very limited number of cases, which makes sense. Further testing will tell us if this implementation is correct.
(The geometric definition of the extra perimeters logic is actually tricky since it's ambiguous)