X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=blobdiff_plain;f=filamenttrestle.scad;h=924135230e684cd1c6b69d23ee08cdcbf987a488;hp=fac82b7f3c95e5e614a69100d7e4075fb8d0557e;hb=a29c73bb71de340433ee51a5ed92c04a39ea67ea;hpb=5476e5ba105673b154b43445d884cafb28d875fa diff --git a/filamenttrestle.scad b/filamenttrestle.scad index fac82b7..9241352 100644 --- a/filamenttrestle.scad +++ b/filamenttrestle.scad @@ -1,6 +1,8 @@ // -*- C -*- spoolwidth = 80; // fixme needs to be measured +trestleheight = 80; // fixme needs to be checked +trestlebase = 80; // fixme needs to be checked include @@ -9,10 +11,48 @@ barrady = 5; barradz = 7; guidewidth = 3; guiderad = 20; -clipdepth = 16; -clipcount = 3; -module Bar(){ +legw = 12; +plugl = 20; +plugwmin = 3; +plugh = 10; +plugslope = 0.5; +plugwmax = plugwmin + plugh * plugslope * 2; + +trestlelegw = 10; +trestlebaseh = 10; +trestleplugd = 1; + +topblockthick = 4; +topblockbasedepth = 5; + +pinbasew = 5.0; +pinminh = 1.5; +pinmaxh = 4.5; +pindh = 0.50; +pindwidth = 0.75; + +pintaperlen = plugwmax * 0.85; +pinstraightlen = 10; + +module Plug(d=0){ + dw = d; + dh = d; + dhb = d*2; + a = atan(plugslope); + bdy = -dhb; + bdx = dw / cos(a) + bdy * plugslope; + tdy = dh; + tdx = bdx + tdy * plugslope; + translate([-d,0,0]) rotate([90,0,90]) linear_extrude(height=plugl+0.1+d*2){ + polygon([[-(plugwmin/2 + bdx), bdy], + [-(plugwmax/2 + tdx), plugh + tdy], + [+(plugwmax/2 + tdx), plugh + tdy], + [+(plugwmin/2 + bdx), bdy]]); + } +} + +module Bar(){ ////toplevel spoolw = spoolwidth + spoolwidthgap*2; barz = barradz * 0.5; biggestw = spoolw + 50; @@ -26,11 +66,8 @@ module Bar(){ translate([spoolw/2,0,0]) rotate([0,90,0]) cylinder(r=guiderad, h=guidewidth, $fn=60); } - translate([spoolw/2 + guidewidth + - DoveClipPairSane_width(clipcount)/2 - 0.1, - clipdepth/2, -0.01]) - rotate([90,90,0]) - DoveClipPairSane(h=clipdepth, count=clipcount, baseextend=barrady); + translate([spoolw/2 + guidewidth, 0, 0]) + Plug(); } } translate([-biggestw/2, -50, 0]) @@ -38,4 +75,100 @@ module Bar(){ } } -Bar(); +module Trestle(){ ////toplevel + legang = atan2(trestlebase/2, trestleheight); + eplen = sqrt(trestleheight*trestleheight + trestlebase*trestlebase*0.25); + topblockw = plugwmax + trestleplugd*2 + topblockthick*2; + + pinholebasew = pinbasew + pindwidth*2; + pinholeh = pinmaxh + pindh; + + difference(){ + union(){ + for (mir=[0,1]) { + mirror([mir,0,0]) { + rotate([0,0, -90-legang]) + ExtenderPillars(length=eplen+trestlelegw, + width=trestlelegw, + height=legw, + baseweb=true); + + translate([-trestlebase/2, -trestleheight, 0]) + cylinder(r=trestlelegw/2*1.2, h=plugl); + } + } + translate([-topblockw/2, -topblockbasedepth, 0]) + cube([topblockw, + topblockbasedepth + plugh + topblockthick + + (pinmaxh - pinminh)*0.6 + pindh, + plugl]); + + translate([-trestlebase/2, -trestleheight, 0]) + ExtenderPillars(length=trestlebase, width=trestlebaseh*2, height=legw); + } + translate([-300, -trestleheight-50, -1]) + cube([600, 50, plugl+2]); + + rotate([-90,-90,0]) + Plug(d=trestleplugd); + + for (rot=[0,180]) { + translate([0,0,plugl/2]) rotate([0,rot,0]) translate([0,0,-plugl/2]) { + translate([-(topblockw*0.25+1), + plugh + pindh - (pinmaxh - pinminh)*0.75, + (plugl - pinholebasew*2)/3]) { + translate([0,0,pinholebasew/2]) rotate([-90,0,0]) %Pin(); + rotate([0,90,0]) { + linear_extrude(height = topblockw*1.0+2) { + polygon([[-1.0 * pinholebasew, -0.01], + [-0.5 * pinholebasew, pinholeh], + [ 0 , -0.01]]); + } + } + } + } + } + } +} + +module Pin(){ ////toplevel + rotate([90,0,90]) { + hull(){ + for (mir=[0,1]) { + mirror([mir,0,0]) { + linear_extrude(height=0.1) { + polygon([[-0.01, 0], + [-0.01, pinminh], + [pinbasew*0.5*(pinminh/pinmaxh), 0]]); + } + translate([0,0,pintaperlen]) + linear_extrude(height=pinstraightlen) { + polygon([[-0.01, 0], + [-0.01, pinmaxh], + [pinbasew*0.5, 0]]); + } + } + } + } + } +} + +module TestKit(){ ////toplevel + translate([30,0,0]) Pin(); + translate([30,30,0]) Pin(); + translate([0,40,0]) intersection(){ + Trestle(); + translate([-50,-10,-1]) cube([100,100,100]); + } + intersection(){ + translate([-60,0,0]) Bar(); + cube(50,center=true); + } +} + +//Bar(); +//Trestle(); +//Pin(); +//TestKit(); +//Plug(d=1); +//ExtenderPillars(80,12,8, baseweb=true);