// Author: Emanuele Caruso (caru) // License: Creative Commons - Attribution-ShareAlike 3.0 United States (CC BY-SA 3.0) (http://creativecommons.org/licenses/by-sa/3.0/us/) // This is the main solenoid module // // Parameters: // i_diameter: the internal (core) diameter // o_diameter: the outer diameter, on which the solenoid will be twisted // i_height: the internal height between bases // base_diameter: the bases diameter // base_thickness: the thickness of the bases // in_hole_offset: the offset of the first hole, where the wire will enter // out_hole_offset: the offset of the second hole, where the wire will exit // hole_diameter: the holes diameter module solenoid(i_diameter, o_diameter, i_height, base_diameter, base_thickness, in_hole_offset, out_hole_offset, hole_diameter){ union() { base(base_diameter, base_thickness, i_diameter, in_hole_offset, out_hole_offset, hole_diameter); translate([0, 0, base_thickness]) s_cylinder(i_diameter, o_diameter, i_height); translate([0, 0, i_height + base_thickness]) { base(base_diameter, base_thickness, i_diameter, in_hole_offset, out_hole_offset, hole_diameter); } } } // This is the base module module base(diameter, thickness, i_diameter, in_hole_offset, out_hole_offset, hole_diameter) { r = diameter / 2; i_r = i_diameter / 2; h_r = hole_diameter / 2; difference() { cylinder(thickness, r, r); translate([0, 0, -1]) cylinder(thickness + 2, i_r, i_r); translate([-in_hole_offset, 0, -1]) cylinder(thickness + 2, h_r, h_r); translate([-out_hole_offset, 0, -1]) cylinder(thickness + 2, h_r, h_r); } } // This is the spool cylinder module s_cylinder(i_diameter, o_diameter, i_height) { o_r = o_diameter / 2; i_r = i_diameter / 2; difference() { cylinder(i_height , o_r, o_r); translate([0, 0, -1]) cylinder(i_height + 2, i_r, i_r); } } // An example to test the design solenoid(14, 18, 50, 50, 4, 12, 20, 4);