diff options
| author | tslil clingman <tslil@posteo.de> | 2026-03-13 13:04:35 +0000 |
|---|---|---|
| committer | tslil <tslil@posteo.de> | 2026-08-28 19:24:48 +0100 |
| commit | 1c098bd6e510ac2b037e431d841c3dda690707ac (patch) | |
| tree | aea36720e7baddab840b167862a9b4e0ce552c71 /ergogen/footprints/mx6c_ulp.js | |
| parent | 826591789bf9ca6d1fb23389ca4417df7ef8fe84 (diff) | |
reversible ULP!
Diffstat (limited to 'ergogen/footprints/mx6c_ulp.js')
| -rw-r--r-- | ergogen/footprints/mx6c_ulp.js | 152 |
1 files changed, 98 insertions, 54 deletions
diff --git a/ergogen/footprints/mx6c_ulp.js b/ergogen/footprints/mx6c_ulp.js index 5a2d789..6255589 100644 --- a/ergogen/footprints/mx6c_ulp.js +++ b/ergogen/footprints/mx6c_ulp.js @@ -1,30 +1,27 @@ module.exports = { params: { - designator: 's', - side: 'f', - reversible: false, - hotswap: false, - include_silkscreen: true, - include_keycaps: true, - keycap_width: 17.5, - keycap_height: 16.5, - switch_3dmodel_filename: '', - switch_3dmodel_xyz_offset: [-5.5, 0, 3], - switch_3dmodel_xyz_rotation: [0, 0, -90], - switch_3dmodel_xyz_scale: [1, 1, 1], - keycap_3dmodel_filename: '', - keycap_3dmodel_xyz_offset: [-12.18, -14.8, 4], - keycap_3dmodel_xyz_rotation: [180, 0, 0], - keycap_3dmodel_xyz_scale: [1, 1, 1], - from: undefined, - to: undefined, + designator: 's', + side: 'f', + reversible: false, + hotswap: false, + include_silkscreen: true, + include_keycaps: true, + keycap_width: 17.5, + keycap_height: 16.5, + switch_3dmodel_filename: 'PG1316S.step', + switch_3dmodel_xyz_offset: [-4.75, -6.25, -10.25], // [-5.45, 0, 3] for MX6C + switch_3dmodel_xyz_rotation: [0,0,0], // [0, 0, -90] for MX6C + switch_3dmodel_xyz_scale: [1, 1, 1], + from: undefined, + to: undefined, }, body: p => { - const keycap_xo = 0.5 * p.keycap_width - const keycap_yo = 0.5 * p.keycap_height + const keycap_xo = 0.5 * p.keycap_width + const keycap_yo = 0.5 * p.keycap_height - return ` - (footprint "Cherry_ULP_HANDSOLDER" (version 20221018) (generator pcbnew) + // Original elements + let footprint = ` + (footprint "ULP_HANDSOLDER" (version 20260313) (generator pcbnew) (layer "F.Cu") ${p.at} (attr smd) @@ -43,15 +40,15 @@ module.exports = { (effects (font (size 1 1) (thickness 0.15))) ) ${p.include_silkscreen ? ` - (fp_poly - (pts - (xy -7.1 -6.4) (xy 7.1 -6.4) (xy 7.1 6.4) (xy -7.1 6.4) - ) - (stroke (width 0.1) (type solid)) - (fill no) - (layer "F.SilkS") - ) - ` : ''} + (fp_poly + (pts + (xy -7.1 -6.4) (xy 7.1 -6.4) (xy 7.1 6.4) (xy -7.1 6.4) + ) + (stroke (width 0.1) (type solid)) + (fill no) + (layer "F.SilkS") + ) + ` : ''} (fp_poly (pts (xy -6.8 -6.1) (xy 6.8 -6.1) (xy 6.8 6.1) (xy -6.8 6.1) @@ -61,12 +58,12 @@ module.exports = { (layer "F.CrtYd") ) ${p.include_keycaps ? ` - (fp_rect (start ${keycap_xo} ${keycap_yo}) (end ${-keycap_xo} ${-keycap_yo}) - (stroke (width 0.15) (type solid)) - (fill no) - (layer "Dwgs.User") - ) - ` : ''} + (fp_rect (start ${keycap_xo} ${keycap_yo}) (end ${-keycap_xo} ${-keycap_yo}) + (stroke (width 0.15) (type solid)) + (fill no) + (layer "Dwgs.User") + ) + ` : ''} (fp_line (start -2.4 4.5) (end -2.4 3.4) (stroke (width 0.05) (type default)) (layer "Edge.Cuts") @@ -101,30 +98,77 @@ module.exports = { ) (pad "" np_thru_hole circle (at -5.8 1.2 ${p.r}) (size 1.05 1.05) (drill 1.05) (layers "*.Cu" "*.Mask")) (pad "" np_thru_hole circle (at -5.8 2.75 ${p.r}) (size 1.05 1.05) (drill 1.05) (layers "*.Cu" "*.Mask")) - (pad "" np_thru_hole oval (at 5.8 -2.96 ${p.r}) (size 1.2 1.8) (drill oval 1.2 1.8) (layers "*.Cu" "*.Mask")) - (pad "" np_thru_hole circle (at 5.8 3.26 ${p.r}) (size 1.2 1.2) (drill 1.2) (layers "*.Cu" "*.Mask")) + (pad "" np_thru_hole oval (at 5.825 -3.0 ${p.r}) (size 1.3 1.85) (drill oval 1.3 1.85) (layers "*.Cu" "*.Mask")) + (pad "" np_thru_hole oval (at 5.825 3.0 ${p.r}) (size 1.3 1.85) (drill oval 1.3 1.85) (layers "*.Cu" "*.Mask")) (pad "1" thru_hole circle (at -0.5 2.4 ${p.r}) (size 1.3 1.3) (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) ${p.from}) (pad "2" thru_hole circle (at 1.8 2.4 ${p.r}) (size 1.3 1.3) (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) ${p.to}) - (pad "3" smd rect (at -6.4 -4.6 ${p.r}) (size 2.15 5) (layers "F.Cu" "F.Mask" "F.Paste")) - (pad "3" smd rect (at -6.4 5.3 ${p.r}) (size 2.15 3.2) (layers "F.Cu" "F.Mask" "F.Paste")) - (pad "3" smd rect (at 6.4 -5.75 ${p.r}) (size 2 2.7) (layers "F.Cu" "F.Mask" "F.Paste")) - (pad "3" smd rect (at 6.4 0 ${p.r}) (size 2 2.6) (layers "F.Cu" "F.Mask" "F.Paste")) - (pad "3" smd rect (at 6.4 5.75 ${p.r}) (size 2 2.3) (layers "F.Cu" "F.Mask" "F.Paste")) - ${p.switch_3dmodel_filename ? ` + (pad "3" smd rect (at -5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + (pad "4" smd rect (at -5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + (pad "5" smd rect (at 5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + (pad "6" smd rect (at 5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + `; + + // Add mirrored elements if reversible is true + if (p.reversible) { + footprint += ` + (fp_line (start -2.4 -4.5) (end -2.4 -3.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_line (start -1.4 -2.4) (end 2.6 -2.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_line (start 2.6 -5.5) (end -1.4 -5.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_line (start 3.6 -3.4) (end 3.6 -4.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start -2.4 -3.4) (mid -2.107107 -2.692893) (end -1.4 -2.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start -1.4 -5.5) (mid -2.107107 -5.207107) (end -2.4 -4.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start 2.6 -2.4) (mid 3.307107 -2.692893) (end 3.6 -3.4) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (fp_arc (start 3.6 -4.5) (mid 3.307108 -5.207107) (end 2.6 -5.5) + (stroke (width 0.05) (type default)) + (layer "Edge.Cuts") + ) + (pad "" np_thru_hole circle (at -5.8 -1.2 ${p.r}) (size 1.05 1.05) (drill 1.05) (layers "*.Cu" "*.Mask")) + (pad "" np_thru_hole circle (at -5.8 -2.75 ${p.r}) (size 1.05 1.05) (drill 1.05) (layers "*.Cu" "*.Mask")) + (pad "1" thru_hole circle (at -0.5 -2.4 ${p.r}) (size 1.3 1.3) (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) ${p.from}) + (pad "2" thru_hole circle (at 1.8 -2.4 ${p.r}) (size 1.3 1.3) (drill 1.1) (layers "*.Cu" "*.Mask") (remove_unused_layers no) ${p.to}) + (pad "3" smd rect (at -5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + (pad "4" smd rect (at -5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + (pad "5" smd rect (at 5.9 5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + (pad "6" smd rect (at 5.9 -5.4 ${p.r}) (size 2.5 2.0) (layers "F.Cu" "F.Mask")) + `; + } + + // Add 3D models if specified + if (p.switch_3dmodel_filename) { + footprint += ` (model ${p.switch_3dmodel_filename} (offset (xyz ${p.switch_3dmodel_xyz_offset[0]} ${p.switch_3dmodel_xyz_offset[1]} ${p.switch_3dmodel_xyz_offset[2]})) (scale (xyz ${p.switch_3dmodel_xyz_scale[0]} ${p.switch_3dmodel_xyz_scale[1]} ${p.switch_3dmodel_xyz_scale[2]})) (rotate (xyz ${p.switch_3dmodel_xyz_rotation[0]} ${p.switch_3dmodel_xyz_rotation[1]} ${p.switch_3dmodel_xyz_rotation[2]})) ) - ` : ''} - ${p.keycap_3dmodel_filename ? ` - (model ${p.keycap_3dmodel_filename} - (offset (xyz ${p.keycap_3dmodel_xyz_offset[0]} ${p.keycap_3dmodel_xyz_offset[1]} ${p.keycap_3dmodel_xyz_offset[2]})) - (scale (xyz ${p.keycap_3dmodel_xyz_scale[0]} ${p.keycap_3dmodel_xyz_scale[1]} ${p.keycap_3dmodel_xyz_scale[2]})) - (rotate (xyz ${p.keycap_3dmodel_xyz_rotation[0]} ${p.keycap_3dmodel_xyz_rotation[1]} ${p.keycap_3dmodel_xyz_rotation[2]})) - ) - ` : ''} + `; + } + + footprint += ` ) - ` + `; + + return footprint; } } |
