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.41k stars 1.88k forks source link

Implement Cura's Ironing Feature for a more smoother surface finish #458

Closed m-Th closed 3 years ago

m-Th commented 6 years ago

Version

Slic3r Prusa Edition Version: 1.36.2-prusa3d-win64 Build: Slic3r-1.36.2-prusa3d-win64-full-201707281218 Operating System: MSWin32 System Architecture: MSWin32-x64-multi-thread Windows Version: Microsoft Windows [Version 6.1.7601]

Behavior

Please implement a feature which is to be found in the latest Beta of Cura 2.7. In few words, the nozzle travels the top surfaces (pre)heated but without extruding. This allows for a smoother finish.

See it here in action: https://www.reddit.com/r/3Dprinting/comments/6rkzm7/top_surfaces_using_cura_27s_ironing_feature/

The subthread which speaks about this is here (it is called there neosanding): https://www.reddit.com/r/3Dprinting/comments/6r35eq/cura_27_beta_is_here/dl28upo/

The general discussion about Cura 2.7 (from which the above subthread is took out): https://www.reddit.com/r/3Dprinting/comments/6r35eq/cura_27_beta_is_here/

Cura's 2.7 release notes: https://ultimaker.com/en/blog/50492-introducing-cura-27-beta

Is this a new feature request? yes

Sebastianv650 commented 6 years ago

We had that once back in time: #65 I think while it seems to work, it's more a nice to have feature than something realy important because it's only aplicable to horizontal top surfaces. As soon as it's tilted by 0.0001°, it's not useful any more. Real world things tend to have non-horizontal planes.

m-Th commented 6 years ago
  1. We had??? (past tense?)
  2. Hmmm... depends. Functional parts many times have horizontal surfaces.
Sebastianv650 commented 6 years ago

Non-native speaker ;) Intended meaning: We already had that topic some time ago.

Matts-Hub commented 6 years ago

@Sebastianv650 I print for my 3D Hubs customers just about every day, and I'd say that about 90% of the prints I do have a big horizontal surface. I think this would be really useful to implement :)

Matts-Hub commented 6 years ago

Please see here https://www.facebook.com/groups/Prusai3users/permalink/795687387282411/ for expressions of interest

fiveangle commented 6 years ago

With Linear Advance I get top surface quality as good as those "neosanded" pictures :) [update: just saw pic on FB - that is insanely flat, but not very accurate, which is a reasonable trade-off if finish is what's important for a specific print]

I suspect this feature could be a blessing and a curse (I could imagine this completely ruining prints with PETG if not dialed in perfect, plus what about cooking the filament in the nozzle on huge top surface "irons" ? I will try myself before beleiving these "pictures on the Internet" ;)

Matts-Hub commented 6 years ago

I haven't gotten around to doing the lin advance update yet, I think now's a good time to do it and compare the results :) I'm not sure what the results would be like with PETG, what makes you think it could ruin the print?

With regards to cooking filament - it does still extrude 10% by default. I'm not sure if that would be enough to stop it cooking though. Personally I've left filament hot in the nozzle for up to half an hour with no "cooking" effects.

Matts-Hub commented 6 years ago

Some high resolution comparison pictures below. The bigger part is printed as usual, with no linear advance (haven't updated yet). The smaller disk was printed with ironing in cura. You can see the massive difference - it creates a uniform textured matte surface, which I don't think would be possible to get any other way

img_20170810_075502 img_20170810_075907 img_20170810_075516 img_20170810_075534

Matts-Hub commented 6 years ago

@bubnikv What are your thoughts on this? To me, the surface finish from an ironed print looks very similar to the textured surface that you get from your new powder coated PEI that you use to print the MK2S parts. I think it would be awesome if you could have both the top and bottom surfaces with a similar texture!

daktylus commented 6 years ago

I get similar smooth top layer finishes just by decreasing the top layer speed down to 5-15 mm/s for the print.

Matts-Hub commented 6 years ago

It's not a smooth surface though. It's a textured surface.. It leaves behind a matte finish which makes the individual extrusion lines impossible to see

bubnikv commented 6 years ago

I would like to have this feature in Slic3r, but there are currently more pressing issues, and there is also a lot of work to be done, like a continuous refactoring to get rid of the unmaintained Perl programming environment. So this feature is not at the top of my list.

On Mon, Aug 14, 2017 at 12:01 AM, Quintox303 notifications@github.com wrote:

It's not a smooth surface though. It's a textured surface.. It leaves behind a matte finish which makes the individual extrusion lines impossible to see

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/prusa3d/Slic3r/issues/458#issuecomment-322070252, or mute the thread https://github.com/notifications/unsubscribe-auth/AFj5I6bDXzimSIf-4vL9_hxG-tYj1rcTks5sX3I_gaJpZM4OugTD .

jslick007 commented 6 years ago

I print only functional parts across 2 Prusa MK2s and a MakerBot Rep 2. This feature would be awesome along with separate "designs" for top/bottom layers. Example, Hilbert Curve for top layers, Rectilinear for bottom.

m-Th commented 6 years ago

Example, Hilbert Curve for top layers, Rectilinear for bottom.

Definitely. I certainly can use this.

Ok, perhaps it can be done with the https://github.com/prusa3d/Slic3r/issues/378 but there is much more work and more confusing to achieve this.

m-Th commented 6 years ago

Neosanding 2.0: https://all3dp.com/neosanding-3d-printing-technique-smooths-your-flat-surfaces/

bubnikv commented 6 years ago

Maybe you can implement the Neosanding 2.0 in Slic3r just by reducing the top infill extrusion width 4x? We are going to test it.

On Mon, Sep 25, 2017 at 9:02 AM, m-Th notifications@github.com wrote:

Neosanding 2.0: https://all3dp.com/neosanding-3d-printing-technique-smooths- your-flat-surfaces/

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/prusa3d/Slic3r/issues/458#issuecomment-331793787, or mute the thread https://github.com/notifications/unsubscribe-auth/AFj5IwCHO_XrawE6IEa1kexVgUv9fT5Hks5sl0_tgaJpZM4OugTD .

m-Th commented 6 years ago

Make sure to publish this ratio for the user – surely it depends on filament used and situation („more” or „less” neosanding).

Also, the same stands for (perhaps) some temperature variation (few degrees above / below).

fiveangle commented 6 years ago

Maybe you can implement the Neosanding 2.0 in Slic3r just by reducing the top infill extrusion width 4x? We are going to test it.

Neat hack ! :)

m0n5t3r commented 6 years ago

separate extrusion width for the top layer already exists and has been there for a long time, it's at print settings -> advanced -> top solid infill and it does give you that smooth look with certain filaments and speeds

I think the real hurdle to smooth top layers is the path planner now, to be honest; my setup got better since I posted the image in #65, so in Colorfabb's economy PLA it looks like this now (phone slightly misplaced focus and slight issues with linear advance notwithstanding, M3 nut for scale):

image20171207_150725244p

(and yes, it's of rather limited use, since most things don't have flat tops) (also pinging https://github.com/prusa3d/Slic3r/issues/475#issuecomment-327390981 since it asks for configurable extrusion width)

jettoblack commented 6 years ago

I’d like to put in another vote for this, neosanding is the only reason I still go back to Cura sometimes. It works great on PLA and PETG too.

kelchm commented 6 years ago

This would be great to have. If I have some time in the next few weeks I may take a look at implementing this functionality and creating a PR.

supermerill commented 6 years ago

I made a first draft. slicer_smooth infill_smooth

You need to decouple the top&bottom infill (#475) to set only the top one with the smooth feature. internally, It's a rectilinear then an other rectilinear (flipped 90°) with two time more lines and almost no extrusion.

Should i have to do the second one also over the perimeters?

code : https://github.com/supermerill/Slic3r/tree/smooth_top_infill

rongith commented 6 years ago

Have an error when exporting gcode from the joined file. The program quit. image 03033-r06d - I3D-Conduit.zip I dismissed the use of brim to the use of mickey mouse pads. It is not important to neosand that pads but the slic3r see that pads as flat surface. It seems the code don't like neosanding first layer. You could try to solve the bug and the first layer can be neosanded. Or it could be discarded to neosand first layer but that create a new case to manage (new option to tick). I already said on prusa forum a comment about it: https://shop.prusa3d.com/forum/improvements-f14/need-some-testers-for-slic3rpe-neosanding-t13953.html#p63836

supermerill commented 6 years ago

@rongith try with this: https://mega.nz/#!81J0lIyK!Vtg2QHjKF4EDRTkfsifQpugb8OCzkutMxn8XN2Dvyoo

i don't have any problem with this version, and no first layer is neosanded.

rongith commented 6 years ago

@supermerill , managed to export gcode. Thank you. gcode not yet printed .

KDPate commented 6 years ago

I've been eagerly awaiting this. I just did a quick test print, though with no 1st layer areas. It worked great. It would be nice to have control over the speed (and maybe extrusion rate?) of the smoothing pass. Thanks for this! I hope to see it in the base code soon.

KDPate commented 6 years ago

One strange thing: it irons the whole layer if any part of it is the top layer. Or rather it probably irons all solid fill areas, which ends up causing causing some weird behavior depending on the shape of the solid fill (such as a raised ring around the edge of a top surface).

daktylus commented 6 years ago

I compared it on PLA, top layer speed 40mm/s. It looks nearly identical. I can't even make a proper picture which shows the differene. The neosanded layer loosk slightly more shiny. Could also be the same. Maybe I misused your Slicer. Do I have to activate the neosanding somewhere?

KDPate commented 6 years ago

Yes, it's not easy to find. Under Infill, you have to change the top fill pattern to "smooth".

daktylus commented 6 years ago

It worked. Printed in PLA (dasFilament), with Linear Advance, top layer speed: 40 mm/s . Neosanded Surface is smooth and more glossy. Normally, that filaments gives a quite matt surface finish.

Left two pieces normal, right one with neosanding.

img_2439 img_2441 img_2443

bubnikv commented 6 years ago

@supermerill Thanks for your great effort. Would you please create a pull request?

There is one thing I believe you did not do, and which makes sense to add: Slic3r extends the top surfaces inwards into an object by a fixed amount. By the way, the extension of the surfaces inwards aka anchoring of the full infill surfaces is the reason of https://github.com/prusa3d/Slic3r/issues/668. It really makes sense to complicate things and to do the neosanding over the visible surface only, not over the extended surface.

supermerill commented 6 years ago

@bubnikv My changes are made vs a 18/1/4 commit. Before making the pull request, I move my change to the current master or an other commit? Do you prefer one pull request by modification or a pull request for the whole package? (gyroid infill, ironing, only 1 perimeter top)

For the Visible thing, it's possible. All my modification use is_external() && surface_type == stTop.

I will do the pull request this evening.

daktylus commented 6 years ago

@supermerill
Can I make some wishes for the implementation? I think the feature is quite hard to find and "smooth" doesn't describe the routine properly (also using 10 mm/s on top layer gives you a SMOOTH finish). I think a seperate checkbox with some label like: "Use neosanding on top layer" or "hypersmooth top layer" would be much clearer.

supermerill commented 6 years ago

@ daktylus the other names are short. I can put "neosanding" or "ironing".

KDPate commented 6 years ago

Yay, ironing! Speed control for the ironing pass?

supermerill commented 6 years ago

Maybe in v2, when the gui conversion will be over. Currently it's the infill speed.

Googliola commented 5 years ago

Cannot find top fill pattern "smooth". Is iroing still a dev feature or just hidden somewhere I didn't look?

supermerill commented 5 years ago

it's not merged in the main branch, you have to get my fork (~I release a win32 build in the pull request thread~ edit: no more link here as it's not a prusa product, see my repository to get my fork) to use it.

fdev31 commented 5 years ago

It is partially covered by the "layer editing" option... it's not exactly the same but if you add one vertical layer + ensure the top ones are very thin you may achieve a comparable result.

rongith commented 5 years ago

@fdev31. I disagree and your comment should probably be based on your specific usage. I wish Prusa add ironing in its version. @supermerill done a very good job. Per example, you may have many top layers then you can't simply change layer height manually. Final result without ironing is sensible to material. I use a lot a 0.30 layer height where ironing is very effective.

fdev31 commented 5 years ago

Actually this is a way I found to work around it, it's not "replacing" the feature, but still allows very nice top layers... I just change the height of those layers. I completely agree that it depends on the use case and it's some kind of tedious workaround for many models. A one click option doing just the right thing is definitely something I would like to see in slic3r too... I just wanted to drop a tip in case it helped someone... with very thin top-most layers I get excellent results too, and it works on non-flat surfaces as well...

probonopd commented 5 years ago

I wish Prusa add ironing in its version.

:+1:

rongith commented 5 years ago

@fdev31, I was afraid you dismissed the usefulness of that feature. I will try to remember your tip if it simply solves a case and supermerill release doesn't work anymore.

probonopd commented 5 years ago

This is an example of a part that could benefit from the feature:

Source: https://www.reddit.com/r/prusa3d/comments/9x95kt/is_there_any_way_to_make_the_top_of_flat_prints/

Murloc992 commented 5 years ago

Any news on this? I really loved this feature..

KyleMaas commented 5 years ago

I would love to see this feature implemented as well.

3dprintingrookie commented 5 years ago

I'm waiting for this feature, please add it!

I print a lot of models with flat tops, especially functional prints, logos, and phone cases. Ironing would really help a lot with this!!!

cyxlops commented 5 years ago

When can we get this!? Why won’t the slic3r developers reply and are completely ignoring this topic?

Matts-Hub commented 5 years ago

This is already a part of supermerril's branch, it just needs to be ported across

cyxlops commented 5 years ago

When will they port it? Supermerril had this feature for a while and they didn’t bother porting it. It would be a nice gesture for them to acknowledge his hard work and implement his feature. It’s only fair.