module wire_dispenser(){ axle_length=180; module wire_dispenser_side(){ // Parameters base_number=63; axle_holder_width=base_number/8; axle_holder_height=35; axle_diameter=22; axle_shift=43; sphere_radius=3; minkowski(){ difference(){ union(){ translate([base_number/4,0,0]){ cylinder(d=base_number,axle_holder_width,$fn=3); } translate([base_number/4,-base_number/4,0]){ cube([axle_holder_height,base_number/2,base_number/8]); } } translate([axle_shift,0,2]){ cylinder(d=axle_diameter + (sphere_radius*2), h=(base_number/2)); } } sphere(sphere_radius); } } module mirror_copy(mirrorvector){ children(); mirror( mirrorvector ) children(); } mirror_copy([0,0,1]) translate([0,0,-((axle_length/2)+5)])wire_dispenser_side(); minkowski(){ union(){ translate([1,0,0]) cube([2,50,axle_length], center=true); translate([10,-25,0]) cube([20,5,axle_length+10], center=true); } sphere(3); } } rotate([0,-90,0]){ difference(){ wire_dispenser(); #for (i = [-58 : 29 : 58]){ translate([12,-15,i]) rotate([90,0,0]) cylinder(d=2,h=20); } } }