Ultimaker / Cura

3D printer / slicing GUI built on top of the Uranium framework
GNU Lesser General Public License v3.0
6.13k stars 2.07k forks source link

Fatten inner perimeters to replace skin where possible #18492

Open richfelker opened 7 months ago

richfelker commented 7 months ago

Is your feature request related to a problem?

In printing models with sloping surfaces, a lot of print time is spent on skins to maintain the requested top/bottom thickness. Even with small top/bottom width settings, a travel to each point where skin was needed is still incurred, and adds up to a lot of time.

Describe the solution you'd like

With Arachne allowing variable line width on perimeters, it should be possible to do a final pass over the perimeters to detect thin skin regions next to them, and, if thin enough, merge these regions with the inner perimeter(s) by increasing their width and offsetting the toolpath inward. This would allow all the necessary material for shell integrity to be deposited during the N perimeter loop passes, with no need to go back and add skin except where there are "real" near-horizontal tops/bottoms.

Describe alternatives you've considered

Some of the cost of skins on sloped surfaces can be reduced by tuning skin removal, but that's always at the expense of part integrity/strength; it introduces thin points in the shell or even leaves holes to the infill region in the worst case.

Affected users and/or printers

All

Additional information & file uploads

No response

richfelker commented 7 months ago

An easier approach to achieve roughly the same thing without an extra pass and without access to the skin regions might be to offer a setting to increase inner wall widths (maybe outer/all?) proportional to the wall slope (same value used in overhang calculation for slowdown on overhangs, etc.) up to some limit. This would naturally consume the region that would otherwise become skin before the skin even gets generated.