prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.67k stars 1.92k forks source link

Feature request: Smart Bridging and Overhang #4855

Open HeartOfGermany opened 3 years ago

HeartOfGermany commented 3 years ago

Version

any version

Operating system type + version

Any operating system

3D printer brand / version + firmware version (if known)

Any FDM type printer

Behavior

Expected Results

Actual Results

Proposed solution for overhangs and mid air infill

The only problem I had was a tiny bit of sag on the end of each move. Everything else was as smooth as it could be possible. This likely can also be prevented by using a pull move continuing the path for a few mm with higher speed. Since it is hard to write such gcode by hand, I did not rework this. I was already very happy with the result.

Example picture 1:

I used a thin box modifier to increase the perimeter count a lot. If we where able to print with overlap (even just 20%) and have it print these details very slow from the outside to the inside with fan at 100%, this would propably work perfectly fine without support. I mean, why should it not work? Hoewever I cannot modify the thin sheet box modifier to print in the order I want it to. Also the overlap is not possible at all. grafik

Example picture 2 and 3:

This is a testcube I have printed with handwritten gcode. It is just a hollow cube with 2 perimeters and after finishing the last wall I started my code. The result is quite amating, what do you think? In the background a plaster copy of my finger for size comparision.

grafik grafik

As you can see, the lines did sag a tiny bit at the end. This however definitely is fixable to a degree, since I did the wrong pull direction and did not calibrate anything. This was attempt number 7, actually. So I am quite proud, how great this worked.

Related example gcode

; Code start  
; now printing overhang number: 25  
G1 X129.9 Y100.229 Z10 F2000 ; Startpoint and z down
G1 E3.55 F4000 ; Retract inverted
G1 X129.9 Y119.775 E0.2 F400 ; Print bridge up
G1 E-3.5 F4000 ; Retract
G1 X130.9 Y119.775 Z10.1 F2000 ; Pull and Z up
G1 X129 Y115.775 F2000 ; Backtrack
G1 X130.1 Y119.775 Z10 F2000 ; Startpoint and z down
G1 E3.55 F4000 ; Retract inverted
G1 X130.1 Y100.229 E0.2 F400 ; Print bridge down
G1 E-3.5 F4000 ; Retract
G1 X131.1 Y100.229 Z10.1 F2000 ; Pull and Z up
G1 X129.2 Y104.229 F2000 ; Backtrack
; change to top support mode  
   
; now printing upper support layer number: 22 overhang number: 25
G1 X128.7 Y100.229 Z10 F2000 ; Startpoint and z down
G1 E3.55 F4000 ; Retract inverted
G1 X128.7 Y119.775 E0.4 F400 ; Print support layer up
G1 E-3.5 F4000 ; Retract
G1 X129.7 Y119.775 Z10.1 F2000 ; Pull and Z up
G1 X127.8 Y114.775 F2000 ; Backtrack
G1 X128.9 Y119.775 Z10 F2000 ; Startpoint and z down
G1 E3.55 F4000 ; Retract inverted
G1 X128.9 Y100.229 E0.4 F400 ; Print support layer down
G1 E-3.5 F4000 ; Retract
G1 X129.9 Y100.229 Z10.1 F2000 ; Pull and Z up
G1 X128 Y105.229 F2000 ; Backtrack
; change to bottom bridge mode  

Explaination:

This was semi automatic with formulas in excel. I had the following variables to change, to generate different Gcode (no order, because it was a test only):

Is this a new feature request?

You can bet your legs on it. This technology in particular is propably world news!

important sidenote:

As the inventor of this technology I only allow this implementation in open scource projects like Prusaslicer and for myself if I want to do so. I am not kidding.

Please discuss, what you think on this missing feature. I mean, this would solve thousands of ugly prints and make them look almost perfect. There are no limits to implement this.

Thank you for your time, dear reader.

IMightGitIt commented 3 years ago

I have been thinking about the same issue, but have not been sure how to define it. Amazing investigative work! For more standard anglede overhang, like an upside down pyramid, I think it would be really nice if the exterior perimeter was printed slower than normal. Properbly just a separate input setting, which could be a % of the normal print sprint.

HeartOfGermany commented 3 years ago

And of course a slight overlap, to fuse the layers together, if the angle is to steep. Otherwise, it would definitely sag down or not fuse to the other layers well in the process. And if the overlap hinders, to reach the target angle, print another overlapping layer, to reach the goal.

I mean, sometimes I am even wondering, why there are no adaptive perimers. Seems quite obvious to me.

The problem likely is, that 3D printing is not a trend anymore. People can just buy a cheap Ender 3 and for 99% of the things on thingyverse any slicer is enought for most people. Companies are not seeking to invest money, if there is no big request for it. The ecosystem is pretty much built already, which hinders progress quite dramatically.

zsolt320i commented 3 years ago

Very good ideas, i wanted to suggest similar things. I also would add three additional proposal:

  1. To be able to setup/mark manually the bridging and overhangs areas. (in special cases it would be very useful).
  2. To be able to define a distance before starting bridge printing where the bridging speed would have been already applied. E.g. If you would set 1mm, then with 1mm before bridging the printing speed would already slowing down to bridging print speed e.g.: 20mm/s.
  3. To be able to define a distance before starting bridge printing where the cooling speed would have been already applied. E.g. If you would set 1mm, then with 1mm before bridging the cooling speed would already going up to bridging cooling speed e.g.: 80%.

Why it is important? Because it is not possible to apply the bridge settings instantly at the nozzle, mainly at the printers with bowden tube. Actually for me the begging of the bridging is the worst (Ender 3 with bowden tube), because at this moment the material is still flowing like crazy, and the cooling is still not efficient because the high cooling just started.

Pls consider for implementation.

Thank You!