PrusaSlicer icon indicating copy to clipboard operation
PrusaSlicer copied to clipboard

Print overhangs using arc-overhang algorithm instead of supports.

Open stmcculloch opened this issue 3 years ago • 9 comments

Is your feature request related to a problem? Please describe. I would like to print overhangs without using support material. I recently designed an algorithm that makes this possible by recursively generating arcs: https://github.com/stmcculloch/arc-overhang

How it looks when it's printed. This is looking up at the bottom of the print from the perspective of the print bed: image I've got ideas for improvements that can be made that will improve quality

Algorithm visualization: gcode_vis3

Describe the solution you'd like I'd like this algorithm to be implemented so that you can choose to print overhanging sections using the arc-overhang algorithm instead of support structures. The only parts that still get support are the following cases:

  1. Unsupported "islands" that have no previous layers underneath to build arcs out from.
  2. Large areas that would result in poor surface quality. User can set the maximum area for arc overhangs, so any polygons larger than that will use normal supports.

Describe how it would work A description is found in the readme of my github repo. I also tried to comment the code extensively so that it can be read.

Describe alternatives you've considered An alternative to this could be conical slicing, but that requires nonplanar layers, and I assume that is way out of scope.

Additional context See the arc-overhang readme for background and context.

PS. I am interested in implementing this myself and submitting a pull request, but I'm not very experienced with C++ and I'm finding it hard to get started. I can build and run the code from source, but I'm a bit lost in understanding the codebase. If there is any documentation for a high-level breakdown of the steps involved in slicing, or any other resources for developers other than the github wiki, I'd love to hear about it.

stmcculloch avatar Dec 04 '22 23:12 stmcculloch

@Godrak is working on an approach, which in some sense is similar to yours. Please @Godrak check this proposal.

bubnikv avatar Dec 05 '22 11:12 bubnikv

@Godrak do you need some help about it?

SphaeroX avatar Dec 18 '22 21:12 SphaeroX

This sounds awesome, I hope it gets implemented! I'd love to play around with it rather than mess with supports even if it just improved some models.

thekindlyelk avatar Dec 21 '22 16:12 thekindlyelk

Hello, This is awesome. However, it's not very nice. May I suggest that this technique could be used as a support to build "old/actual style" support. This could save a lot of time and material as the support doesn't need to start from the build plate anymore. Thanks! Sev

sjauquet avatar Dec 23 '22 13:12 sjauquet

what do you mean by "it's not very nice" personally i think an algorithm that just makes sure there is minimum attachment to other material would work, or instead of making a bunch of arcs, using a single repeating arc with a mask

KTibow avatar Dec 23 '22 16:12 KTibow

I agree that it may not look good (although it depends on opinion, and application), but sometimes it doesn't matter: for functional parts, some sort of "internal" (hidden) overhangs where support would be very hard (or impossible) to remove, or simply top solid layers without infill (even less material than lightning infill, although probably longer print time).

I would really like to have this option.

Tupson444 avatar Dec 23 '22 17:12 Tupson444

Hello @bubnikv I refer to the white example posted by @stmcculloch It can be nice if it's the desired effect, but it's not flat (can pose problems for technical parts). If the intended use of this technique is to save time and support material, it should allow printing of technical part. Hence my suggestion to use this as a base to build traditional type of support on top of it.

sjauquet avatar Dec 23 '22 19:12 sjauquet

there are probably ways to improve the quality, but i think it would be overly complicated to make something that sticks out for support material; remember that this method has some drawbacks too

KTibow avatar Dec 23 '22 19:12 KTibow

I print completely without supports to reduce waste as my printer cannot change filament but can print huge parts very quickly, for my use case this would be a game changer for printing everything in-place.

mdealer avatar Feb 14 '23 17:02 mdealer

Hey, I improved on Steven McCullohs Script and wrote a Post Processing Script for PrusaSlicer to automate the generation Process. Even if it not integrated in the core of the slicer, it enables to print real world overhang objects right now. https://github.com/nicolai-wachenschwan/arc-overhang-prusaslicer-integration

nicolai-wachenschwan avatar Feb 22 '23 20:02 nicolai-wachenschwan

Hey, I improved on Steven McCullohs Script and wrote a Post Processing Script for PrusaSlicer to automate the generation Process. Even if it not integrated in the core of the slicer, it enables to print real world overhang objects right now. https://github.com/nicolai-wachenschwan/arc-overhang-prusaslicer-integration

Hi Nicolai. Does your script work with the current PrusaSlicer development release (2.6 beta2)?

liftbag avatar May 19 '23 07:05 liftbag

If it's a postprocessor it just takes gcode, there shouldn't be any compatibility issues Also https://tryitands.ee/

KTibow avatar May 19 '23 13:05 KTibow

Hey, I improved on Steven McCullohs Script and wrote a Post Processing Script for PrusaSlicer to automate the generation Process. Even if it not integrated in the core of the slicer, it enables to print real world overhang objects right now. https://github.com/nicolai-wachenschwan/arc-overhang-prusaslicer-integration

Hi Nicolai. Does your script work with the current PrusaSlicer development release (2.6 beta2)?

Yep, Just testet it successfully :)

nicolai-wachenschwan avatar May 22 '23 07:05 nicolai-wachenschwan

Yep, Just testet it successfully :)

There is something I'm wrong then.

Post processing scripts setting

Screenshot 2023-05-25 alle 13 39 57

Output on exporting the g-code

Screenshot 2023-05-25 alle 13 39 10

Running from terminal

Screenshot 2023-05-25 alle 13 53 31

macOS Ventura 13.4 on Apple silicon M2 pro PrusaSlicer 2.6.0-beta2

liftbag avatar May 25 '23 11:05 liftbag

@liftbag: the Script is telling you to change your PrusaSlicer Settings: enable Overhang Detection. the Rest of the Error is due to os not being able to handle the input command. (Occurs only when this Error is raised)

nicolai-wachenschwan avatar May 31 '23 08:05 nicolai-wachenschwan

@liftbag: the Script is telling you to change your PrusaSlicer Settings: enable Overhang Detection. the Rest of the Error is due to os not being able to handle the input command. (Occurs only when this Error is raised)

Right, gotcha. It works on beta3 now. Hilbert curve where there was solid linear infill is normal?

Screenshot 2023-05-31 alle 20 10 17 Screenshot 2023-05-31 alle 20 10 45

liftbag avatar May 31 '23 18:05 liftbag

Yes, this prevents warping

nicolai-wachenschwan avatar Jun 04 '23 10:06 nicolai-wachenschwan

Yes, this prevents warping

Ok. Thanks a lot.

liftbag avatar Jun 04 '23 18:06 liftbag

has anyone attempted a C++ implementation

Geobot19 avatar Feb 12 '24 19:02 Geobot19