Index: HC49U.scad =================================================================== --- HC49U.scad (revision 37462) +++ HC49U.scad (revision 37463) @@ -1,4 +1,4 @@ -// Model for HC49 through hole package +// Model for HC49 vertical 2 and 3 pin through hole packages // // Copyright (C) 2023 Erich Heinzle // @@ -30,7 +30,7 @@ // in any way. // -module HC49(height) +module HC49(height=13.46, pins=2) { major_diameter = 4.65; minor_diameter = 3.8; @@ -47,38 +47,44 @@ square([n,h]); } } - - union() { - color([0.7,0.7,0.7]) { - translate ([2.44,0,pcb_offset]) { - translate ([(10.24-minor_diameter)/2,0,0]) - rounded_cylinder(minor_diameter/2,height,rounding); - translate ([-(10.24-minor_diameter)/2,0,0]) - rounded_cylinder(minor_diameter/2,height,rounding); - translate ([0,0,(height-rounding)/2]) - cube([10.24-minor_diameter,minor_diameter, height - rounding], true); - translate ([0,0,height-rounding]) - cube([10.24-minor_diameter,minor_diameter-rounding*2, rounding*2], true); - translate ([-(10.24-minor_diameter)/2,-minor_diameter/2+rounding,height-rounding]) - rotate([0,90,0]) - cylinder(r = rounding, h = 10.24-minor_diameter); - translate ([-(10.24-minor_diameter)/2,minor_diameter/2-rounding,height-rounding]) - rotate([0,90,0]) - cylinder(r = rounding, h = 10.24-minor_diameter); - - translate ([-(11.05-major_diameter)/2,0,0]) - cylinder(r = major_diameter/2, h = rim_thickness); - translate ([(11.05-major_diameter)/2,0,0]) - cylinder(r = major_diameter/2, h = rim_thickness); - translate ([0,0,rim_thickness/2]) - cube([11.05-major_diameter,major_diameter, rim_thickness], true); + // rotate sorts out default lib 3 pin vs 2 pin HC49 alignment difference + rotate([0,0,(pins-2)*90]) { + union() { + color([0.7,0.7,0.7]) { + translate ([2.44,0,pcb_offset]) { + translate ([(10.24-minor_diameter)/2,0,0]) + rounded_cylinder(minor_diameter/2,height,rounding); + translate ([-(10.24-minor_diameter)/2,0,0]) + rounded_cylinder(minor_diameter/2,height,rounding); + translate ([0,0,(height-rounding)/2]) + cube([10.24-minor_diameter,minor_diameter, height - rounding], true); + translate ([0,0,height-rounding]) + cube([10.24-minor_diameter,minor_diameter-rounding*2, rounding*2], true); + translate ([-(10.24-minor_diameter)/2,-minor_diameter/2+rounding,height-rounding]) + rotate([0,90,0]) + cylinder(r = rounding, h = 10.24-minor_diameter); + translate ([-(10.24-minor_diameter)/2,minor_diameter/2-rounding,height-rounding]) + rotate([0,90,0]) + cylinder(r = rounding, h = 10.24-minor_diameter); + + translate ([-(11.05-major_diameter)/2,0,0]) + cylinder(r = major_diameter/2, h = rim_thickness); + translate ([(11.05-major_diameter)/2,0,0]) + cylinder(r = major_diameter/2, h = rim_thickness); + translate ([0,0,rim_thickness/2]) + cube([11.05-major_diameter,major_diameter, rim_thickness], true); + } } + color([0.8,0.8,0.8]) { + translate ([0,0,-2.45]) + cylinder(r = pin_diameter/2, h = pcb_offset +2.5); + translate ([4.88,0,-2.45]) + cylinder(r = pin_diameter/2, h = pcb_offset + 2.5); + if (pins == 3) { + translate ([2.44,0,-2.45]) + cylinder(r = pin_diameter/2, h = pcb_offset + 2.5); + } + } } - color([0.8,0.8,0.8]) { - translate ([0,0,-2.45]) - cylinder(r = pin_diameter/2, h = pcb_offset +2.5); - translate ([4.88,0,-2.45]) - cylinder(r = pin_diameter/2, h = pcb_offset + 2.5); - } } } Index: HC49U_3.fp =================================================================== --- HC49U_3.fp (revision 37462) +++ HC49U_3.fp (revision 37463) @@ -3,6 +3,8 @@ ha:attributes { value = footprint = HC49U_3 Crystals + openscad = HC49U.scad + openscad-param = {height=13.46,pins=3} } ha:data { li:padstack_prototypes {