eps = 0.01;
infty = 100;
-wall = 1.5;
+wall = 1;
thin_wall = 0.6;
-tube_d = 6;
+tube_d = 6 + 0.3;
tube_zoff = 3;
base_front = 15;
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);
for (x = [-1,1])
scale([x, 1, 1]) {
translate([tube_d/2, -tube_l/2, 0])
- cube([thin_wall, tube_l, tube_zoff + tube_d/2]);
+ cube([wall, tube_l, tube_zoff + tube_d/2]);
}
// upper cylinder clip
translate([0, -tube_l/2, tube_d/2 + tube_zoff])
intersection() {
- rotate([-90, 0, 0])
- cylinder(r = tube_d/2 + thin_wall, h = tube_l);
- translate([-tube_d/2-thin_wall, 0, 0])
- cube([tube_d + 2*thin_wall, tube_l, tube_d]);
+ rotate([-90, 0, 0]) union() {
+ cylinder(r = tube_d/2 + wall, h = tube_l);
+ translate([0, 0, tube_l/2 - wall/2])
+ cylinder(r = tube_d/2 + wall + thin_wall,
+ h = wall);
+ }
+ translate([-tube_d/2-wall, 0, 0])
+ cube([tube_d + 2*wall, tube_l, tube_d]);
}
}
-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);
- // upper clip
- translate([-infty/2, -infty/2, tube_zoff + 5*tube_d/6])
- cube(infty);
+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, h = base_l + 2*eps);
+ // upper clip
+ translate([-infty/2, -infty/2, tube_zoff + 5*tube_d/6])
+ cube(infty);
+
+ // front-side hole
+ translate([0.6*base_front, 0, -eps])
+ scale([1, base_l/base_front, 1])
+ cylinder(r = base_front/4, 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);
+ }
+}
- // front-side hole
- translate([0.6*base_front, 0, -eps])
- scale([1, base_l/base_front, 1])
- cylinder(r = base_front/4, 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);
+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);
+ }
}