+infty = 100;
+eps = 0.01;
+
+base_h = 3;
+base_d = 39;
+
+tube_d1 = 27.5;
+tube_h1 = 8;
+
+tube_d2 = 23.5;
+tube_h2 = 12;
+
+tube_wall = 2;
+
+// rotate([90, 0, 0])
+difference() {
+ union() {
+ difference() {
+ cylinder(r = base_d/2, h = base_h, $fn = 128);
+ translate([0, 0, base_h/2])
+ cylinder(r1 = base_d/2-2, r2 = base_d/2-1,
+ h = base_h/2+eps, $fn = 128);
+ }
+ translate([0, 0, base_h/2-eps])
+ cylinder(r1 = tube_d1/2+1, r2 = tube_d1/2,
+ h = base_h/2+eps, $fn = 128);
+ cylinder(r = tube_d1/2, h = base_h + tube_h1, $fn = 6);
+ cylinder(r = tube_d2/2, h = base_h + tube_h1 + tube_h2, $fn = 6);
+ }
+ translate([0, 0, base_h])
+ cylinder(r = tube_d2/2-tube_wall, h = tube_h1 + tube_h2 + eps, $fn = 6);
+ // for debugging
+ // translate([-infty/2, 3, -eps]) cube(infty);
+ // translate([-infty/2, -3-infty, -eps]) cube(infty);
+}
+
+