I’m trying to print the .5 wall cube (actually, I’ve drawn a .35 wall cube because I’m using a .35 nozzle) but, it’s the same test.
What prompted this was I printed my test object from thingiverse (http://www.thingiverse.com/thing:255314) and it indicated too thick a perimeter. The male piece was oversize by the same amount that the female piece was undersize. Around 10.2mm and 9.8mm respectively.
I have my E-steps very accurate, but my perimeters are a bit too thick still (not a scaling issue) and so I thought I’d do the thin-wall test to check the widths. It measures .41 where it is meant to be .35.
So I tweak the flow to around 86% to compensate. Wall comes out .35 as expected, but technically the extrusion rate is off. I am under the impression that the extrusion rate is more important here. The walls could afterall be deflected more in this thin-wall object since it prints quickly, it prints onto still ‘warm’ previous layers.
So how in the hell do I configure a program like slic3r to print fitting objects? Without editing said objects to trick the slicer? If I turn my extrusion down from 100% I get all sorts of tell-tale signs that I’m under-extruding. If I run it at 100% stuff comes out good, but the perimeters are too large and stuff doesn’t fit! Using kisslicer I could ‘inset walls’ and scale, which combined gets you out of most troubles, but I’m stumped with slic3r…
Using 1.1.0 experimental build but had problems with the previous version also.
You print a .35 wall i think the optimal wall would be x 1.4 of that figure. You can leave the 100% extrusion rate and change the filament diameter to achieve the same goal. A lot of these settings and operations are not exact from bot to bot it seems to me, there is always the fudge factor. That’s all i got. Not really the answers your are looking for tho.
If you have two mating surfaces you need to design with a clearance. The clearance you need will depend on your surface smoothness (depends on your printer, speed, layer height, etc.) and how tight you want the fit (subjective).
This is true in any material and manufacturing process.
For example, I often use an 0.4mm clearance between two 3d printed parts if they are supposed to slide, like a box and it’s lid. Milled metal can have much tighter clearance.
But you can’t design for no clearance and make things thinner - everything will be under-extruded.
I’m a CNC machinist so I’ve got clearances and tolerances all worked out I am trying to print a bearing housing with a bore 21.90-21.95 if possible… I was able to print my test pieces at one point size-for-size (ie 10.00 male plug and 10.00 female socket) and the fit together pretty well… I got the desired “press fit”… But its just not achievable at the moment…
Slicer generates paths that are MEANT to be inset from the perimeter by half the extrusion width, this way, if the extruder is moving along y with an x coordinate of X=9.75 and extrusion width of .5, the plastic thread being played SHOULD be flattened out to take up the .25 extra, leaving an outside wall right-on 10mm…
But it can only work if the extrusion width is correct… Mine is not, and I can’t figure out how to change the width of the perimeter without effecting the flow of the infill…
Even if I reduce / increase the perimeter width, slicer just compensates (if I tell it to only extrude .25 wide instead of .5 it would lay a thinner thread, but it would position this thread at X=9.875 instead of 9.75)
Got it. Sorry 'bout that, you never know who’s who on the internet.
It doesn’t sound like you’re getting too little plastic from your description. But if you post a photo, that might reveal something.
I don’t think you can expect 1x nozzle size as the width of the plastic. I usually see 1.2x or so. That is, if you have an 0.4mm nozzle, a bead of plastic will be 0.5mm, because if you really laid down 0.4mm width it’s (theoretically) a circle that’s not squished onto the layer below, which doesn’t work in the real world - there’s not enough contact between the layers, so it’s extremely weak.
So my first suggestion would be to try an 0.5mm width and see if that works better.
I’ll also say that in my experience, anything less than two layers (1.0mm or so) doesn’t have much strength. Well, it works for vases, because they’re nearly vertical stacked continuous walls which is the easiest case. But for anything with much of an angle (e.g. closing the top of a screw hole) one layer doesn’t work well.
It might also be worth checking the actual filament diameter. It’s pretty sensitive, because the plastic volume is based on the cross section, which is the square of the diameter. So a 10% variation in diameter is a 20% variation in plastic extruded, which would be pretty obvious. So I doubt this is the issue, but it’s easy to check.
As far as ‘fitting’ objects, be aware that 3D printing uses rounded beads of plastic, and as far as I can tell the slicers all compute the positions as if the plastic filled in perfectly vertical not rounded, so the average of the outside edge is right, but the bulge in the middle of the layer sticks slightly past the ideal edge. So you need to leave a clearance, or sand, which you don’t need to do with a CNC mill. This is in addition to (and larger than) the usual clearance that you’d need to use between two metal faces.
You said that your nozzle was .35, but what’s your extrusion width? Slic3r automatically chooses extrusion widths that are greater than the nozzle diameter, it should be in the comments at the beginning of the gcode file when you export. You need to calibrate based on that.
As for whether it will match, it’s not that simple. The extrusion width is the width of a rectangular profile of the given height ([extrusion width] = [cross-sectional area] / [layer height]), but the actual extrusion is not rectangular, but more of a “stadium” shape (the convex hull of two circles of equal diameter, in this case the layer height). You can see the difference in my layer illustration script: https://plus.google.com/+Whosawhatsis/posts/4kzZy3CHtQc
The width at the widest point (what your calipers will touch) will be [extrusion width] + [layer height] - ([layer height] / 2)^2 * [pi] / [layer height]. In other words, the measured width of a single wall can be expected to be greater than [extrusion width] by an amount equal to [layer height] * (4 / [pi] - 1), which of course means that thicker layers will need greater tolerances. Slic3r SHOULD inset the perimeters by this amount, but I’m fairly certain it does not.
That, of course, assumes perfect layer alignment, as well as perfect E-steps and perfect filament diameter measurement. There are many other factors like acceleration, extruder hysteresis and die swell that can also affect this.
@Ashley_Webster Yeah, I remember finally getting that perfectly calibrated right before I migrated away from Skeinforge. IIRC there was another variable you had to mess with to get it to work properly, called perimeter overlap or something like that. Had to set it high enough to almost cause an error to trick Skeinforge into producing the perimeter inset I wanted without making the perimeter too thin or leaving a gap between it and the other loops.
I once (back in the skeinforge days) calculated the cross-sectional area of my extrusion into air and chose a layer height and extrusion width that calculated to the exact same cross-sectional area. It made a huge difference for fighting warping, but unfortunately it resulted in a layer height that was not a multiple of my full-step length, resulting in very visible Z-ribbing on a Cupcake on which I had just managed to completely eliminate Z wobble. Frustrating as hell, and I don’t think I figured out the math of what was going on until at least a year later.
I realized while reading this that I have been calibrating steps/mm to the external measurement of a cube. I should be calibrating to the centerline of the extrusion/wall instead, since that is the movement commanded by the Gcode regardless of the extrusion width.
@Matthew_Satterlee Actually, if you must calibrate that way (and unless you’re using spectra or threadless ballscrews, you should be using math instead), the best thing to do would be to print a stepped model such as this one (http://www.thingiverse.com/thing:7660) and use your caliper’s depth gauge to measure the offset from one step to the next. This cancels extrusion width out of the calculation while avoiding the difficulty of aligning your calipers to the center of the extrusion line.
The method I was thinking of would be a single walled cube but doing: newStepsmm=(Gcode_move*Stepsmm)/(outerwidth-(wallWidth1+wallWidth2)/2)
The idea is that it would measure the centerline of the extrusion without any interference from adjacent structures… Does that seem right?
Two problems with that: First, obviously, it’s hard to accurately measure the center line of the extrusion. The best you can do is eyeball it. Second, this method does not control for backlash, whereas the one I described does.
I have my nozzle size set to .35 (the drill size I used, but it could be slightly larger, not much though)
I have my extrusion width set to .35, layer height .2 (following previous advice from @Whosa_whatsis on calculating a good layer height based on full-steps) and I’m starting to think this may be the cause of my problems… I want fine extrusions for quality but I probably am pushing it by setting the same width as the nozzle.
The .1mm rad on each side of the plastic thread equates to .39 (via Whosa whatsis equation above) - which is pretty close to what I was measuring (close enough for my purposes)…
So E-steps are correct, and extrusion width is actually correct, but slic3r doesn’t compensate… so… where to now? how do people get good parts? everyone who makes working printer parts either fudges every single part in the software stage or sands, files and drills every part?
I’ve just generated the same program using slic3rs defaults for extrusion width (all set to 0 - default). Slic3r has spit out .35mm for perimeters, .52 for infill… I’m going to see how it prints but I don’t think that will change much… I don’t think my printers Z axis is capable of much less than the .2 layers either (to reduce the radius on the outside of the thread.)
Hmmm… Tried those settings… very similar results… Also tried printing using Cura 14.03, sizes were marginally better, I’m definitely over-extruding in corners (probably due to the acceleration being so low to avoid vibrations). So I might turn the accel. up a bit to get better corners at the risk of vibrations.
Still the parts have around .1 interference where they should ideally be 0…
How do you guys who are printing 3D printer parts do it? Does slic3r “just work” for you? or do you tweak parts in CAD? or do you all use skeinforge? I’m starting to get lost!
When I look at the slic3r G-code it insets the surface by half of the thread width (ie. if using .5mm perimeters and a 10mm box, the path taken is
You need to design tolerances into the model. As has already been mentioned, this is true of any manufacturing method.
That said, I’ve been begging the developers of slicers for four years to add an arbitrary surface inset feature so that these tolerances can be adjusted in CAM instead of in CAD.
I CNC machine stuff every day, if every person who designed in CAD needed to tweak their cad to suit peoples CNC machines the industry would be a nightmare!
We tweak the size in the CAM stage… it is the only way that makes sense… I agree with you 100%, This stuff should be handled by the slicer, and as @Ashley_Webster points out, kisslicer DOES have this functionality…
I’m shocked that Slic3r has so many advances and is a pretty complex program, but they have never considered this a problem?
Anyways, back to kisslicer I go… or - redesigning my cad… But thanks for the confirmation guys, appreciated
@Jarred_Baines What I meant was that you need tolerances in any manufacturing method, not that every manufacturing method requires those tolerances to be added in CAD rather than CAM.