X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=filamenttrestle.scad;h=2ebccdcadca615b52ad17ed4135212dcf66f548f;hb=6805b4e32f51188f9541ed40d00c8f1e242dbc1d;hp=fac82b7f3c95e5e614a69100d7e4075fb8d0557e;hpb=5476e5ba105673b154b43445d884cafb28d875fa;p=reprap-play.git diff --git a/filamenttrestle.scad b/filamenttrestle.scad index fac82b7..2ebccdc 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,8 +11,32 @@ barrady = 5; barradz = 7; guidewidth = 3; guiderad = 20; -clipdepth = 16; -clipcount = 3; + +plugl = 12; +plugwmin = 3; +plugh = 10; +plugslope = 0.5; +plugwmax = plugwmin + plugh * plugslope * 2; + +trestlelegw = 10; +trestlebaseh = 10; +trestleplugd = 1; + +topcylthick = 3; +topcylbasedepth = 4; + +module Plug(d=0){ + a = -atan(plugslope); + tdx = d * cos(a); + tdy = d * sin(a); + bdx = d / cos(a); + 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]]); + } +} module Bar(){ spoolw = spoolwidth + spoolwidthgap*2; @@ -26,11 +52,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 +61,48 @@ module Bar(){ } } -Bar(); +module Trestle(){ + legang = atan2(trestlebase/2, trestleheight); + eplen = sqrt(trestleheight*trestleheight + trestlebase*trestlebase*0.25); + topcylr = max(plugwmax/2, + trestlelegw/2, + sqrt(plugwmin*2/4 + plugh*plugh) + ) + topcylthick + trestleplugd; + + 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); + } + } + intersection(){ + translate([0, 3, 0]) + cylinder(r=topcylr, h=plugl); + translate([-50, -topcylbasedepth, -1]) + cube([100, 50, plugl+2]); + } + + 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); + } +} + +//Bar(); +Trestle(); + +//Plug(d=1); +//ExtenderPillars(80,12,8, baseweb=true);