candle_r = 20; candle_h = 15; holder_rim = 2; holder_bottom = 2; holder_space = (candle_h+holder_bottom)/2; //holder_space = 5; arm_length = 1.5*candle_r; center_height = holder_space*10; echo("center height: ", center_height); //demo(); // You will need 8 of these, one per day. //arm(); // You need one of these. //center(); // You will need one of these shamash_holder(); module demo() { center(); translate([0, 0, holder_space*9]) shamash_holder(); for (i=[0:7]) { rotate(a=i*360/8, v=[0, 0, 1]) translate([0, 0, holder_space*(i+1)]) arm(); } } module arm() { nut(); translate([candle_r, 0, 0]) cube([arm_length, holder_rim, holder_space]); translate([candle_r+arm_length+candle_r, 0, 0]) holder(); } module nut() { difference () { cylinder(r=candle_r+holder_rim, h=holder_space); translate([0, 0, -1]) center_star_for_neg(); } } module shamash_holder() { translate([0, 0, holder_space]) holder(); nut(); } module holder() { difference() { cylinder(r=candle_r+holder_rim, h=candle_h+holder_bottom); translate([0, 0, 1]) cylinder(r=candle_r, h=candle_h+2); } } module center_star() { for (i = [0:7]) rotate(a=i*360/8, v=[0, 0, 1]) translate([0, -holder_rim/2, 0]) cube([candle_r*3/4, holder_rim, center_height]); } module center_star_for_neg() { for (i = [0:7]) rotate(a=i*360/8, v=[0, 0, 1]) translate([0, -holder_rim, 0]) cube([candle_r*0.90, holder_rim*2, center_height]); cylinder(h=center_height, r=candle_r*0.5); } module center() { center_star(); cylinder(r=candle_r+holder_rim, h=holder_space); }