Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Variable Line Width #5933

Closed
Madau3D opened this issue Jun 24, 2019 · 4 comments
Closed

Variable Line Width #5933

Madau3D opened this issue Jun 24, 2019 · 4 comments
Labels
Type: New Feature Adding some entirely new functionality.
Milestone

Comments

@Madau3D
Copy link

Madau3D commented Jun 24, 2019

I've been using Cura for about a year now and I've been annoyed by a slicing / tool-path situation. When printing thin walls that don't divide neatly by the selected nozzle diameter or line width, the slicer generates g-code where the nozzle makes a tiny zig-zag movement to fill that space. This significantly increases print time and is very inefficient use of machine run time. If it's really bad, I'll either modify my design to get a wall thickness that the machine can print in even lines, or fudge the line width in Cura (or both) until the print time comes down. This can reduce run time by hours depending on the model.

What I suggest is create a variable line width feature. When enabled, the user could specify a min/max percentage of nozzle diameter, and the slicer could then decide what line width would best fill an area. This would make setting perimeter thickness more intuitive as well. If I am printing with a 0.6mm nozzle, but I want a 2mm wall thickness, currently the slicer has to chose to make the wall thinner (3 perimeters) or thicker (4 perimeters) but the user would not get a 2mm wall in either case. With variable line thickness the slicer could decide to print a 0.67-68mm line width (I realize the wall thickness isn't an exact multiple of the line thickness as there is some overlap between the lines in a layer) and achieve the specified wall thickness.

I've never tried printing a line width narrower than my nozzle diameter, but I regularly print lines at 125% of nozzle diameter with great results. With this feature, one could specify, as a hypothetical example, a line width in the range of 95% to 125% of nozzle diameter.

This could be taken a step further, and imagine in the case of printing a narrow tapered features. The slicer could taper the line width as the the profile narrows to achieve a cleaner part. There also could be settings for the line width range of inner walls, outer walls, infill and supports- top and bottom skin layers, etc... Thinner line widths for supports and infill could be of great benefit for reducing filament consumption and possibly making supports easier to remove.

@Madau3D Madau3D added the Type: New Feature Adding some entirely new functionality. label Jun 24, 2019
@smartavionics
Copy link
Contributor

@Ghostkeeper
Copy link
Collaborator

Cura has a method to generate lines with variable line width. The problem is pretty hard in general though and we've found that pretty much every solution that works to fix one case will break it for another.

Our current solution is documented in broad strokes here: https://github.com/Ultimaker/CuraEngine/blob/master/docs/generating_paths.md#filling-small-gaps

We have made corrections to make this solution work better in many cases in the 4.2 release, which should take away 90% of the problems in this department. We are also working on a wholly different approach of adjusting the wall line widths, but that won't be realised for some time (a paper is being written about it).

@Ghostkeeper
Copy link
Collaborator

We're working on an alternative solution that generates actual variable line widths for the normal contours: Ultimaker/CuraEngine#1210
This is a huge project though, so it won't get done in 4.7 yet.

@Ghostkeeper
Copy link
Collaborator

This is implemented by Ultimaker/CuraEngine#1210.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: New Feature Adding some entirely new functionality.
Projects
None yet
Development

No branches or pull requests

3 participants