include d_up = 70; d_down = 60; t = 2; h_total = 230; h_in = 40; bot_h = 10; bot_size = d_down + 35; $fn = 36; d_mid = d_up - (d_up-d_down) * ((h_in)/h_total); union() { down(h_total) cyl(d=bot_size, h=bot_h, rounding1=1, rounding2=5); difference() { down(h_total/2) cyl(d2=d_up, d1=d_down, h=h_total, rounding1=10); down(h_in/2-0.01) cyl(d2=d_up-t, d1=d_mid-t, h=h_in, rounding1=5); } }