$fn=150; module lower_cone() { cylinder(10, 30, 40, 0); } module lower_cone_cut_in() { intersection() { translate([0,0,-60]) sphere(70); translate([0,0,-1]) cylinder(50, 28, 28, 0); } } module middle_cylinder() { cylinder(90, 40, 40, 0); } module upper_cone() { color("red") cylinder(20, 40, 30, 0); color("silver") translate([0,0,20]) cylinder(5, 30, 30, 0); } module upper_cone_cut_in() { translate([0,0,21]) difference() { cylinder(5, 27, 29.5, 0); cylinder(2, 26.5, 26, 0); } } union() { color("silver") difference() { lower_cone(); lower_cone_cut_in(); } color("red") translate([0,0,10]) middle_cylinder(); translate([0,0,100]) difference() { upper_cone(); color("silver") upper_cone_cut_in(); } }