width = 337; height = 174; thickness = 3; tube_diam = 125; wall_thickness = 3; tube_mount_height = 30; conical_height = 40; cone_scale_x = 2.5; cone_scale_y = 1.2; $fn = 100; difference(){ union(){ difference(){ cube(size=[width, height, thickness], center=true); scale([cone_scale_x, cone_scale_y, 1]) cylinder(r=tube_diam/2-wall_thickness, h=2*thickness, center=true); } translate([0,0, (tube_mount_height+thickness)/2+conical_height]) difference(){ cylinder(r=tube_diam/2, h=tube_mount_height, center=true); cylinder(r=tube_diam/2-wall_thickness, h=tube_mount_height+1, center=true); } translate([0, 0, (conical_height+thickness)/2]) walledCone(tube_diam); // translate([0, 0, (conical_height+thickness)/2]) // difference(){ // cylinder(h=conical_height, r1=tube_diam/2+20, r2=tube_diam/2, center=true); // cylinder(h=conical_height+1, r1=tube_diam/2+20-wall_thickness, r2=tube_diam/2-wall_thickness, center=true); // } } translate([width/2, 0, -5]) cube([width,height+5,200], center=true); } module cone(diam, hei=conical_height){ hull(){ scale([cone_scale_x, cone_scale_y, 1]) cylinder(h=hei, r1=diam/2, r2=0, center=true); cylinder(h=hei, r=diam/2, center=true); } } module walledCone(diam){ difference(){ cone(diam); cone(diam-2*wall_thickness, hei=conical_height+0.1); } }