Thursday, September 02, 2010
A Smarter Approach to Infill
As is often the case, I had my Mendel running a week or two ago, and I was sat mesmerised for far too long watching it work. Fortunately, whilst this was happening I had an idea I thought was worth sharing.
Our Mendel happened to be printing a particularly complex part, I think it was one of the extruder driven gear. I made the casual observation that on the lower fine layers, it does a pretty good job. But once you get into the middle layers, it needs to do quite a lot more in air movements compared to the fine layers, as the extruder cannot get to where it needs to be smoothly because of the low density of the infill. The issue with this is that with present extruder designs, and even with reversing, we still get some ooze that makes a bit of a mess. Annoyingly, the reversing and inair movements start at the outline of parts, and the ooze typically spills over a tiny amount, making the part surface a little blobby. It also makes sense that this problem is particularly true for intricate areas of the part, such as the gear teeth.
Thus, It would be very beneficial to vary the increase the infill density within the intricate regions of parts. Not only would this help with ooze, but intricate areas would automatically strengthened with more material. I also suspect that if this was implemented we could also reduce the infill percentage in simpler areas to speed up build time.
Fortunately, we already a gauge of part complexity, and that is the length of each individual road within the infill(L) and the distance between infill roads(D) could be made proportional to this length.
I got the idea when writing a script to procedurally route a PCB trace for a platform heater around its mounting holes, and realized that it should be possible to generalize to calculating infill. I'm just having trouble finding a language to use to implement it without reinventing the wheel for functions like contracting the outline and detecting intersections with it.
It also tends to get more dense in smaller areas because the infill lines are not parallel to each other. The longer they are the further they are apart. See this post from 2.5 years ago: hydraraptor.blogspot.com/2008/04/python-beans-make-object
That was the reason I hosted them on MediaFire as it was the only way I could make them animate, but as you can see MediaFire lost them.
BTW, for solid, I evolved this approach rather than a cross hatch infill.
BTW: A hexagonal infill needs less acceleration (from the perspective of each individual axis) and can, for this reason, be done at higher feed-rates.
1 - the delayed start of movement creates a starting blob ( presumably to improve the initial bond to the previous layer)
2 - the existence of other blobs in near vicinity or lower layers causes overflow or behave erratically.
I was dragged kicking and screaming towards skeinforge ( as one of the other hackers here uses it on his RapMan ), and it was WAY BETTER!. no blobbing, etc, becuase the extruder simply stays on during infill as much as possible ( ie between in-fill parallels, it follows the border to the next line, extruding the whole way).