base_radius = 10; base_height = 3; stem_height = 25; stem_radius = 5; top_radius = 10; top_height = 6; crown_height = 3; crown_radius = 4; module base() { cylinder(h = base_height, r = base_radius); } module stem() { translate([0, 0, base_height]) cylinder(h = stem_height, r = stem_radius); } module top() { translate([0, 0, base_height + stem_height]) cylinder(h = top_height, r1 = stem_radius, r2 = top_radius); } module crown() { translate([0, 0, base_height + stem_height + top_height]) cylinder(h = crown_height, r1 = top_radius, r2 = crown_radius); } difference() { union() { base(); stem(); top(); crown(); } }