X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamentspool.scad;h=b60c71a1d3437947a03df35539c379d7a98b9086;hp=19aa12ccb62b847f997e6c48462679122bdcfd74;hb=4107a824f9108a3a4903f94f117219937550dc15;hpb=db5e2d3f3e2bb2792da22498b80a14f888f4e632 diff --git a/filamentspool.scad b/filamentspool.scad index 19aa12c..b60c71a 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -5,9 +5,11 @@ fdia=1.75; slop=0.5; bigslop=slop*2; -hubeffrad = 30 + 55; +exteffrad = 85; +hubeffrad = 30; hubbigrad = 20; -hublwidth = 4; +hublwidth = 3; +hubstemwidth = 2; hublthick = 10; hubaxlelen = 25; hubaxlerad = 5; @@ -49,11 +51,21 @@ wingthick=3; armendwallthick=2.5; armendbasethick=1.2; +axlehorizoffset = 12.5; +axlevertheight = 80; +towercliph = 16; +towerclipcount = 3; +towerpillarw = 5; + +washerthick = 1.2; +washerrad = hubaxlerad + 7.5; + ratchetpawl=ratchetstep-ratchettooth-bigslop*2; include include include +include channelwidth = prongthick + slop; channeldepth = prongwidth + ratchettoothheight; @@ -61,7 +73,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); @@ -121,7 +133,7 @@ module FilamentCupCup(){ } } -module FilamentCup() { +module FilamentCup() { ////toplevel FilamentCupHandle(); dx = cupbigrad + prongwidth; @@ -167,7 +179,7 @@ module CupSecuringClipSolidSmooth(xrad=0, xdepth=0){ } } -module CupSecuringClip(){ +module CupSecuringClip(){ ////toplevel wingswidth = wingspoke*2 + overclipthick*2 + overcliproundr*2 + totalwidth; difference(){ union(){ @@ -180,22 +192,23 @@ module CupSecuringClip(){ } } -module ArmDoveClipPin(){ +module ArmDoveClipPin(){ ////toplevel DoveClipPin(h=doveclipheight); } -module Hub(){ +module Hub(){ ////toplevel difference(){ - cylinder(h=hublthick, r=hubbigrad); - translate([0,0,-1]) cylinder(h=hublthick+2, r=(hubbigrad-hublwidth)); + cylinder($fn=60, h=hublthick, r=hubbigrad); + translate([0,0,-1]) + cylinder($fn=30, h=hublthick+2, r=(hubbigrad-hublwidth)); } - axlerad = hubaxlerad + bigslop; + axlerad = hubaxlerad + slop; difference(){ cylinder(h=hubaxlelen, r=axlerad+hublwidth); - translate([0,0,-1]) cylinder(h=hubaxlelen+2, r=axlerad); + translate([0,0,-1]) cylinder($fn=60, h=hubaxlelen+2, r=axlerad); } hole = hubeffrad - hubbigrad - DoveClip_depth() - hublwidth*2; - holewidth = DoveClip_width() - hubstemwidth*2; + holewidth = DoveClipPairSane_width() - hubstemwidth*2; for (ang=[0,120,240]) rotate([0,0,ang]) { difference() { @@ -215,10 +228,79 @@ module Hub(){ rotate([0,0,ang]) rotate([90,0,0]) { translate([0,0,-hublwidth/2]) linear_extrude(height=hublwidth) - polygon([[xmin,0], [xmax,0], [xmax,hublthick], [xmin,hubaxlelen]]); + 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 AxleSplitPin(){ ////toplevel + SplitPin(); +} + +module Axle(){ ////toplevel + pillarswidth = DoveClipPairSane_width(towerclipcount); + +if(0) + 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); + } + + axleclearlen = hubaxlelen + slop*2 + washerthick; + axlerad = hubaxlerad-slop; + bump = axlerad * 0.2; + shift = axlerad-bump; + joinbelowallow = 3; + + intersection(){ + difference() { + translate([0, 0, shift]) + union(){ + translate([-1, 0, 0]) + rotate([0,90,0]) + cylinder(r = axlerad, h = 1 + axleclearlen + 6); + mirror([1,0,0]) rotate([0,90,0]) + cylinder(r = washerrad, h = 3); +if(0) + intersection(){ + mirror([1,0,0]) rotate([0,90,0]) + cylinder(r = towercliph - shift, + h = pillarswidth/2 + axlehorizoffset); + translate([-50, -joinbelowallow, -50]) + cube([100, joinbelowallow+50, 100]); + } + } + translate([axleclearlen, 0, 0]) + mirror([0,0,1]) + rotate([0,0,90]) + SplitPinCavity(); } + translate([-50,-50,0]) cube([100,100,100]); + } +} + +module AxleWasher(){ ////toplevel + difference(){ + cylinder(h=washerthick, r=washerrad); + translate([0,0,-1]) cylinder(h=washerthick+2, r=hubaxlerad+slop); + } } //ArmEnd(); //FilamentCup(); //CupSecuringClip(); +//Hub(); +//ArmExtender(); +//Axle(); +//AxleWasher();