slic3r / Slic3r

Open Source toolpath generator for 3D printers
https://slic3r.org/
GNU Affero General Public License v3.0
3.35k stars 1.29k forks source link

Make sure first (bridging) solid layer above sparse infill is properly anchored #1815

Open alranel opened 10 years ago

alranel commented 10 years ago

In #1792 @whosawhatsis writes:

Bridges, especially "internal bridges" (first solid layer over sparse fill) should use the spacing of the infill pattern to determine how much anchoring length it needs (if not actually use the infill pattern to always end the threads while touching plastic rather than over empty space) to make sure the ends are properly anchored. In the case of zero infill, this would mean that bridges always continue until they touch a perimeter, which is obviously necessary for them to work at all in that case.

whosawhatsis commented 10 years ago

BTW, this also goes for internal overhangs, which should be bridging from the perimeter to the first pillar of infill material it intersects (or to the opposite perimeter, in the case of printing with zero infill). Skeinforge always continued the solid infill lines until they hit a perimeter for all layers, which always seemed unnecessary and could ruin the aesthetics of pieces intentionally printed hollow (for instance, to put a light inside), but it also made it possible to print certain models with zero infill that fail miserably to do so in other slicers. Ideally, any solid infill printed over non-solid infill should use bridging speed and flow rate to bridge to whatever perimeter/infill feature it hits first to anchor the end, and not leave it hanging out in space to droop or curl.

It might be nice if the empty volume could be calculated as a maximum fill volume so that, for example, using a bridge flow multiplier greater than 2 with wouldn't over-fill a cavity that is only one layer deep, though that would definitely be considered an edge case.

pannelapp commented 10 years ago

Hi. I also read Issue ((#1792: Wrong speed setting in first layer on infill.))

My problem with this layer is that is uses a lot of plastic. The nozzle goes dry, it can't produce so much plastic for large areas. I will have to turn down speed a lot on bridging. Then I can't control real bridging other places.

It will be good to adjust the speed with bridge-speed, but I really think there should be a seperate speed adjustment for this layer. A width-adjustment for bridging would also be nice, since it's because of the width it uses so much plastic.

Regards Arvid

lordofhyphens commented 8 years ago

Related to #3333

DrLex0 commented 8 years ago

Bumping this because it really needs to be fixed. Recently I printed the Luxo Jr. model without babysitting it all the time, and I wondered why the surface of the base had all those ugly bumps. Now I printed another model with a large horizontal surface over a sparse hex infill, and I saw the problem first-hand. A good look at the layers says it all: issue1815 It's a good thing the printing bed has springs, because especially with a dual nozzle printer, the nozzles crash into the piles of curled-up plastic and this can only not end up in total disaster if something gives way. A heated nozzle is usually able to plough through the bumps, but if the second nozzle happens to be cold, the crashes are pretty hard, and anything being printed by the first nozzle is of course also pushed upwards while the bed is pushed down and/or the nozzle assembly is pushed up.

Some workarounds:

  1. Use way too much infill,
  2. close your eyes and ears while the nozzles are wreaking havoc, and use at least 5 top layers to have a good chance that the final layer will cover up all the mess of the previous ones,
  3. add hollow spaces to the model to force perimeters at the right locations (basically, design the infill myself,)
  4. heat up the unused nozzle to help it flatten the piles of plastic.

I'm not sure what is the best way to tackle this. Simplest seems to be to extend the solid layer boundaries until they are anchored by the underlying layer. More efficient would be to start printing extra contours a few layers before the solid layer, so there is an anchor point when needed without having to extend the solid layer. However, this is not trivial as these extra contours would suffer from the same problem, unless they are extended all the way down.

lordofhyphens commented 8 years ago

I suspect the correct solution here would be to extend solid infill out to the nearest edge of the infill pattern.

alranel commented 7 years ago

@DrLex0, any possible alternative to that behavior triggers more issues recursively. Actually, that issue never affected my prints in several years of printing and nobody else reported curlying plastic. Unsupported strings don't usually curl up, they just fall down in the hole below them.

DrLex0 commented 7 years ago

ABS has more of a tendency to curl upwards when the nozzle makes a U-turn with nothing to support the turning point. Even if this only causes a small bump, the problem can become pretty bad when doing a single-extrusion print on a dual-extruder printer with two nozzles on one carriage. The cold nozzle pushes down the entire bed whenever it passes over a bump, and this causes the active nozzle to produce another bump. This effect can keep amplifying itself with as a result really ugly top surfaces, or the print failing entirely. In the meantime I have learnt to just unscrew the unused nozzle for prints where there is a risk of this happening. Even if there are bumps in the first infill layer(s), the hot nozzle will mostly iron them out in the next layers.

Still, we need a solution for the first solid infill layer having too little support, even if nobody has come up with a perfect idea so far. It does not take unusually low infill settings to trigger the problem with a model as simple as this: InfillSupportTest.stl.zip

reddtoric commented 3 years ago

Another angle showing same issue: Edge issue 1 next layer up: Edge issue 2

dxstp commented 3 years ago

@lordofhyphens prusa3d/PrusaSlicer#569 PETG also tends to curl up. If the nozzle touches the curled up thread again, it might detach the model or it sticks to the nozzle, creating a plastic blob. It might be easiest to generate a completely filled layer which touches the perimeters to support the first bottom layer after a sparse infill.

dxstp commented 3 years ago

image PETG material curled up, then melting on the nozzle again and ended up with a plastic blob welding print and nozzle together.

Detail view, just the first bottom solid layer and the previous infill layer (15%): image

dxstp commented 3 years ago

@lordofhyphens If it is hard to find the correct anchorage points for a bridge infill: Is it easier to make the layer below solid like "solid infill every N layer" does?

I tried adding a solid layer just before the bridge layer and the print result was completely smooth. One solid layer won't waste as much material as having to print the entire model with dense infills or risk the entire model go to waste because of nozzle crashes. Please consider this as a cheap solution since this bug is open since 2014 and causes all kinds of problems like bumpy surfaces, lost prints, layer shifts, crash warnings, etc.

sparse_curl_fix2

Trellian commented 3 years ago

@dxstp Could you give a little more detail on exactly what you did there? I keep hitting this problem with PETG and ABS

dxstp commented 3 years ago

@Trellian Sure. Look for the first bridge layer and remember the layer number. Enable the option "Solid infill every N layers" and enter the number of the bridge layer minus 1. In PrusaSlicer, the layer count seems to start with 1, while the option starts counting at 0. So minus 2 might be worth a try if it doesn't work. Of course this introduces a fully solid layer, but if you have only one critical layer in a certain height, the number would be big enough that you'll generate only a couple of extra layers. The alternative would be to configure a height modifier and set the infill rate to 100% just before the bridging layer. PLA seems to be quite tolerant, the hot nozzle usually ploughs trough and the following layers will cover up the mess. Other materials like PETG curl up more. The resulting lumps will cause crashes.

I really wonder why this bug is there for so long without getting much more attention.