X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=wing-tube-support.scad;h=4fe68720aaa4e9502c0282e3081cd7eb38612b79;hb=HEAD;hp=d07bd1ee7bfac3892e54b0b879af0c981019e957;hpb=8166e64fdded61a735c34502db86444fc5c0c6fe;p=things.git diff --git a/wing-tube-support.scad b/wing-tube-support.scad index d07bd1e..4fe6872 100644 --- a/wing-tube-support.scad +++ b/wing-tube-support.scad @@ -1,99 +1,104 @@ 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]); - } -} +tube_l = base_l/2; +base_overhang = 0.9; // factor of base_front, base_r, base_l -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]); - } -} -*/ - -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, base_l/3, 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_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, 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); +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); + } }