chiark / gitweb /
10254 better thinner - no holes
[dl-things.git] / th-10254 / tower-base.scad
index bc86efce15d114914b3d2eae418613df78e69382..a96143c39e7899485e4f94463aeab7880aa69b24 100644 (file)
@@ -1,17 +1,58 @@
 
 motorwidth=35.2;
 motorheight=36.5;
+totalheight=65;
 
 pillarthick=8;
-sidethick=3;
+sidethick=2.5;
+archthick=6.5;
+frameextra=3.5;
+framesplay=1;
+botleftgap=4.5;
+botleftstand=0.75;
+archoutwards=(pillarthick-archthick)/sqrt(8);
+
+dovebasecutcylz=4;
+dovebasecutcylr=10;
+
+d=0.01;
 
 mw2=motorwidth/2;
 
+include <Libs.scad> //  Libs.scad is @ http://www.thingiverse.com/thing:6021
+
 module corner() {
        $fn=30;
+       frameheight= motorheight + frameextra;
+       slopeheight= totalheight - frameheight;
+       slope = (mw2 + archoutwards - framesplay)/slopeheight;
+       echo(sqrt(2)*slope);
+
        translate([-mw2,-mw2,0]) union(){
-               cylinder(r=pillarthick/2, h=motorheight);
-               translate([0,0,motorheight]) sphere(r=pillarthick/2);
+               difference(){
+                       union(){
+                               cylinder(r=pillarthick/2, h=frameheight);
+                               translate([0,0,frameheight])
+                                       sphere(r=pillarthick/2);
+                       }
+                       translate([d,d,-1])
+                               cube([mw2-1,mw2-1,frameheight+pillarthick+2]);
+               }
+               intersection(){
+                       multmatrix
+                          ([   [       1,      0,      slope,  -archoutwards ],
+                               [       0,      1,      slope,  -archoutwards ],
+                               [       0,      0,      1, frameheight  ],
+                               [       0,      0,      0,      1       ]])
+                               translate([0,0,-frameextra])
+                               cylinder(r=archthick/2,
+                                        h=slopeheight+frameextra);
+                       union() {
+                               cylinder(r=pillarthick/2, h=frameheight);
+                               translate([-100,-100,frameheight])
+                                       cube([200,200,100]);
+                       }
+               }
        }
 }
 
@@ -33,15 +74,11 @@ module halfside() {
                                      spacesz * sqrt(2)]);
                }
                intersection(){
-                       union(){
-                               translate([-mw2+pillarthick/3,
-                                          -sidethick, panelbasez])
-                                       rotate([0,45,0])
-                                       translate([0,0,-sidethick])
-                                       cube([100, sidethick, sidethick]);
-                               translate([0,
-                                          -sidethick,
-                                          panelbasez + sidethick/sqrt(2)])
+                       for (xz=[[-mw2+pillarthick/3-sidethick, 0,
+                                       panelbasez+sidethick],
+                                [0, 0, panelbasez + sidethick/sqrt(2)]]) {
+                               translate(xz)
+                               translate([0,-sidethick,0])
                                        rotate([0,45,0])
                                        translate([0,0,-sidethick])
                                        cube([100, sidethick, sidethick]);
@@ -63,9 +100,22 @@ module towerbase() {
                                rotate([0,0,angle]) mirror([1,0,0]) halfside();
                        }
                }
-               translate([-mw2,-mw2,-1])
-                       cube([motorwidth,motorwidth,motorheight]);
+               multmatrix([[   -1,     0,      0, -mw2 - botleftstand ],
+                       [       0,      1,      0,      -100    ],
+                       [       1,      0,      1, -100 + botleftgap ],
+                       [       0,      0,      0,      1       ] ])
+                       cube([100,200,100]);
        }
+       translate([0,0,totalheight])
+               rotate([0,-90,0])
+               intersection(){
+                       dovetail(height=10.1, male=true);
+                       translate([dovebasecutcylz,0,-100])
+                               cylinder(r=dovebasecutcylr,h=200);
+               };
 }
 
-towerbase();
+//intersection(){
+       towerbase();
+//     translate([-100,-100,0]) cube([200,200,32]);
+//}