X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=filamentspool.scad;h=937310b39511daf31b1f22fc722d27463eb3e055;hb=2c35b2a06e88a3628b1dfe3c6f95d24d44c90673;hp=7f7c25540b9ed014ba79dfa8012723afaae8a99a;hpb=a1b9836649a4950b72135196832cf15f01f76f65;p=reprap-play.git diff --git a/filamentspool.scad b/filamentspool.scad index 7f7c255..937310b 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -5,6 +5,15 @@ fdia=1.75; slop=0.5; bigslop=slop*2; +exteffrad = 85; +hubeffrad = 30; +hubbigrad = 20; +hublwidth = 3; +hubstemwidth = 2; +hublthick = 10; +hubaxlelen = 25; +hubaxlerad = 5; + prongthick=5; prongwidth=5; ratchetstep=15; @@ -32,8 +41,8 @@ overclipdepth=15; overcliproundr=2.0; overclipthick=0.5; -overclipsmaller=-1.0; -overclipbigger=2.0; +overclipsmaller=-2.5; +overclipbigger=0.0; wingspoke=3; wingsize=6; @@ -42,6 +51,12 @@ wingthick=3; armendwallthick=2.5; armendbasethick=1.2; +axlehorizoffset = 12.5; +axlevertheight = 80; +towercliph = 16; +towerclipcount = 3; +towerpillarw = 5; + ratchetpawl=ratchetstep-ratchettooth-bigslop*2; include @@ -54,7 +69,7 @@ totalwidth = armendwallthick*2 + channelwidth; totalheight = channeldepth + armendbasethick; stalkwidth = prongwidth + prongstalkxwidth; -module ArmEnd(length=120){ +module ArmEnd(length=120){ ////toplevel translate([ratchettoothsmoothr, channelwidth/2, -armendbasethick]) { rotate([0,0,-90]) DoveClipPairBase(h=doveclipheight); @@ -114,7 +129,7 @@ module FilamentCupCup(){ } } -module FilamentCup() { +module FilamentCup() { ////toplevel FilamentCupHandle(); dx = cupbigrad + prongwidth; @@ -160,7 +175,7 @@ module CupSecuringClipSolidSmooth(xrad=0, xdepth=0){ } } -module CupSecuringClip(){ +module CupSecuringClip(){ ////toplevel wingswidth = wingspoke*2 + overclipthick*2 + overcliproundr*2 + totalwidth; difference(){ union(){ @@ -169,14 +184,74 @@ module CupSecuringClip(){ cube([wingswidth, wingsize, wingthick]); } translate([0,0,-0.1]) - CupSecuringClipSolidSmooth(xrad=0, xdepth=5); + CupSecuringClipSolidSmooth(xrad=0, xdepth=0.2); } } -module ArmDoveClipPin(){ +module ArmDoveClipPin(){ ////toplevel DoveClipPin(h=doveclipheight); } +module Hub(){ ////toplevel + difference(){ + cylinder($fn=60, h=hublthick, r=hubbigrad); + translate([0,0,-1]) + cylinder($fn=30, h=hublthick+2, r=(hubbigrad-hublwidth)); + } + axlerad = hubaxlerad + slop; + difference(){ + cylinder(h=hubaxlelen, r=axlerad+hublwidth); + translate([0,0,-1]) cylinder($fn=60, h=hubaxlelen+2, r=axlerad); + } + hole = hubeffrad - hubbigrad - DoveClip_depth() - hublwidth*2; + holewidth = DoveClipPairSane_width() - hubstemwidth*2; + for (ang=[0,120,240]) + rotate([0,0,ang]) { + difference() { + translate([hubeffrad,0,0]) + DoveClipPairSane(h=doveclipheight, + baseextend = (hubeffrad - DoveClip_depth() + - hubbigrad + hublwidth)); + if (hole>hublwidth && holewidth > 2) { + translate([hubbigrad + hublwidth, -holewidth/2, -1]) + cube([hole, holewidth, hublthick+2]); + } + } + } + xmin = axlerad+hublwidth/2; + xmax = hubbigrad-hublwidth/2; + for (ang = [0 : 60 : 359]) + rotate([0,0,ang]) rotate([90,0,0]) { + translate([0,0,-hublwidth/2]) + linear_extrude(height=hublwidth) + polygon([[xmin,0.05], [xmax,0.05], + [xmax,hublthick-0.2], [xmin, hubaxlelen-0.2]]); + } +} + +module ArmExtender(){ ////toplevel + DoveClipExtender(length=exteffrad-hubeffrad, + ha=doveclipheight, + hb=doveclipheight); +} + +module Axle(){ ////toplevel + pillarswidth = DoveClipPairSane_width(towerclipcount); + + translate([-axlehorizoffset, -axlevertheight, 0]) { + rotate([0,0,-90]) + DoveClipPairSane(h=towercliph, count=towerclipcount, baseextend=3); + translate([0, DoveClip_depth(), 0]) + rotate([0,0,90]) + ExtenderPillars(axlevertheight - DoveClip_depth(), + pillarswidth, towercliph, + pillarw=towerpillarw); + } +} + //ArmEnd(); //FilamentCup(); //CupSecuringClip(); +//Hub(); +//ArmExtender(); +Axle();