X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamentspool.scad;h=34e2f823458e60c7341dc1753cd247a55ad2442b;hp=032d476dcde397fb2b1f2bb84ac455fdfed095b5;hb=ee2690c1730ad00eaa28b0f0c1f1c27e817b2575;hpb=313e5333fd734b5ad5aec1ad48749623f41b9950 diff --git a/filamentspool.scad b/filamentspool.scad index 032d476..34e2f82 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -5,7 +5,7 @@ fdia=1.75; slop=0.5; bigslop=slop*2; -exteffrad = 85; +exteffrad = 70; hubeffrad = 30; hubbigrad = 20; hublwidth = 3; @@ -13,6 +13,10 @@ hubstemwidth = 2; hublthick = 10; hubaxlelen = 25; hubaxlerad = 5; +totalheightfromtower = 240; +axletowerfudgebend = 0; +axleaxlefudgebend = 3; +axlepadlen = 1.0; prongthick=5; prongwidth=5; @@ -40,6 +44,7 @@ overclipcupgap=5; overclipdepth=15; overcliproundr=2.0; overclipthick=0.5; +overclipcupnextgap=20; overclipsmaller=-2.5; overclipbigger=0.0; @@ -52,19 +57,27 @@ armendwallthick=2.5; armendbasethick=1.2; axlehorizoffset = 12.5; -axlevertheight = 80; +axlevertheight = 100; towercliph = 16; towerclipcount = 3; towerpillarw = 5; +axlepinrad = 2; +axlepintabrad = 5; + washerthick = 1.2; +washerthinthick = 0.8; +washerverythinthick = 0.4; washerrad = hubaxlerad + 7.5; +frictionwasherarmwidth = 3; +frictionwasherextrapush = 1.0; ratchetpawl=ratchetstep-ratchettooth-bigslop*2; include include include +include channelwidth = prongthick + slop; channeldepth = prongwidth + ratchettoothheight; @@ -156,9 +169,11 @@ module FilamentCup() { ////toplevel dy - sqrt(midrad*midrad - proptaken*proptaken) - prongwidth/2, prongthick]); } - translate([0, overclipcupgap, 0]) - rotate([0,0, 102 + fdia]) - FilamentTeeth(fdia=fdia, h=teethh); + for (y = [overclipcupgap, overclipcupgap+overclipcupnextgap]) { + translate([0, y, 0]) + rotate([0,0, 102 + fdia]) + FilamentTeeth(fdia=fdia, h=teethh); + } } module CupSecuringClipSolid(w,d,h1,h2){ @@ -195,6 +210,10 @@ module ArmDoveClipPin(){ ////toplevel DoveClipPin(h=doveclipheight); } +module TowerDoveClipPin(){ ////toplevel + DoveClipPin(h=towercliph/2); +} + module Hub(){ ////toplevel difference(){ cylinder($fn=60, h=hublthick, r=hubbigrad); @@ -238,15 +257,16 @@ module ArmExtender(){ ////toplevel hb=doveclipheight); } -module AxlePin(){ ////toplevel -// SplitPin(); +module FsAxlePin(){ ////toplevel + AxlePin(hubaxlerad, washerrad*2, axlepinrad, axlepintabrad, slop); } module Axle(){ ////toplevel pillarswidth = DoveClipPairSane_width(towerclipcount); -if(0) + rotate([0,0, -( axleaxlefudgebend + atan(slop/hubaxlelen) ) ]) translate([-axlehorizoffset, -axlevertheight, 0]) { + rotate([0,0,-axletowerfudgebend]) rotate([0,0,-90]) DoveClipPairSane(h=towercliph, count=towerclipcount, baseextend=3); translate([0, DoveClip_depth(), 0]) @@ -256,44 +276,87 @@ if(0) pillarw=towerpillarw); } - axleclearlen = hubaxlelen + slop*3 + washerthick*2; + axleclearlen = hubaxlelen + slop*4 + washerthick*2 + axlepadlen; 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 + 3 + 2); - mirror([1,0,0]) rotate([0,90,0]) - cylinder(r = washerrad, h = 3); -if(0) - intersection(){ + translate([0, 0, shift]) { + difference() { + union(){ + translate([-1, 0, 0]) + rotate([0,90,0]) + cylinder($fn=60, + r = axlerad, + h = 1 + axleclearlen + axlepinrad*2 + 2); 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]); + cylinder(r = axlerad*1.75, h = 3); + intersection(){ + mirror([1,0,0]) + translate([axlehorizoffset - pillarswidth/2, 0, 0]) + rotate([0,90,0]) + cylinder($fn=60, + r = towercliph - shift, + h = pillarswidth); + translate([-50, -joinbelowallow, -50]) + cube([100, joinbelowallow+50, 100]); + } } + rotate([90,0,0]) + translate([axleclearlen + axlepinrad/2, 0, -25]) + cylinder(r = axlepinrad + slop, h=50); } - translate([axleclearlen, 0, 0]) - mirror([0,0,1]) - rotate([0,0,90]) - cube([1,1,1]); } translate([-50,-50,0]) cube([100,100,100]); } } +module washer(thick){ + Washer(hubaxlerad, washerrad, thick, slop); +} + module AxleWasher(){ ////toplevel + washer(thick=washerthick); +} + +module AxleThinWasher(){ ////toplevel + washer(thick=washerthinthick); +} + +module AxleVeryThinWasher(){ ////toplevel + washer(thick=washerverythinthick); +} + +module AxleFrictionWasher(){ ////toplevel difference(){ cylinder(h=washerthick, r=washerrad); translate([0,0,-1]) cylinder(h=washerthick+2, r=hubaxlerad+slop); } + frarmr = hubbigrad; + frarmw = frictionwasherarmwidth; + frarmpawlr = hublwidth; + frarmpawlpush = slop*4 + frictionwasherextrapush; + for (ang=[0,180]) rotate([0,0,ang]) { + translate([washerrad-1, -frarmw/2, 0]) + cube([frarmr - washerrad + 1, frarmw, washerthick]); + intersection(){ + translate([frarmr - frarmpawlr, -50, 0]) + cube([frarmpawlr, 100, 50]); + rotate([0,90,0]) + cylinder(h = 50, r = frarmpawlpush, $fn=36); + } + } +} + +module TowerExtender(){ ////toplevel + l = totalheightfromtower - axlevertheight; + echo("TowerExtender",l); + DoveClipExtender(length = l, + ha = towercliph, hb = towercliph, + counta = towerclipcount, countb = towerclipcount, + pillarw = towerpillarw); } //ArmEnd(); @@ -301,6 +364,7 @@ module AxleWasher(){ ////toplevel //CupSecuringClip(); //Hub(); //ArmExtender(); -Axle(); +//Axle(); //AxleWasher(); -//AxleSplitPin(); +//AxlePin(); +//AxleFrictionWasher();