From: Ian Jackson Date: Sun, 7 Oct 2012 15:35:22 +0000 (+0100) Subject: filamenttrestle wip trestle looks good X-Git-Tag: filamentspool-v2-release~752^2~5 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=reprap-play.git;a=commitdiff_plain;h=7afa43a18342d0af7d2714302d3ba2c8a50d3be0 filamenttrestle wip trestle looks good --- diff --git a/filamenttrestle.scad b/filamenttrestle.scad index 3b2c0af..5b5e724 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 @@ -16,18 +18,25 @@ plugh = 10; plugslope = 0.5; plugwmax = plugwmin + plugh * plugslope * 2; +trestlelegw = 10; +trestlebaseh = 10; +trestleplugd = 1; + +topcylthick = 3; +topcylbasedepth = 7; + module Plug(d=0){ 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){ + translate([-d,0,0]) rotate([90,0,90]) linear_extrude(height=plugl+0.1+d*2){ polygon([[-(plugwmax/2 + bdx), 0], [-(plugwmin/2 + tdx), plugh + tdy], [+(plugwmin/2 + tdx), plugh + tdy], [+(plugwmax/2 + bdx), 0]]); } - translate([plugl + DoveClip_depth()*0.7, 0, 0]) + translate([plugl + DoveClip_depth()*0.7 + d, 0, 0]) DoveClipPairSane(count=1, h=plugh-0.1); } @@ -54,5 +63,44 @@ 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); + + translate([-trestlebase/2, -trestleheight, 0]) + cylinder(r=trestlelegw/2*1.2, h=plugl); + } + } + intersection(){ + 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(); //Plug(d=1); +Trestle();