X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamentspool.scad;h=a0ca9d9e2f54de1385c593a4ef663135e46b8fd0;hp=eb4ee6d30a9b7f3bbbc74d9c9f93c6bd6caab1da;hb=ffdb1be0b2771deee73d986c2fff0e94abc850b8;hpb=c4191f131e15cd12517feaa0cd0ada40fb3b4e1d diff --git a/filamentspool.scad b/filamentspool.scad index eb4ee6d..a0ca9d9 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -3,24 +3,52 @@ slop=0.5; prongthick=5; prongwidth=5; -ratchetstep=10; +ratchetstep=15; ratchettooth=3; ratchettoothheight=5; +ratchettoothsmoothr=1; +ratchettoothslope=0.75; overlap=0.5; armendwallthick=2.5; armendbasethick=1.2; -module ArmEnd(length=100){ +include + +module ArmEnd(length=120){ channelwidth = prongthick + slop; channeldepth = prongwidth + ratchettoothheight; totalwidth = armendwallthick*2 + channelwidth; totalheight = channeldepth + armendbasethick; - difference(){ - translate([0, -armendwallthick, -armendbasethick]) - cube([ratchetstep+overlap, totalwidth, totalheight]); - translate([-1, 0, 0]) - cube([ratchetstep+overlap+2, channelwidth, channeldepth+1]); + + basecube = 5; + + translate([0, 3, -armendbasethick]) { + translate([-basecube+0.5, -7.5, 0]) + cube([basecube, 15, totalheight]); + + translate([-basecube+2,0,0]) + rotate([0,0,-90]) + DoveClipPair(h=totalheight); + } + + for (dx = [0 : ratchetstep : length]) translate([dx,0,0]) { + difference(){ + translate([0, -armendwallthick, -armendbasethick]) + cube([ratchetstep+overlap, totalwidth, totalheight]); + translate([-1, 0, 0]) + cube([ratchetstep+overlap+2, channelwidth, channeldepth+1]); + } + translate([ratchettoothsmoothr+0.5, armendwallthick/2, 0]) minkowski(){ + rotate([90,0,0]) + cylinder($fn=20, r=ratchettoothsmoothr, h=armendwallthick); + multmatrix([ [ 1, 0, ratchettoothslope, 0 ], + [ 0, 1, 0, 0 ], + [ 0, 0, 1, 0 ], + [ 0, 0, 0, 1 ]]) + cube([ratchettooth - ratchettoothsmoothr*2, + channelwidth, ratchettoothheight]); + } } }