eps = 0.01;
-infty = 200;
+infty = 100;
wall = 1.5;
thin_wall = 0.6;
-tube_d = 10;
-tube_zoff = thin_wall + 3;
+tube_d = 6;
+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() {
// 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([thin_wall, tube_l, 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])
- cylinder(r = tube_d/2 + thin_wall, h = base_l/6);
+ cylinder(r = tube_d/2 + thin_wall, h = tube_l);
translate([-tube_d/2-thin_wall, 0, 0])
- cube([tube_d + 2*thin_wall, base_l/6, tube_d/3]);
+ cube([tube_d + 2*thin_wall, tube_l, tube_d]);
}
}
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);
+ // 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);
}