X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=filamenttrestle.scad;h=7f751f9d3a61f029fa6aad340fef7f447027feef;hb=da007ff1f40070f936a7aed64dcd8a75a5f3122d;hp=74f6fb609a54a04c646e8f392f346c2e4fe96dcd;hpb=23eb021b6712483be842fa8903e68bc6e1088b66;p=reprap-play.git diff --git a/filamenttrestle.scad b/filamenttrestle.scad index 74f6fb6..7f751f9 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 @@ -11,24 +13,37 @@ guidewidth = 3; guiderad = 20; plugl = 12; -plugwmin = 4; +plugwmin = 3; plugh = 10; plugslope = 0.5; -plugwmax = plugwmin + plugh * plugslope; +plugwmax = plugwmin + plugh * plugslope * 2; + +trestlelegw = 10; +trestlebaseh = 10; +trestleplugd = 1; + +topblockthick = 3; +topblockbasedepth = 4; + +pinbasew = 3; +pinminh = 1.0; +pinmaxh = 3; +pindh = 1.0; +pindwidth = 1.0; module Plug(d=0){ + dw = d; + dh = d; a = atan(plugslope); - tdx = d * cos(a); - tdy = d * sin(a); - bdx = d / cos(a); - rotate([90,0,90]) linear_extrude(height=plugl+0.1){ - polygon([[-(plugwmax + bdx), 0], - [-(plugwmin + tdx), plugh + tdy], - [+(plugwmin + tdx), plugh + tdy], - [+(plugwmax + bdx), 0]]); + bdx = dw / cos(a); + tdy = dh; + tdx = bdx + dh * plugslope; + translate([-d,0,0]) rotate([90,0,90]) linear_extrude(height=plugl+0.1+d*2){ + polygon([[-(plugwmin/2 + bdx), 0], + [-(plugwmax/2 + tdx), plugh + tdy], + [+(plugwmax/2 + tdx), plugh + tdy], + [+(plugwmin/2 + bdx), 0]]); } - translate([plugl + DoveClip_depth()*0.7, 0, 0]) - DoveClipPairSane(count=1, h=plugh); } module Bar(){ @@ -54,5 +69,58 @@ module Bar(){ } } -Bar(); +module Trestle(){ + legang = atan2(trestlebase/2, trestleheight); + eplen = sqrt(trestleheight*trestleheight + trestlebase*trestlebase*0.25); + topblockw = plugwmax + topblockthick*2; + + pinholebasew = pinbasew + pindwidth; + pinholeh = pinminh + pindh; + + difference(){ + union(){ + for (mir=[0,1]) { + mirror([mir,0,0]) { + rotate([0,0, -90-legang]) + ExtenderPillars(length=eplen+trestlelegw, + width=trestlelegw, + height=plugl, + 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, plugl]); + + translate([-trestlebase/2, -trestleheight, 0]) + ExtenderPillars(length=trestlebase, width=trestlebaseh*2, height=plugl); + } + 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)/2, + (plugl - pinholebasew*2)/3]) rotate([0,90,0]) { + linear_extrude(height = topblockw*1.0+2) { + polygon([[-1.0 * pinholebasew, -0.01], + [-0.5 * pinholebasew, pinholeh], + [ 0 , -0.01]]); + } + } + } + } + } +} + +//Bar(); +Trestle(); + //Plug(d=1); +//ExtenderPillars(80,12,8, baseweb=true);