/** I've had several failed prints, where the filament feed grinds the filament, and therefore no more filament is fed through. Before the grinding starts, the filament is push left or right (normally left), and the pressure level is moved with it. The filament the leaves the area of the wheel where the serations are (i.e. the filament rides "up" the camber). Maybe there is an underlying problem, such as a partially blocked nozzle, but at the moment the E motor is powerful enough to push filament through just fine, as long as the filament stays central. Also, after the failure, I retract the filament, cut off the worn end, and re-insert it, and it feels fine. This part is designed to fit over the pressure level to keep it centered. Widen the hole with a 2mm drill bit (the filament should run through freely). The prongs point downwards, and the long ones are on the left. The short prong is next to the large cog. */ class GeniusFilamentGuide : Model { var a = 2.0 var b = 2.8 var c = 5.0 var d = 8.0 var e = 2.0 var topT = 2.0 var depth = 25 var back = 7 var holeDepth = 14 override fun build() : Shape3d { val spacerA = Cube( a, back, depth ) val spacerC = Cube( c, back, depth ).translateX( a + b ) val spacerE = Cube( e, back, holeDepth + topT ).translateX( a + b + c + d ) val plainStub = Cylinder( holeDepth + topT, 1.7 ).sides(12) val sharpenStub = Cube( Math.sqrt(2) * (holeDepth+topT) ).center() .rotateY(45) val stub = (plainStub / sharpenStub).translate( a + b + c + d/2, 10, 0) val hole = Cylinder( holeDepth + 1 + topT, 1 ).sides(12) .translate( a + b + c + d/2, 10, 0) val top = Cube( a + b + c + d + e, back + 5, 2 ) return (top + spacerA + spacerC + spacerE + stub - hole) //.rotateX(90) } }