slic3r / Slic3r

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

Membranes across bottom x layers of unsupported loops/holes. #254

Open cakeller98 opened 12 years ago

cakeller98 commented 12 years ago

Since it' seems the logic would be fairly straightforward, wouldn't it be useful to have an automatic solid-membrane filling (and replacing on that layer) any unsupported loops. We usually build it in to the geometry, but what if it were automatic?

a technique I also use is to create that membrane, then offset the hole and drop a support pillar at the center of the membrane that's smaller than the hole, so it's very easy to pop out the membrane, and the quality of the effective bridging that happens is a bit better becuase it has the extra added support in the middle.

alranel commented 12 years ago

I'm not sure I get what you're saying. Could you provide some drawings/pictures/screenshots to understand it better?

cakeller98 commented 12 years ago

Sure, I'll try and post an image soon.

henrikbrixandersen commented 12 years ago

Something like the thin membrane supporting the hole inside the nut trap in https://raw.github.com/prusajr/PrusaMendel/master/metric-prusa-lm8uu/x-end-idler.stl ?

cakeller98 commented 12 years ago

YES! like that.

It seems simple to me, logically. Any perimeter that is an internal hole that has no material below it within say 1mm?

Seems like a really important robustness feature. Because a floating perimeter ruins a print, and there is a standard solution that we use, a thin membrane, but the thickness of that membrane is more related to the layer thickness, right? not some arbitrary thickness.

cakeller98 commented 12 years ago

Here is what I'm suggesting:

The current slicing doesn't care if perimeters have anything to print on to. But Perimeters printed into thin air are horribly wrong... period. You could say, let's just build support material, but that's a whole other thing, and can be a pain to clean up.

What we usually do is modify the model as in https://raw.github.com/prusajr/PrusaMendel/master/metric-prusa-lm8uu/x-end-idler.stl

So, without the "membrane" across the bottom, we have unsupported perimeters with no adjacent connection to the base.

LEGEND: light blue = solid-layer perimeters light green = solid-layer infill yellow = infill purple = perimeters red-dashed line = actual model orange = membrane

Without Membranes

So if we look below any un-supported perimeter and if there is nothing directly underneath, or within 1 perimeter width underneath, then it would be said to be "unsupported" or a thin-air perimeter.

With Membranes

in fact this could easily apply to exterior un-supported perimeters, if you were to use the "optional" support walls, they would create a bridgeable surface to support that perimeter without wasting oodles of "support' material, as well, it might not require as much cleanup work as well.

\ I realize this illustration is a basic case with a purely vertical and horizontal set of perimeters. however, to generalize to any perimeter whose adjacent in-fill is un-supported too, would be sufficient to prevent membranes across every layer of a steep overhang. additionally, there may be cases where an unusual surface bottom of a model may cause multiple membranes, but I would think these models would be otherwise un-printable without modification anyway.

*\ as a caveat here, it would be important, I think, to consider the case where there is only a small gap below the unsupported perimeter as not being unsupported. for example, one might have stacks of prusa vertices that are offset by 1/2 a layer or something. it might be important to simply look at perimeters with no support within say... 3 layers below, or something. I don't know what the exact distance would be, and would probably depend on layer thickness as well. I currently build manual supports that are 0.3 mm offset from these perimeters which works out pretty well because they break away cleanly and easily... maybe that's a better idea than the membranes, except that membranes can be used in situations where the support cannot. e.g. blind holes etc, where the support wouldnt' be able to extend to the ground?

alranel commented 12 years ago

Thank you for providing such a detailed drawing! I'm not going to work on this soon, but I'm definitely interested in extending support material generation with smart bridging like you described, so I'll leave this one open for ideas and comments until I get a chance to work on it.

triffid commented 11 years ago

I add these membranes to my STLs at the moment. if slic3r added them automagically, that would be awesome, I would no longer need openscad to know my layer height! :D

alranel commented 11 years ago

Yeah, I think it's time to start thinking about this...

lordofhyphens commented 8 years ago

@alexrj Any more ideas on this? This seems to require that layers are aware of the ones below and/or above. As it was drawn, there's no anchor point to create a bridge for a 1-layer support generation w/o colliding into the existing wall.

If we had enough layers between the membrane we could have the a more limited support algorithm go to the nearest flat space perhaps to build up to it?