From fa598b80b7b55415f1e5ba311327856b6a7a18d2 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 16 Sep 2012 15:15:20 +0100 Subject: [PATCH] doveclip DoveClipExtender has rounded pillars --- doveclip.scad | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/doveclip.scad b/doveclip.scad index cc2a02b..7c9c1a3 100644 --- a/doveclip.scad +++ b/doveclip.scad @@ -77,26 +77,45 @@ function DoveClipPairSane_width(count=2) = 2 * (nomrad + jawthick + ((nomrad*2 + jawthick) * (count-1)/2)); module DoveClipExtender(length, ha=7, hb=7, counta=2, countb=2, - pillarw=3, pillarh=6, webthick=1) { + pillarw=3.5, pillarslope=0.75, webthick=1) { mirror([1,0,0]) DoveClipPairSane(h=ha, count=counta); translate([length,0,0]) DoveClipPairSane(h=hb, count=countb); pillarlen = length - DoveClip_depth() * 2 + 2; - pilesw = - min(DoveClipPairSane_width(counta), DoveClipPairSane_width(countb)) - 0.5; + pilesw = min(DoveClipPairSane_width(counta), DoveClipPairSane_width(countb)) + - 0.5 - pillarw*2; pilesh = min(ha, hb) - 0.5; d = 0.25; echo(pilesh); + + intangle = atan(pillarslope); + polyjx = sin(intangle)*pillarw; + polyjy = cos(intangle)*pillarw; + polyex = -tan(intangle+90)*pillarw; + webmidy = pilesh/2+d; + translate([DoveClip_depth() - 1, 0, 0]) { - for (mir=[0,1]) mirror([0,mir,0]) translate([0,-pilesw/2,0]) { - mirror([1,0,0]) rotate([0,-90,0]) linear_extrude(height=pillarlen){ - polygon([[0,0], [pillarh,0], [0,pillarw]]); - polygon([[pilesh,0], [pilesh-pillarh,0], [pilesh,pillarw]]); - polygon([[0,d], [0,webthick], [pilesh-d,webthick], [pilesh-d,0]]); + for (ymir=[0,1]) mirror([0,ymir,0]) translate([0,-pilesw/2,0]) { + for (xmir=[0,1]) + translate([0,0,pilesh/2]) mirror([0,0,xmir]) + translate([0,0,-pilesh/2]) { + intersection() { + translate([-1, -pillarw-5, 0.01]) + cube([pillarlen+2, pilesh+pillarw*2+10, pilesw]); + mirror([1,0,0]) rotate([0,-90,0]) + linear_extrude(height=pillarlen) union(){ + circle(r=pillarw, $fn=20); + polygon([[polyjx,polyjy-0.1], [polyex, 0], + [polyjx,-(polyjy-0.1)]]); + //polygon([[pilesh,0], [pilesh-pillarh,0], [pilesh,pillarw]]); + polygon([[0,-webthick/2], [0,webthick/2], + [webmidy,webthick/2], [webmidy,-webthick/2]]); + } + } + } } - } } } -//DoveClipExtender(length=100, ha=16, hb=12, counta=3, countb=4); +//DoveClipExtender(length=100, ha=16, hb=20, counta=3, countb=4); -- 2.30.2