bigslop=slop*2;
function selsz(sm,lt,lg) = fdia < 2 ? sm : lightduty ? lt : lg;
-function usedove() = selsz(true,false,false);
+function usedove() = selsz(true,true,false);
-num_arms = selsz(3,4,4);
+num_arms = selsz(3,3,4);
+
+channelslop=selsz(slop,0.75,slop);
exteffrad = 70;
-hubeffrad = selsz(30, 40, 40);
+hubeffrad = selsz(30, 82, 40);
hubbigrad = selsz(20, 38, 38);
-hublwidth = selsz(3, 4, 4);
+hublwidth = selsz(3, 2.5, 4);
hubstemwidth = 2;
hublthick = 10;
hubaxlerad = selsz(5, 28/2, 28/2);
armend_length = 120;
-prongthick=selsz(5,5,5);
-prongwidth=selsz(5,5,5);
+prongthick=selsz(5,4,5);
+prongwidth=selsz(5,4,5);
prongribwidth=3;
-prongribheight=selsz(0,4,4);
+prongribheight=selsz(0,0,4);
ratchetstep=15;
ratchettooth=3;
ratchettoothheight=5;
ratchettoothsmoothr=1;
ratchettoothslope=0.75;
overlap=0.5;
-cupwidth=selsz(40,50,50);
-cupheight=selsz(55,55,55);
+cupwidth=selsz(40,25,50);
+cupheight=selsz(55,25,55);
-cupstrong_dx=selsz(0,-10,-10);
+cupstrong_dx=selsz(0,0,-10);
propxshift = -6;
prongstalkxwidth=3;
-stalklength=selsz(35,55,55);
+stalklength=selsz(35,25,55);
overclipcupgap=5;
overclipdepth=15;
overcliproundr=2.0;
overclipthick=1.0;
-overclipcupnextgap=selsz(20,20,20);
+overclipcupnextgap=selsz(20,15,20);
-hubaxlelen = selsz(25, 87.5, 87.5);
+hubaxlelen = selsz(25, 62.5, 77.5);
echo(hubaxlelen);
overclipsmaller=-2.5;
wingsize=6;
wingthick=3;
-armendwallthick=selsz(2.5, 2.5, 2.5);
+armendwallthick=selsz(2.5, 1.8, 2.5);
armendbasethick=selsz(1.2, 1.2, 1.2);
axlehorizoffset = 12.5;
include <filamentteeth.scad>
include <axlepin.scad>
-channelwidth = prongthick + slop;
+channelwidth = prongthick + channelslop;
channeldepth = prongwidth + ratchettoothheight;
totalwidth = armendwallthick*2 + channelwidth;
totalheight = channeldepth + armendbasethick;
rotate([0,0,180]) FilamentCup();
}
+//----- storarm -----
+
+storarm_hooklen = 8;
+storarm_hookheight = 5;
+storarm_thick = 10;
+storarm_axleslop = 4;
+
+// calculated
+
+storarm_axlerad = hubaxlerad - storarm_axleslop;
+storarm_mainlen = hubaxlelen;
+storarm_totlen = storarm_mainlen + storarm_hooklen;
+
+module StorageArmDiagPartSide(xmin, xmax){
+ xsz = xmax-xmin;
+ yuse = storarm_thick/2;
+
+ intersection(){
+ translate([xmin-1, -storarm_axlerad, storarm_thick/2])
+ rotate([0,90,0])
+ cylinder(r=storarm_axlerad, h=xsz+2, $fn=60);
+ translate([xmin, -yuse, 0])
+ cube([xsz, yuse, storarm_thick]);
+ }
+}
+
+module StorageArmDiagPart(xmin, xmax, shear, adjbot){
+ hull(){
+ StorageArmDiagPartSide(xmin,xmax);
+
+ multmatrix([[1,0,0,0],
+ [shear,1,0,0],
+ [0,0,1,0],
+ [0,0,0,1]])
+ translate([0, -storarm_axlerad*2 + adjbot, 0])
+ mirror([0,1,0])
+ StorageArmDiagPartSide(xmin,xmax);
+ }
+}
+
+module StorageArm(){ ////toplevel
+ shear = storarm_hookheight / (storarm_mainlen/2);
+
+ StorageArmDiagPart(-1, storarm_mainlen/2+1, shear, 0);
+ StorageArmDiagPart(storarm_mainlen/2-1, storarm_mainlen+1, shear/2,
+ storarm_hookheight/2);
+
+ translate([0, storarm_hookheight, 0])
+ StorageArmDiagPart(storarm_mainlen, storarm_totlen,
+ shear/2, -storarm_hookheight/2);
+}
+
+
+module Demo(){
+ translate([-hubeffrad-30,50,0]) Hub();
+ ArmEnd();
+ translate([0,50,0]) FilamentCup();
+}
+
//ArmEnd();
//FilamentCup();
//FilamentCupPair();
//AxleWasher();
//AxlePin();
//AxleFrictionWasher();
+StorageArm();
+//Demo();