]> www.fi.muni.cz Git - things.git/blobdiff - wing-tube-support.scad
switch holder.scad
[things.git] / wing-tube-support.scad
index b43ffaafed5df19b56e64c7f8656c13c8f806a89..4fe68720aaa4e9502c0282e3081cd7eb38612b79 100644 (file)
 eps = 0.01;
-infty = 200;
+infty = 100;
 
-wall = 1.5;
+wall = 1.2;
 thin_wall = 0.6;
 
-tube_d = 10;
-tube_zoff = thin_wall + 3;
+tube_d = 6 + 0.1;
+tube_zoff = 3;
 
-base_w = 60;
-base_l = 45;
+base_front = 15;
+base_rear  = 25;
+base_w = base_front + base_rear;
+base_l = 15;
 
-/*
-module body() {
-       hull() {
-//             translate([-fuse_tube_d/2-wall, -fuse_tube_l/2, 0])
-//                     cube([fuse_tube_d + 2*wall, fuse_tube_l, fuse_tube_d + 2*wall]);
-               translate([0, fuse_tube_l/2, fuse_tube_d/2+wall])
-               rotate([90, 0, 0])
-                       cylinder(r = fuse_tube_d/2+wall, h = fuse_tube_l);
-               translate([-fuse_tube_d/2-wall, -base_l/2+wall/2, 0])
-                       cube([fuse_tube_d + 2*wall, base_l-wall, thin_wall]);
-       }
-}
-
-module holder() {
-       difference() {
-               body();
-               translate([0, infty/2, fuse_tube_d/2+wall])
-               rotate([90, 0, 0])
-                       cylinder(r = fuse_tube_d/2, h = infty + 2*eps);
-               translate([-slot_w/2, -infty/2, fuse_tube_d/2+wall])
-                       cube([slot_w, infty, fuse_tube_d/2+wall+eps]);
-       }
-}
-*/
+tube_l = base_l/2;
+base_overhang = 0.9; // factor of base_front, base_r, base_l
 
-module body() {
+module body(tube_zoff) {
        // base
        // scale([1, base_l/base_w, 1])
        // cylinder(r = base_w/2, h = thin_wall);
-       translate([-base_w/2, -base_l/2, 0]) cube([base_w, base_l, thin_wall]);
+       translate([-base_rear, -base_l/2, 0]) cube([base_w, base_l, thin_wall]);
 
-       // side supports
+       // front diagonal supports
        for (y = [-1,1]) 
-       for (x = [-1,1])
-       scale([x, y, 1])  hull() {
-               translate([base_w/2-thin_wall, -base_l/2, 0])
-                       cube([thin_wall, thin_wall, thin_wall]);
-               translate([-thin_wall/2, -base_l/2, 0])
-                       cube([thin_wall, thin_wall, tube_zoff + tube_d-thin_wall]);
+       scale([1, y, 1])  hull() {
+               translate([base_overhang*base_front-thin_wall/2, base_overhang*base_l/2-thin_wall/2, 0])
+                       cylinder(r = thin_wall/2, h = thin_wall, $fn = 16);
+               translate([0, tube_l/3-thin_wall/2, 0])
+                       cylinder(r = thin_wall/2, h = tube_zoff + tube_d, $fn = 16);
        }
 
-       // diagonal supports
+       // rear diagonal supports
        for (y = [-1,1]) 
-       for (x = [-1,1])
-       scale([x, y, 1])  hull() {
-               translate([base_w/2-thin_wall/2, base_l/3, 0])
+       scale([1, y, 1])  hull() {
+               translate([-base_overhang*base_rear+thin_wall/2, base_overhang*base_l/2-thin_wall/2, 0])
                        cylinder(r = thin_wall/2, h = thin_wall, $fn = 16);
-               translate([0, -base_l/2+thin_wall/2, 0])
-                       cylinder(r = thin_wall/2, h = tube_zoff + tube_d - thin_wall, $fn = 16);
+               translate([0, tube_l/3-thin_wall/2, 0])
+                       cylinder(r = thin_wall/2, h = tube_zoff + tube_d, $fn = 16);
        }
 
        // under the tube supports
        for (y = [-1,1]) 
        scale([1, y, 1])  hull() {
-               translate([thin_wall/2, -base_l/4, 0])
-                       cube([thin_wall, thin_wall, thin_wall]);
-               translate([-thin_wall/2, -base_l/2, 0])
-                       cube([thin_wall, thin_wall, tube_zoff + 2*tube_d/3]);
+               translate([0, base_overhang*base_l/2, 0])
+                       cylinder(r = thin_wall/2, h = thin_wall, $fn = 16);
+               translate([-thin_wall/2, 0, 0])
+                       cube([thin_wall, tube_l/2, tube_zoff]);
        }
 
        // side bottom tube supports
-       for (y = [-1,1]) 
        for (x = [-1,1])
-       scale([x, y, 1])  hull() {
-               translate([tube_d/2, base_l/3, 0])
-                       cube([thin_wall, base_l/6, tube_zoff + tube_d/2]);
+       scale([x, 1, 1]) {
+               translate([tube_d/2, -tube_l/2, 0])
+                       cube([wall, tube_l, tube_zoff + tube_d/2]);
+               translate([tube_d/2+wall, -wall, 0])
+                       cube([wall, 2*wall, tube_zoff + tube_d/2]);
        }
 
        // upper cylinder clip
-       for (y = [-1,1])
-       scale([1, y, 1])
-       translate([0, base_l/3, tube_d/2 + tube_zoff])
+       translate([0, -tube_l/2, tube_d/2 + tube_zoff])
        intersection() {
+               rotate([-90, 0, 0]) union() {
+                       cylinder(r = tube_d/2 + wall, h = tube_l);
+                       translate([0, 0, tube_l/2 - wall])
+                               cylinder(r = tube_d/2 + 2*wall,
+                                       h = 2*wall);
+               }
+               translate([-tube_d/2-2*wall, 0, 0])
+                       cube([tube_d + 4*wall, tube_l, tube_d]);
+       }
+}
+
+module wing_tube_support(tube_zoff) {
+       difference() {
+               body(tube_zoff);
+               // main tube
+               translate([0, -base_l/2-eps, tube_d/2+tube_zoff])
                rotate([-90, 0, 0])
-                       cylinder(r = tube_d/2 + thin_wall, h = base_l/6);
-               translate([-tube_d/2-thin_wall, 0, 0])
-                       cube([tube_d + 2*thin_wall, base_l/6, tube_d/3]);
+                       cylinder(r = tube_d/2, h = base_l + 2*eps, $fn = 32);
+               // upper clip
+               translate([-infty/2, -infty/2, tube_zoff + 5*tube_d/6])
+                       cube(infty);
+
+               // front-side hole
+               translate([0.7*base_front, 0, -eps])
+                       scale([1, base_l/base_front, 1])
+                       cylinder(r = base_front/5, h = thin_wall + 2*eps);
+               // rear-side hole
+               translate([-0.6*base_rear, 0, -eps])
+                       scale([1, base_l/base_rear, 1])
+                       cylinder(r = base_rear/4, h = thin_wall + 2*eps);
        }
 }
 
-difference() {
-       body();
-       // main tube
-       translate([0, -base_l/2-eps, tube_d/2+tube_zoff])
-       rotate([-90, 0, 0])
-               cylinder(r = tube_d/2, h = base_l + 2*eps);
-       // central hole in the base plate
-       translate([0, 0, -eps]) scale ([1, base_l/base_w, 1])
-               cylinder(r = base_w/6, h = thin_wall+2*eps);
-       // side holes in the base plate
-       for (y = [-1, 1])
-       for (x = [-1, 1])
-       scale([x, y, 1])
-       translate([0.3*base_w, 0.3*base_l, -eps]) 
-               cylinder(r = base_w/10, h = thin_wall+2*eps);
+for (q = [-1,1]) {
+       scale([q, 1, 1]) translate([-base_front - 5, 0, 0]) {
+                       wing_tube_support(1.7);
+               translate([0, -base_l -5, 0])
+                       wing_tube_support(2.8);
+               translate([0, base_l + 5, 0])
+                       wing_tube_support(0.6);
+       }
 }