X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamentspool.scad;h=fe29eea1f926f91efcb8fe8c085ac610f63b789d;hp=a912add560f631da4cc8c93120caf2e784e84ca9;hb=ec88462f1c9599abe3f58ffbe82700580eb271ae;hpb=91bd018190e2a30338de7b58bdf7eaa55d3dea03 diff --git a/filamentspool.scad b/filamentspool.scad index a912add..fe29eea 100644 --- a/filamentspool.scad +++ b/filamentspool.scad @@ -46,6 +46,8 @@ // // You will also need 4 x M4 machine screws and nuts. // +// This is the default. +// // ===== Light duty 3-armed spool for 3mm x <=30m coil ===== // // A light duty 3-armed spool suitable for up to around 30m @@ -54,6 +56,8 @@ // Set // fdia=2.85 // lightduty=true +// (or look in filamentspool-lt.scad). +// // And print following parts // Hub // ArmEnd x 3 @@ -119,6 +123,8 @@ // Set // fdia=2.85 // lightduty=false +// (or look in filamentspool-sm.scad). +// // And print one of these, according to taste // StorageArmLeft // StorageArmRight @@ -152,7 +158,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); @@ -242,14 +248,18 @@ nondove_armbase = nondove_armhole_x + nondove_armhole_hole/2 + nondove_armhole_support; echo(nondove_armbase); -real_exteffrad = selsz(exteffrad, - hubeffrad + nondove_armbase, - hubeffrad + nondove_armbase); - include include include include +include + +hub_clip_baseextend = (hubeffrad - DoveClip_depth() + - hubbigrad + hublwidth); + +real_exteffrad = selsz(exteffrad + hub_clip_baseextend, + hubeffrad + DoveClip_depth(), + hubeffrad + nondove_armbase); channelwidth = prongthick + channelslop; channeldepth = prongwidth + ratchettoothheight; @@ -274,59 +284,68 @@ module ArmEnd(length=armend_length){ ////toplevel -armendwallthick + totalwidth/2, -armendbasethick -1]) cylinder(r= nondove_armhole_hole/2, h=totalheight+2, $fn=10); + translate([-nondove_armbase, -armendwallthick, -armendbasethick]) + rotate([90,0,0]) + Commitid_BestCount([nondove_armbase, totalwidth]); } } - 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) { - echo(circum, rad, xlen); - 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) - color("blue"){ - translate([-numbers_tick_width/2, -1, 0]) - cube([numbers_tick_width, numbers_relief+1, numbers_tick_len]); - // echo(fn); - 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 (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]); + 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, -armendwallthick, -armendbasethick]) + Commitid_BestCount_M([length/3, totalwidth]); } } } @@ -359,7 +378,7 @@ module FilamentCupCup(){ } } -module FilamentCup() { ////toplevel +module FilamentCupPositive() { FilamentCupHandle(); gapy = prongwidth; @@ -414,6 +433,14 @@ module FilamentCup() { ////toplevel } } +module FilamentCup() { ////toplevel + difference(){ + FilamentCupPositive(); + translate([0, -stalkwidth, 0]) + Commitid_BestCount_M([stalklength - stalkwidth, stalkwidth]); + } +} + module CupSecuringClipSolid(w,d,h1,h2){ rotate([0,-90,0]) translate([0,-h1/2,-w/2]) linear_extrude(height=w) { polygon(points=[[0,0], [d,0], [d,h2], [0,h1]]); @@ -475,8 +502,7 @@ module Hub(){ ////toplevel difference() { translate([hubeffrad,0,0]) DoveClipPairSane(h=doveclipheight, - baseextend = (hubeffrad - DoveClip_depth() - - hubbigrad + hublwidth)); + baseextend = hub_clip_baseextend); if (hole>hublwidth && holewidth > 2) { translate([hubbigrad + hublwidth, -holewidth/2, -1]) cube([hole, holewidth, hublthick+2]); @@ -512,6 +538,16 @@ module Hub(){ ////toplevel } } translate([0,0,-1]) cylinder($fn=60, h=hubaxlelen+2, r=axlerad); + + rotate([0,0, selsz(0,0,45)]) + translate([axlerad+hublwidth, + -hublwidth/2, + 0]) + rotate([90,0,0]) + Commitid_BestCount([(hubbigrad-hublwidth) - (axlerad+hublwidth), + hublthick + + hublwidth/2 * hubaxlelen/(hubbigrad-axlerad), + ]); } } @@ -945,6 +981,10 @@ module Demo(){ ////toplevel translate([-real_exteffrad,-20,0]) Hub(); ArmEnd(); translate([ratchettooth*2, 30, 0]) FilamentCup(); + if (selsz(true,false,false)) { + translate([-exteffrad + hubeffrad - hub_clip_baseextend, -10, 0]) + ArmExtender(); + } } //ArmEnd();