SoftFever / OrcaSlicer

G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.)
https://discord.gg/P4VE9UY9gJ
GNU Affero General Public License v3.0
7.1k stars 837 forks source link

Inner/Outer/Inner wall order prints some outer walls last, causing poor dimensional accuracy #6789

Open Snelso91 opened 1 month ago

Snelso91 commented 1 month ago

Is there an existing issue for this problem?

OrcaSlicer Version

2.2.0-beta

Operating System (OS)

Windows

OS Version

Windows 10

Additional system information

No response

Printer

Bambu Lab P1S

How to reproduce

Open attached 3mf project and slice.

Actual results

Look at layers 2-17. On these layers, the 4 circular holes and the central large rectangular hole all have their outer walls (orange) printed last, after all the inner walls have already been printed. This causes all 5 of these holes to be printed ~0.2mm undersized (diameter) due to their outer walls being pushed out by the inner walls, just like with Inner/Outer wall order. This issue occurs with both Arachne and Classic modes. Outer walls printed last

If you change the wall order from Inner/Outer/Inner to Outer/Inner and re-slice, the problem goes away - the outer walls are correctly printed first and the dimensions come out correct. Outer walls printed first

Expected results

What I expect to happen when using Inner/Outer/Inner (IOI) wall ordering, is that outer walls should NEVER be printed after any directly adjacent inner walls, in order to maintain good dimensional accuracy and surface finish just like with Outer/Inner (OI) wall ordering. This expectation is reinforced by the wall order tooltip that describes IOI as being recommended over OI in most cases because it is supposed to have the benefits of better dimensional accuracy and surface finish like OI, but with the additional benefit of hiding seams better.

If for some reason the wall ordering algorithm cannot produce a result that does the above, then there should be an automatic fallback to use OI wall ordering on that particular layer/area of the layer.

If for some reason falling back to Inner/Outer (IO) is preferred, then I suppose there could be a user-selectable fallback option to choose between either OI or IO. However in my opinion, falling back to IO makes little sense in most cases since it seems like IOI is supposed to be like a better/improved OI, and by falling back to IO you would lose out on the benefits that you would expect from OI or IOI.

Project file & Debug log uploads

Bambu Lab P1S Camera Bracket.zip recent logs.zip

Checklist of files to include

Anything else?

No response

DonutCables commented 2 weeks ago

I've also run into this same issue. In my case, on layer 49 of my file the outermost wall of the part is printed last compared to the inner walls on most of the part. It seems to happen when there's no single inner wall around the entire part due to other geometry in the part causing smaller wall sections. I've attached the project 3mf and gcode I'm seeing this happen with. example_file.zip

justr0st commented 2 weeks ago

Was about to post the same issue, but it exisists already. The internal hole dimensions are inconsistent when compared to the external ones because of this.