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); }