$fn=20; module roundcube(size, radius, center=true) { minkowski() { cube([size.x-radius*2, size.y-radius*2, size.z-radius*2], center=center); sphere(radius); } } module choc_stem(draftAng = 5) { stemHeight = 3.1; dia = .15; wids = 1.2/2; lens = 2.9/2; module Stem() { difference(){ translate([0,0,-stemHeight/2])linear_extrude(height = stemHeight)hull(){ translate([wids-dia,-3/2])circle(d=dia); translate([-wids+dia,-3/2])circle(d=dia); translate([wids-dia, 3/2])circle(d=dia); translate([-wids+dia, 3/2])circle(d=dia); } //cuts translate([3.9,0])cylinder(d1=7+sin(draftAng)*stemHeight, d2=7,3.5, center = true, $fn = 64); translate([-3.9,0])cylinder(d1=7+sin(draftAng)*stemHeight,d2=7,3.5, center = true, $fn = 64); } } translate([5.7/2,0,-stemHeight/2+2])Stem(); translate([-5.7/2,0,-stemHeight/2+2])Stem(); translate([2.7,-7, 1.7]) cube([0.2,14, 1]); translate([-2.7,-7, 1.7]) cube([0.2,14, 1]); translate([-7,1, 1.7]) cube([14,0.2, 1]); translate([-7,-1, 1.7]) cube([14,0.2, 1]); } difference() { union() { choc_stem(); translate([32.25, 0 ,0]) choc_stem(); translate([-32.25, 0 ,0]) choc_stem(); difference() { translate([0,0,2.5]) roundcube([91, 17, 5], 1.5, center=true); translate([0,0,-0.6]) roundcube([89, 14.5, 5], 1.5, center=true); translate([0,0,-4]) cube([100, 20, 10], center=true); translate([0,0,36]) rotate([0,90,0]) cylinder(h=80, r=32, center=true, $fn=200); translate([-40,0,36]) rotate([0,90,0]) sphere(32, $fn=200); translate([40,0,36]) rotate([0,90,0]) sphere(32, $fn=200); } } //translate([0, -20, 0]) cube(80, 80, 80); }