Have our slicers been wrong this whole time?
-
@bot said in Have our slicers been wrong this whole time?:
Should slicers start the path differently? Should they place the nozzle an extrusion-width distance into the path-length, and extrude an amount equal a cylindrical dot of dimensions extrusion width x layer height at a stand still, before continuing on with the path?
Maybe. Your theory is not wrong. But I think this is an area of art as much as science.
I believe that Stratasys begins with the inner wall, then simply steps out to the outer wall without stopping the extrusion (and iirc they have a patent on that). That hides any line start defect.
You would also need to compensate for any material loss or leakage from the nozzle during travel to the start.
I expect that you will find you get blobs that are just as hard to control as the voids you are trying to remove.Extrusion width can easily be 1.0 nozzle width, as well as it can be 1.2 or greater. It could also be less.
@arhi already addressed this.
Yes, the sides of the extrusion can bulge out a tiny amount. This remains a contentious issue among slicer purists. Most slicers do not model the rounded edges when calculating flow. They use a more theoretically perfect rectangular prism extrudate model. This is the model I wish to breakdown and understand first.
Not can, it does. The reality of what is happening is not contentious, the trouble of using the slightly more complicated maths when you end up needing to rewrite lots of your code to do so, is the contentious element.
This is however also not at all relevant to your point.discrete extrusion would in theory be much more precise as you would be able to properly control amount of filament extruded but it require different extruder hardware.
Explain what you mean by 'discrete extrusion'? The current 4 axis model that everyone uses is as far as I understand any possible meaning of the word, a discrete extrusion model. One where the volume of extrusion is controlled directly and independently of factors like feed rate.
The only alternative I can imagine is something like the old DC motor powered extruders on early desktop repraps/makerbots. Which would be a constant velocity extrusion model.... (although not really due to DC motors being sucky). That was just as inaccurate as you might expect.OTOH I'm testing voltera for past 7 days and interestingly, while they need way more precision than regular 3d printer, they do not calculate amount of extrudate from "how much they moved the motor" but rather with "how long the pressure was on" and "how much pressure they put"
The Voltera is dealing with a wildly different rheology problem, given that they are pushing a non-Newtonian fluid at room temperature, using a piston, through a very different nozzle.
@bot said in Have our slicers been wrong this whole time?:
On the other hand, Slic3r gets much closer with their math, so their extrusion model works as they intend it to. I simply prefer to have exact control of my extrusion widths, and will account for the small horizontal "size error" in other ways. The way they account for the error is by moving the edge of the rounded filament trace in a bit, by extruding less material. However, this causes more gap in the print than the other way -- i.e., by moving the rounded edge inwards, you also bring the gap caused by those rounded edges inwards, and your print's horizontal outline is made up of the tiny points of the rounded edges, and the voids left between them. Don't sand your print!!! You'll quickly shave off those rounded edges and be left with an inaccurate print!
Right. So your complaint with Slic3r is that it produces dimensionally accurate parts? And that when you then remove material from your print it becomes smaller and hence no longer of the correct dimensions?
And you would rather have a slicer that doesn't produce accurate dimensions, that you then compensate for in other ways...
I don't know what to say about that.
Use Cura maybe?But back on topic.
Its easy to test your theory.
In Cura (where I can remember the setting), try playing with the 'Retraction Extra Prime Amount'. Which I'm fairly sure will produce an effect similar to what you want to get.
I think that you are going to be in the system noise of it all though. You are talking... [does some calculations]
A full 'spot' with a volume of 0.025mm3.
That's ~10 microns of filament, at 1.75mm.
Or half that, if you are just trying to start a line.Admittedly I didn't compensate for wall curvature, so the spot would be a hair larger than desired. And I was assuming 0.4mm extrusion width, 0.2mm layer height.
I'd be impressed if any 3d printer could reliably and accurately enough position its filament to give you that level of control.
Yeah, system noise.
-
@Phaedrux said in Have our slicers been wrong this whole time?:
@arhi said in Have our slicers been wrong this whole time?:
for start the "width" that's considered safe and "best" is 1.2nozzle dia, not 1.0nozzle dia
I never understood this received wisdom and it doesn't match my own testing. 1.2x nozzle diameter seems pretty arbitrary. Does that apply to all nozzle sizes? So my 0.6 should be 0.72 extrusion width? What if I have a 1.2mm nozzle. I should use 1.44mm width? It doesn't seem to scale well with nozzle size. What about nozzle geometry, flat or pointy?
Flat nozzles. But then all the testing (and the recieved wisdom is probably all from Stratasys) has been with flat faced nozzles.
The theory being that to maximise inter-layer bonding strength, you need to press the bead of the extrusion into the prior layer (they call the face the 'anvil' for that reason). Going to nozzle diameter and smaller means you get uncontrolled material flow. Scientists don't like uncontrolled. Wider extrusions certainly produce stronger parts. And if you extrude wider than the face of the nozzle, you can get material sticking up that your nozzle then crashes into.
There is also the 1.6 aspect ratio rule of thumb, which is also fairly arbitrary.Given the way the material forms an extrusion, it should actually be controlled by layer height as well assuming you are calculating true extrusion width.
Depending on what slicer you are using, your '0.5mm' extrusion could easily be 0.52mm. A 0.6 nozzle/extrusion width at 0.3mm layer height, would actually closer to 0.63mm.
If you are using the 'simple' flow math.
At least according to my back of the spreadsheet calculations.This is really PhD level stuff. I stopped trying to get it better a long time ago. I have a slicer profile that produces a sufficiently consistent result. That means I can concentrate on designing the parts I happen to be printing, not redesigning the tools I'm using.
-
If extrusion paths bulge at the sides, it's because they are very thick. Very thick layers does not make accurate prints. Why do you care about 50 microns of accuracy one way when each layer you sliced your model into is 4 times that? You've thrown accuracy out the window long ago.
On top of that, stock slic3r simplifies toolpaths excessively. Accuracy thrown out the window again.
Then, to top it all off, they round the X/Y output of G-Code after they have calculated the extrusion amounts. Where is that accuracy going? Out the window.
A better approach, IMO, is to start with precision and resolution and get accuracy from there.
I use a 0.15 mm nozzle, 0.2 mm extrusion widths, 0.04 mm layer heights and my extruder is dual-gear driven with ~4600 steps/mm at 16x microstepping.
If you want to try to get accuracy out of a 0.4 mm nozzle with 0.2 mm layers by extruding a TINY amount less for every path that you extrude, be my guest. IMO, it's LESS accurate. The weight and volume of the plastic extruded is wrong.
Nonetheless, the topic at hand ignores that stuff, as it should. All of this "plastic flow" needs to be dealt with after we discover a "perfect" way to model the printing of extrusion. I.e., when we start an extrusion path, we should do it in a way that should theoretically make the path formed perfectly from the beginning. If your hardware doesn't have the resolution, then it won't cause any detriment. A single microstep of my extruder advances the filament by ~0.00025 mm. In reality, it's not that accurate and likely not that precise due to resistance and step error. Also, in reality, the extrudate being drawn out of the nozzle likely plays as much of a role in extrusion as the pushing of the filament. The pushing, at the low rates that I do, is more about maintaining a pool of melt for the nozzle to extrude from.
It's like extruding filament: the speed that you purposefully draw the filament from the nozzle is the main determining factor in filament formation, not the rate that you squish it out. Rather, it's the fact that these speeds match up precisely that gives you the right size filament.
-
And all this time I have been printing fully functional parts that meet specifications using S3D and a handful of guidelines.
Just dumb luck I guess.
Frederick
-
Coincidentally, S3D positions the nozzle in the way I propose in this thread. However, I think they just add a bit of extrusion onto the path, without the length being properly accounted for, which causes poorly-timed extrusions. S3D is by far the worst slicer I've analysed in terms of extrusion rate consistency.
They also simplify their toolpaths now, too.
But hey if it works for you, it works!
-
@bot said in Have our slicers been wrong this whole time?:
If extrusion paths bulge at the sides, it's because they are very thick.
No.
They bulge because you are extruding a viscous fluid.@bot said
All of this "plastic flow" needs to be dealt with after we discover a "perfect" way to model the printing of extrusion.
Attempting to model what the polymer does as you deposit it, without dealing with what the polymer does as you deposit it...
I mean, Cura does that.
Works just fine for my purposes. Dimensional accuracy could be better. But I'm running belt-drive so I can't complain too much.@bot said
Very thick layers does not make accurate prints. Why do you care about 50 microns of accuracy one way when each layer you sliced your model into is 4 times that? You've thrown accuracy out the window long ago.
I really don't think you understand accuracy. It is not coupled to layer height.
Well, unless you are not using the correct flow math... then yeah, you are going to have issues.
-
The feature you are talking about is directly coupled to layer height, so...
-
@bot said in Have our slicers been wrong this whole time?:
The feature you are talking about is directly coupled to layer height, so...
In what way is accuracy coupled to layer height?
I think you are conflating accuracy and resolution.
-
Well, you lose the ability to maintain accuracy depending on what way you measure accuracy.
I presume you're speaking about X/Y size. What about the profile of the part in other dimensions? Z? Well, it can only be accurate, rounded exactly to a layer height. So, that's one basic way that we (potentially) lose accuracy. You could add on as many different sized layers on top to correct that. Fine. Z is now "accurate."
What if you have to print a slope? How shallow is that slope? If you measure the part in any way other than pure X/Y measurements, is it no longer talking about accuracy?
Are we sitting here printing calibration cubes all day? Not me. I print elaborate, detailed, complex parts that take days to complete.
Accuracy is not fudging the numbers by 8 microns to try and move the edge of a tiny rounded piece of plastic that is 40 microns tall inwards. Accuracy is making a part that matches as closely to cad as is possible.
-
@bot said in Have our slicers been wrong this whole time?:
I presume you're speaking about X/Y size.
No. I'm taking about the width of the extrusion. Its accuracy is fundamental.
But anyway.
You describe Slic3r as doing this:
fudging the numbers by 8 microns to try and move the edge of a tiny rounded piece of plastic that is 40 microns tall inwards.
You also describe Slic3r as producing dimensionally accurate parts, that if sanded down, are then undersized.
Accuracy absolutely is moving a tool path to produce the correct results.
It sounds like Slic3r does a better job than most at it.Accuracy is making a part that matches as closely to cad as is possible.
Perhaps.
In the real world we deal with DFM and all the wonderful limits of the tools we use to actually make the real object.And possible is doing a lot of heavy lifting in that sentence.
-
-
@Phaedrux said in Have our slicers been wrong this whole time?:
I never understood this received wisdom and it doesn't match my own testing. 1.2x nozzle diameter seems pretty arbitrary. Does that apply to all nozzle sizes? So my 0.6 should be 0.72 extrusion width? What if I have a 1.2mm nozzle. I should use 1.44mm width? It doesn't seem to scale well with nozzle size. What about nozzle geometry, flat or pointy?
That number works nice for "often used" nozzles, 0.25 - 0.8mm pretty good. With larger nozzle orifices it can change but for e.g. the 1.8mm nozzle and ABS and I measured even bigger 1.25-1.3 value!!! What it came from is just a whole bunch of measurements across different filaments and different nozzles. Outside nozzle geometry (flat vs pointy) does not matter much for this, only the inside geometry that affects the turbulence and nozzle material.
The "real" "safe" width should actually be measured for the nozzle, for the specific material. Rather simple, get your nozzle 4-5cm from the bed. 4-5cm is chosen as it's long enough for filament to be straight and short enough that weight of the filament does not affect it too much and extrude at extrusion speed you plan to print at till you start having filament coil on the bed. Stop extruding, let it cool, snip the filament at the nozzle and measure the diameter of the extruded filament at few points on the straight ~4cm piece of the filament. Average measured value is your "safe extrusion width".
Min is super hard to measure, I did not find a proper way to do it. In theory you should do 2 lines one after another stretching the filament with a short pause at the connection point. The connection point between two lines will have a "hole" if the filament is "over stretched" as you "pulled the filament from the nozzle" instead of pushing filament trough the nozzle. Unfortunately I never devised a test for this that I like.
Max is easy and it depends mostly on the outside geometry of the nozzle (pointy vs flat), flatter the nozzle wider you can go. Test is simple and it basically comes to an outside diameter of the nozzle tip (bit smaller).
But in some average value, 1.2 works nice for PLA and ABS for most of the popular nozzles (jhead, makergear, e3d.. 0.25-0.8mm). Other plastics require different numbers, for e.g. PP goes over 1.5 for the same nozzles... and for other nozzles, the value can be lesser, for e.g. the experimental Arcol nozzles where the exit channel is longer than 5x orifice diameter the value is 1.0 as there's almost no turbulence and the material do not swell at all when it exits the nozzle. Problem is extruding trough that nozzle requires 2-3x more torque
-
@bot
The one on the left.Given identical surface roughness (which you have), measuring on the line you drew, the one on the right would be oversize, one on the left would be the exact dimension.
Now, if you wanted the part oversize because you planned on finishing the surface to reduce the surface roughness, then that's a different thing. But the one on the left is closer to final dimensions of the part.
Slicing engines are trying to reproduce the CAD model, if you are going to do additional finishing, you have to plan for that.
-
@theruttmeister said in Have our slicers been wrong this whole time?:
Explain what you mean by 'discrete extrusion'?
Look at the ink-jet printer, it is expelling discrete values of ink. If you look at the "bonder" printers they expel the discrete values of the bonding material (or activator, water .. irrelevant). Lool at the beeswax printers made with Epson print heads, they build 3D object out of discrete drops of vax.
check this out: https://youtu.be/2WL4b03Tfjg
None of it is plastic at the moment, but all of it represents printing with discrete, known volume "droplets". Unless we get that with plastic there will be no precision. The only other way is like some of hte "big boys" work and that's
- locked head
- locked extruder
- locked plasic
so you can use only parts provided by them, you can use plastic code 1, or code 7 etc.. and the machine & slicer know exactly how codeX pass trough the system... but if you want to use "any plastic" you are back to square one.
The current 4 axis model that everyone uses is as far as I understand any possible meaning of the word, a discrete extrusion model. One where the volume of extrusion is controlled directly and independently of factors like feed rate.
yeah, but it's NOT
if it was then you would not need pressure advance, retraction, priming, coasting, wiping and all the other crap we try to use to compensate for the fact that it's not
The Voltera is dealing with a wildly different rheology problem, given that they are pushing a non-Newtonian fluid at room temperature, using a piston, through a very different nozzle.
yes and no, but that's out of the point, the point I made with Voltera is just that making adequate model is obviously possible, on the other hand it probbly requires locked parts (including plastic)
-
@bot said in Have our slicers been wrong this whole time?:
On top of that, stock slic3r simplifies toolpaths excessively. Accuracy thrown out the window again.
There was always a tradeoff there... The first slicers I used were something dr. Adrian made and skeinforge. Both worked by creating a slice of the object and generating a bitmap of that slice at some resolution, then they would vectorize this bitmap and generate g-code from those vectors. It's a super slow process but worked rather good with non manifold parts and parts with different errors. First slicer that actually generated proper vectors by intersecting a plane and the stl was netfabb and what happened is that slicing became 1000+ times faster but they had issue with non-perfect objects (luckily netfabb is also awesome to fix the STL so that was not a problem) and with "too precise" objects as by deciding on the resolution of the bitmap skeinforge could define shortest move, netfabb had to implement additional "optimizer" on top of that to now "fix all the short moves"... same issue was later on with all the other slicers doing the similar thing, IIRC s3d solved this partially with 3.0 and finally with 3.1, before 3.0 they would generate a G1 for every nanometer you had in your STL... slic3r had the optimization from start IIRC, no clue how it's implemented... but you can't go around that, you can just make it configurable so user can decide how this simplification works...
What's bigger issue and huge difference between slicers is the optimization of generated G-code. Last time I compared S3D and Cura, S3D code was way better, more optimized, cura generated code was jumping all over the place... dunno if this changed, have not checked cura for a while.
-
@bot said in Have our slicers been wrong this whole time?:
S3D is by far the worst slicer I've analysed in terms of extrusion rate consistency.
They also simplify their toolpaths now, too.Try to get version before 3.0 and test it out, 3.0 is when they introduced simplification of toolpaths
-
@bot said in Have our slicers been wrong this whole time?:
I would actually love if a slicer would ASK me if I want the left or the right one ... and I know that in 90% cases I would want the left one for inside of the object (holes) and right one for the outside of the object
-
@arhi I remember very well. I used to take full advantage of the non-excessively simplified toolpaths!
@arhi said in Have our slicers been wrong this whole time?:
[...]
I would actually love if a slicer would ASK me if I want the left or the right one ... and I know that in 90% cases I would want the left one for inside of the object (holes) and right one for the outside of the objectNow that's truly a good idea.
-
@arhi said in Have our slicers been wrong this whole time?:
@theruttmeister said in Have our slicers been wrong this whole time?:
Explain what you mean by 'discrete extrusion'?
Look at the ink-jet printer, it is expelling discrete values of ink. If you look at the "bonder" printers they expel the discrete values of the bonding material (or activator, water .. irrelevant). Lool at the beeswax printers made with Epson print heads, they build 3D object out of discrete drops of vax.
I'm very much familiar with jetting technology...
Jetting is able to deposit finer volumes... but no existing tech is capable of functioning at 200C+ as is required for thermoplastics, let alone deal with the far far higher viscosity of molten thermoplastics.4 Axis FDM is able to deposit finely controlled, discrete volumes of polymer...
With more control than most jetting tech as it is able to vary the velocity of its deposition (Jetting typically cannot). In fact, the ability to deposit truly continuous beads of polymer is a huge advantage of FDM vs Jetting.Or do you mean droplets? Because droplet thermoplastic printing, well... both not currently practical and not actually desirable (due to its impacts on mechanical strength). Oh and droplet based means 100% infill 100% of the time, and support material for even 1 degree of overhang.
I mean if you can figure out how to build a head with 42,000 nozzles that can jet out PLA, woo hoo!
But HP went with MJF for a reason. -
@bot said in Have our slicers been wrong this whole time?:
@arhi I remember very well. I used to take full advantage of the non-excessively simplified toolpaths!
there might be a way to control how much they are simplified ... but I gave up on s3d so don't remember if there's a "precision" settings there.
with IM this is more than enough for me