diff --git a/images/wire_dispenser.png b/images/wire_dispenser.png new file mode 100644 index 0000000..a8d441c Binary files /dev/null and b/images/wire_dispenser.png differ diff --git a/wire_dispenser.scad b/wire_dispenser.scad new file mode 100644 index 0000000..9038da5 --- /dev/null +++ b/wire_dispenser.scad @@ -0,0 +1,61 @@ + +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=4,h=20); + } + } +}