X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=filamentspool.scad;h=5e52e627cd1926ccf825b7ecc9b3da75905b42e0;hb=363defbb545ca091249f04dc41125a37acc6cd03;hp=c0bb1e2deb3d625425f128e8800ee09daaf6cdc0;hpb=7048e3eab89290615a121230de9f9a2d92e8a0da;p=reprap-play.git diff --git a/filamentspool.scad b/filamentspool.scad index c0bb1e2..5e52e62 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -1,33 +1,35 @@ // -*- C -*- -fdia=1.75; +fdia=2.85; slop=0.5; bigslop=slop*2; +function selsz(sm,lg) = fdia < 2 ? sm : lg; +function usedove() = selsz(true,false); + exteffrad = 70; -hubeffrad = 30; -hubbigrad = 20; -hublwidth = 3; +hubeffrad = selsz(30, 60); +hubbigrad = selsz(20, 50); +hublwidth = selsz(3, 5); hubstemwidth = 2; hublthick = 10; -hubaxlelen = 25; -hubaxlerad = 5; +hubaxlerad = selsz(5, 17/2); totalheightfromtower = 240; axletowerfudgebend = 0; axleaxlefudgebend = 3; axlepadlen = 1.0; -prongthick=5; -prongwidth=5; +prongthick=selsz(5,7); +prongwidth=selsz(5,7); ratchetstep=15; ratchettooth=3; ratchettoothheight=5; ratchettoothsmoothr=1; ratchettoothslope=0.75; overlap=0.5; -cupwidth=40; -cupheight=55; +cupwidth=selsz(40,60); +cupheight=selsz(55,75); propxshift = 0; @@ -38,13 +40,15 @@ teethgapx=4+fdia; prongstalkxwidth=3; -stalklength=35; +stalklength=selsz(35,55); overclipcupgap=5; overclipdepth=15; overcliproundr=2.0; -overclipthick=0.5; +overclipthick=1.0; overclipcupnextgap=20; +hubaxlelen = selsz(25, cupwidth); + overclipsmaller=-2.5; overclipbigger=0.0; @@ -73,6 +77,10 @@ frictionwasherextrapush = 1.0; ratchetpawl=ratchetstep-ratchettooth-bigslop*2; +nondove_armbase = 100; +nondove_armhole_x = 60; +nondove_armhole_hole = 4; + include include include @@ -85,9 +93,21 @@ totalheight = channeldepth + armendbasethick; stalkwidth = prongwidth + prongstalkxwidth; module ArmEnd(length=120){ ////toplevel - translate([ratchettoothsmoothr, channelwidth/2, -armendbasethick]) { - rotate([0,0,-90]) - DoveClipPairBase(h=doveclipheight); + if (usedove()) { + translate([ratchettoothsmoothr, channelwidth/2, -armendbasethick]) { + rotate([0,0,-90]) + DoveClipPairBase(h=doveclipheight); + } + } else { + difference(){ + translate([1, -armendwallthick, -armendbasethick]) + mirror([1,0,0]) + cube([nondove_armbase+1, totalwidth, totalheight]); + translate([-nondove_armbase + nondove_armhole_x, + -armendwallthick + totalwidth/2, + -armendbasethick -1]) + cylinder(r= nondove_armhole_hole/2, h=totalheight+2, $fn=10); + } } difference(){ @@ -160,7 +180,7 @@ module FilamentCup() { ////toplevel translate([propshift, -1, 0]) { // something is wrong with the y calculation cube([prongwidth, - overclipdepth - prongwidth/2, + gapy+2, prongthick]); } for (y = [overclipcupgap, overclipcupgap+overclipcupnextgap]) { @@ -168,6 +188,11 @@ module FilamentCup() { ////toplevel rotate([0,0, 102 + fdia]) FilamentTeeth(fdia=fdia, h=teethh); } + for (x = [-0.3, -1.3]) { + translate([cupheight + overclipcupnextgap*x, dy+cupwidth/2 + prongthick, 0]) + rotate([0,0, 12 + fdia]) + FilamentTeeth(fdia=fdia, h=teethh); + } } module CupSecuringClipSolid(w,d,h1,h2){ @@ -194,6 +219,8 @@ module CupSecuringClip(){ ////toplevel CupSecuringClipSolidSmooth(xrad=overclipthick, xdepth=0); translate([-wingswidth/2, -wingsize/2, 0]) cube([wingswidth, wingsize, wingthick]); + translate([-wingsize/2, -wingswidth/2, 0]) + cube([wingsize, wingswidth, wingthick]); } translate([0,0,-0.1]) CupSecuringClipSolidSmooth(xrad=0, xdepth=0.2); @@ -209,18 +236,19 @@ module TowerDoveClipPin(){ ////toplevel } module Hub(){ ////toplevel + axlerad = hubaxlerad + slop; + xmin = axlerad+hublwidth/2; + xmax = hubbigrad-hublwidth/2; + hole = hubeffrad - hubbigrad - DoveClip_depth() - hublwidth*2; + holewidth = DoveClipPairSane_width() - hubstemwidth*2; + difference(){ + union(){ 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() { @@ -234,8 +262,6 @@ module Hub(){ ////toplevel } } } - 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]) @@ -244,6 +270,9 @@ module Hub(){ ////toplevel [xmax,hublthick-0.2], [xmin, hubaxlelen-0.2]]); } } + translate([0,0,-1]) cylinder($fn=60, h=hubaxlelen+2, r=axlerad); + } +} module ArmExtender(){ ////toplevel DoveClipExtender(length=exteffrad-hubeffrad, @@ -363,9 +392,9 @@ module FilamentCupPair(){ ////toplevel //ArmEnd(); //FilamentCup(); -FilamentCupPair(); +//FilamentCupPair(); //CupSecuringClip(); -//Hub(); +Hub(); //ArmExtender(); //Axle(); //AxleWasher();