X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamentspool.scad;h=7c1023e4e6a99bbea69bfc215f6cbc9417e202e0;hp=73daad1187f37eb1526e25c322612ce83210111c;hb=4428d4d1ae86c5a90d6afd564052b1b74b7af0da;hpb=cf422612d5746988fc11fbadcae42542f7f48a43 diff --git a/filamentspool.scad b/filamentspool.scad index 73daad1..7c1023e 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -123,8 +123,6 @@ // Set // fdia=2.85 // lightduty=false -// (or look in filamentspool-sm.scad). -// // And print one of these, according to taste // StorageArmLeft // StorageArmRight @@ -132,7 +130,18 @@ // NB that the `light duty' version of this is shorter and // will only take two `light duty' spools. // -// For the above, I used the Cura `High detail' PLA profile because +// A longer arm for three spools is also available: +// Set +// fdia=2.85 +// lightduty=false +// storarm_spools=3 +// (or look in filamentspool-storarm3.scad). +// +// And print one of these, according to taste +// StorageArmLeft +// StorageArmRight +// +// For all of these, I used the Cura `High detail' PLA profile because // I wanted it pretty, but the `Standard' profile should do fine. // // ===== Spools for 1.75mm filament ===== @@ -158,7 +167,7 @@ channelslop=selsz(slop,0.75,slop); exteffrad = 70; hubeffrad = selsz(30, 82, 40); hubbigrad = selsz(20, 38, 38); -hublwidth = selsz(3, 2.5, 4); +hublwidth = selsz(3, 2.5, 3.0); hubstemwidth = 2; hublthick = 10; hubaxlerad = selsz(5, 28/2, 28/2); @@ -180,7 +189,7 @@ ratchettoothsmoothr=1; ratchettoothslope=0.75; overlap=0.5; cupwidth=selsz(40,25,50); -cupheight=selsz(55,25,55); +cupheight=selsz(75,35,75); cupstrong_dx=selsz(0,0,-10); @@ -290,60 +299,64 @@ module ArmEnd(length=armend_length){ ////toplevel } } - for (otherside=[0,1]) { - for (circum = [300:100:1500]) { - assign(rad = circum / tau) - assign(fn = str("filamentspool-number-n",circum,".dxf")) - assign(rotateoffset = [0, totalwidth/2, 0]) - assign(xlen = rad - real_exteffrad) { - if (xlen >= numbers_tick_width/2 - + (otherside ? numbers_height_allow : 0) && - xlen <= length - (otherside ? 0 : numbers_height_allow)) - translate([xlen, -armendwallthick, - -armendbasethick + (totalheight - numbers_tick_len)/2]) - translate(rotateoffset) - rotate([0,0, otherside*180]) - translate(-rotateoffset){ - translate([-numbers_tick_width/2, -1, 0]) - cube([numbers_tick_width, numbers_relief+1, numbers_tick_len]); - translate([numbers_tick_width/2 + numbers_tick_linespc, - 1, - numbers_tick_len]) - rotate([90,0,0]) - rotate([0,0,-90]) - linear_extrude(height= numbers_relief+1) - // scale(templatescale) - import(file=fn, convexity=100); - } + difference(){ + union(){ + difference(){ + translate([0, -armendwallthick, -armendbasethick]) + cube([length, totalwidth, totalheight]); + translate([-1, 0, 0]) + cube([length+1 - ratchettooth, channelwidth, channeldepth+1]); + translate([-1, 0, ratchettoothheight]) + cube([length+2, channelwidth, channeldepth+1]); + } + for (dx = [0 : ratchetstep : length - ratchetstep]) translate([dx,0,0]) { + translate([ratchettoothsmoothr+0.5, armendwallthick/2, 0]) minkowski(){ + rotate([90,0,0]) + cylinder($fn=20, r=ratchettoothsmoothr, h=armendwallthick); + multmatrix([ [ 1, 0, ratchettoothslope, 0 ], + [ 0, 1, 0, 0 ], + [ 0, 0, 1, 0 ], + [ 0, 0, 0, 1 ]]) + cube([ratchettooth - ratchettoothsmoothr*2, + channelwidth, ratchettoothheight - ratchettoothsmoothr]); + } } } - } - difference(){ - translate([0, -armendwallthick, -armendbasethick]) - cube([length, totalwidth, totalheight]); - translate([-1, 0, 0]) - cube([length+1 - ratchettooth, channelwidth, channeldepth+1]); - translate([-1, 0, ratchettoothheight]) - cube([length+2, channelwidth, channeldepth+1]); + for (otherside=[0,1]) { + for (circum = [300:100:1500]) { + assign(rad = circum / tau) + assign(fn = str("filamentspool-number-n",circum,".dxf")) + assign(rotateoffset = [0, totalwidth/2, 0]) + assign(xlen = rad - real_exteffrad) { + if (xlen >= numbers_tick_width/2 + + (otherside ? numbers_height_allow : 0) && + xlen <= length - (otherside ? 0 : numbers_height_allow)) + translate([xlen, -armendwallthick, + -armendbasethick + (totalheight - numbers_tick_len)/2]) + translate(rotateoffset) + rotate([0,0, otherside*180]) + translate(-rotateoffset){ + translate([-numbers_tick_width/2, -1, 0]) + cube([numbers_tick_width, numbers_relief+1, numbers_tick_len]); + translate([numbers_tick_width/2 + numbers_tick_linespc, + 1, + numbers_tick_len]) + rotate([90,0,0]) + rotate([0,0,-90]) + linear_extrude(height= numbers_relief+1) + // scale(templatescale) + import(file=fn, convexity=100); + } + } + } + } if (usedove()){ - translate([0,0, -armendbasethick]) + translate([0, -armendwallthick, -armendbasethick]) Commitid_BestCount_M([length/3, totalwidth]); } } - for (dx = [0 : ratchetstep : length - ratchetstep]) translate([dx,0,0]) { - translate([ratchettoothsmoothr+0.5, armendwallthick/2, 0]) minkowski(){ - rotate([90,0,0]) - cylinder($fn=20, r=ratchettoothsmoothr, h=armendwallthick); - multmatrix([ [ 1, 0, ratchettoothslope, 0 ], - [ 0, 1, 0, 0 ], - [ 0, 0, 1, 0 ], - [ 0, 0, 0, 1 ]]) - cube([ratchettooth - ratchettoothsmoothr*2, - channelwidth, ratchettoothheight - ratchettoothsmoothr]); - } - } } module FilamentCupHandle(){ @@ -687,11 +700,16 @@ storarm_screw_hole_head_slop = 1.5; // calculated +storarm_spools = 2; + storarm_axlerad = hubaxlerad - storarm_axleslop; -storarm_mainlen = hubaxlelen*2 + storarm_axleslop +storarm_mainlen = hubaxlelen*storarm_spools + + storarm_axleslop*(storarm_spools-1) + (storarm_cope_hubaxle_mk1 ? 10 : 0); storarm_totlen = storarm_mainlen + storarm_hooklen; +storarm_taller = storarm_axleslop * (storarm_spools-2); + storarm_mid_off_y = storarm_axlerad; storarm_base_off_y = storarm_mid_off_y + storarm_base_h/2; @@ -709,7 +727,7 @@ module StorageArmDiagPartSide(xmin, xmax){ } } -module StorageArmDiagPart(xmin, xmax, shear, adjbot){ +module StorageArmDiagPart(xmin, xmax, adjbot, shear){ hull(){ StorageArmDiagPartSide(xmin,xmax); @@ -747,23 +765,26 @@ module StorageArmAtMountingHoles(){ module StorageArmRight(){ ////toplevel shear = storarm_hookheight / (storarm_mainlen/2); + shear2 = shear + storarm_taller / (storarm_mainlen/2); + base_xyz = [-storarm_base_d, -storarm_base_off_y, storarm_base_w]; - StorageArmDiagPart(-1, storarm_mainlen/2+1, shear, 0); - StorageArmDiagPart(storarm_mainlen/2-1, storarm_mainlen+1, shear/2, - storarm_hookheight/2); + StorageArmDiagPart(-1, storarm_mainlen/2+1, + -storarm_taller, shear2); + StorageArmDiagPart(storarm_mainlen/2-1, storarm_mainlen+1, + storarm_hookheight/2, shear/2); translate([0, storarm_hookheight, 0]) StorageArmDiagPart(storarm_mainlen, storarm_totlen, - shear/2, -storarm_hookheight/2); + -storarm_hookheight/2, shear/2); difference(){ union(){ hull(){ - translate([-storarm_base_d, -storarm_base_off_y, storarm_base_w]) + translate(base_xyz) rotate([0,90,0]) linear_extrude(height=storarm_base_mind) StorageArmBaseTemplate(); - StorageArmDiagPart(-1, 0, shear, 0); + StorageArmDiagPart(-1, 0, -storarm_taller, shear); } StorageArmAtMountingHoles(){ cylinder(r= storarm_screw_hole_head/2, @@ -778,6 +799,9 @@ module StorageArmRight(){ ////toplevel cylinder(r= (storarm_screw_hole_head + storarm_screw_hole_head_slop)/2, h=20); } + translate(base_xyz + [0, storarm_base_h/4, -storarm_base_w/4]) + rotate([0,90,0]) + Commitid_BestCount([storarm_base_w/2, storarm_base_h/2]); } }