daid / LegacyCura

Read this, it's important! NEW CURA DEVELOPMENT IS HAPPENING AT https://github.com/Ultimaker/Cura, this is the Cura 15.04 archive. Cura 2.1 and newer is on the Ultimaker github.
https://www.ultimaker.com/pages/our-software
584 stars 429 forks source link

FR: small holes #128

Closed jgeerds-zz closed 10 years ago

jgeerds-zz commented 12 years ago

It would be great if a near-future release of Cura would render small holes (especially vertical holes) properly as small holes. With Cura RC4, everything under 2mm is completely lost (smeared in), and everything from 2-4mm is randomly too small (based on perfect extruder calibration and reasonable print speed).

Do you think you can fix the hole algorithm before the 1.0 release?

daid commented 12 years ago

Maybe stretch will help? http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge_Stretch

jgeerds-zz commented 12 years ago

that seems to be the solution... my concern is just it would be another thing that is either turned on by default (and users will complain why their holes are bigger now while others are happy that they are exactly the size they should be), or that we are clogging the pref pane with yet another item.

my vote would be turn on by default, without access to the parameters of stretch, and see what happens

daid commented 12 years ago

"my vote would be turn on by default, without access to the parameters of stretch, and see what happens" And potentially mess up prints for other users?

Actual holes coming out smaller then expected has multiple causes:

jgeerds-zz commented 12 years ago

Please have a look at https://picasaweb.google.com/lh/photo/8mIowGnYkci0iWLLf8ajATIYJXjTqlQYmaNWFtjfw8o?feat=directlink

Left side is slic3r 0.8.2: all 3 holes (1, 2 and 4mm) came out with the exact size, spot on. Right size is Cura RC4, the 4mm hole is 2x1.5mm, and the 1 and 2mm holes are completely gone (due to no stretch, and lack of inland retraction).

Printed on the same day, same FW, same temp, same filament, same printer, same nozzle, same layer hight. almost the same STL (hole dimensions haven't changed)

daid commented 12 years ago

Slic3r has some small hole compensation code, I've read about it somewhere. Not sure what it does.

Do you have a GCode preview of both those prints? I would like to know if they follow the same path but use different extrusion amount or speeds. Or if Slic3r just generates a wider path.

jgeerds-zz commented 12 years ago

Yes, I think the slic3r small hole compensation finally made it into the 0.82 release. and I have to say that it is working incredible well. I had never seen a 3D printed 1mm hole until yesterday. This is not a priority, but if some of the same magic would come to Cura, it would be great. (I still can't use slic3r for production purposes, since the thin wall issue is horrendous, and Cura does a predictably better job with thin walls.)

I can't show you a slic3r preview, since the slic3r code is unpreviewable.

jgeerds-zz commented 12 years ago

I think the catastrophic infill of small holes within SF/cura is caused by a combination of factors:

  1. 15% outline/infill overlap works great on sculptures, which are mostly "empty" inside. on flat, mechanical parts, small holes (i.e. screw holes) surrounded by solid infill, these 15% get pushed into the hole, because it has nowhere else to go. even lowering it to 2% doesn't help much.
  2. the holes are pretty highres (exported from alibre design), causing heavy buffer underruns while printing: the print head stutters around, bleeding plastic where it should be moving, and therefore depositing plastic where it shouldn't, and pushing even more plastic into the holes, and making ugly ridges around the holes (you can test this with a 2mm flat square and a bunch of 2-4mm holes in it: i.e. 0.2mm layers and 0.8-1mm top/bottom thickness.
  3. holes aren't treated as lakes (similar to islands), but part of the inland, meaning that each hole isn't finished first (loop&outline), but loops and outlines are printed separately, causing more problems that they could. maybe the island detection could be expanded to detect "lakes" and treat them the same way as small islands are treated.