UNPKG

@typecad/typecad

Version:

🤖programmatically 💥create 🛰️hardware

1 lines 7.86 kB
function a27_0x175716(_0x4835b8,_0x2dde7d){return a27_0x319e(_0x2dde7d-0x3c3,_0x4835b8);}import a27_0x3c1489 from's-expression.js';import a27_0xc14dc5 from'chalk';function a27_0x319e(_0xe2595d,_0x319e37){const _0x46929d=a27_0xe259();return a27_0x319e=function(_0xbe2d1e,_0x12c3d3){_0xbe2d1e=_0xbe2d1e-0x0;let _0x33a737=_0x46929d[_0xbe2d1e];return _0x33a737;},a27_0x319e(_0xe2595d,_0x319e37);}const S=new a27_0x3c1489();function a27_0xe259(){const _0x216ee9=['warn','length','[PadResolver]\x20Unable\x20to\x20parse\x20footprint\x20for\x20','[PadResolver]\x20Pad\x20','\x20not\x20found\x20in\x20footprint\x20','reference','extractPadData','\x20pin\x20','F.Cu','rotation','replace','Invalid\x20relative\x20data','pcb','side','sin','layers','thru_hole','np_thru_hole','B.Cu','toLowerCase','circle','includes','oval','custom','height','getAllPadGeometries','transformToAbsolute'];a27_0xe259=function(){return _0x216ee9;};return a27_0xe259();}export class PadResolver{static['getPadCenter'](_0x305ce4){if(!_0x305ce4['owner'])return console[_0x1ce4d8(0x56,0x4f)](a27_0xc14dc5['yellow']('[PadResolver]\x20Pin\x20'+_0x305ce4['number']+'\x20has\x20no\x20owner\x20component')),null;function _0x1ce4d8(_0x2b0e48,_0x40e454){return a27_0x319e(_0x40e454-0x4f,_0x2b0e48);}const _0x236ba7=this['getPadGeometry'](_0x305ce4['owner'],_0x305ce4['number']);if(!_0x236ba7)return null;return{'x':_0x236ba7['center']['x'],'y':_0x236ba7['center']['y'],'layer':_0x236ba7['layer']};}static['getPadGeometry'](_0x4583de,_0x18e9a1){function _0x5a141e(_0x88bedd,_0x2b0c72){return a27_0x319e(_0x2b0c72-0xc9,_0x88bedd);}try{const _0x460c40=_0x4583de['footprint_lib'](_0x4583de['footprint']),_0xbeaf6b=S['parse'](_0x460c40);if(!Array['isArray'](_0xbeaf6b)||_0xbeaf6b[_0x5a141e(0xc3,0xca)]===0x0)return console['warn'](a27_0xc14dc5['yellow'](_0x5a141e(0xca,0xcb)+_0x4583de['reference'])),null;const _0x3b2031=this['findPadNode'](_0xbeaf6b,_0x18e9a1);if(!_0x3b2031)return console['warn'](a27_0xc14dc5['yellow'](_0x5a141e(0xc3,0xcc)+_0x18e9a1+_0x5a141e(0xce,0xcd)+_0x4583de['footprint']+'\x20for\x20'+_0x4583de[_0x5a141e(0xc2,0xce)])),null;const _0x3d7ffc=this[_0x5a141e(0xd3,0xcf)](_0x3b2031);if(!_0x3d7ffc)return console['warn'](a27_0xc14dc5['yellow']('[PadResolver]\x20Unable\x20to\x20extract\x20pad\x20data\x20for\x20'+_0x4583de['reference']+_0x5a141e(0xd2,0xd0)+_0x18e9a1)),null;const _0x222295=this['transformToAbsolute'](_0x3d7ffc,_0x4583de);return _0x222295;}catch(_0x3b2dc4){return console[_0x5a141e(0xbf,0xc9)](a27_0xc14dc5['yellow']('[PadResolver]\x20Error\x20resolving\x20pad\x20geometry\x20for\x20'+_0x4583de['reference']+_0x5a141e(0xc6,0xd0)+_0x18e9a1+':\x20'+_0x3b2dc4['message'])),null;}}static['findPadNode'](_0xcb001d,_0x5197dc){const _0x442788=String(_0x5197dc),_0x166807=_0x2f2bd7=>{if(!Array['isArray'](_0x2f2bd7))return null;if(_0x2f2bd7[0x0]==='pad'&&_0x2f2bd7['length']>0x1){const _0x500f44=String(_0x2f2bd7[0x1])['replace'](/[`"]/g,'');if(_0x500f44===_0x442788)return _0x2f2bd7;}for(const _0x44bc7d of _0x2f2bd7){if(Array['isArray'](_0x44bc7d)){const _0x184792=_0x166807(_0x44bc7d);if(_0x184792)return _0x184792;}}return null;};return _0x166807(_0xcb001d);}static['extractPadData'](_0x50e4ae){let _0x33af0c={'x':0x0,'y':0x0,'rotation':0x0},_0x3f4974={'width':0x1,'height':0x1},_0x59ab90='rect',_0x183e7b='smd',_0x4982f9=[_0x28dce0(-0x30,-0x37)];function _0x28dce0(_0x3116e2,_0x3ec725){return a27_0x319e(_0x3ec725- -0x3f,_0x3116e2);}const _0x1d985c=String(_0x50e4ae[0x1])['replace'](/[`"]/g,'');for(const _0x58d8e9 of _0x50e4ae){if(!Array['isArray'](_0x58d8e9))continue;const _0x11605d=_0x58d8e9[0x0];if(_0x11605d==='at')_0x33af0c['x']=parseFloat(String(_0x58d8e9[0x1]))||0x0,_0x33af0c['y']=parseFloat(String(_0x58d8e9[0x2]))||0x0,_0x33af0c[_0x28dce0(-0x3f,-0x36)]=_0x58d8e9[_0x28dce0(-0x3c,-0x3e)]>0x3?parseFloat(String(_0x58d8e9[0x3]))||0x0:0x0;else{if(_0x11605d==='size')_0x3f4974['width']=parseFloat(String(_0x58d8e9[0x1]))||0x1,_0x3f4974['height']=parseFloat(String(_0x58d8e9[0x2]))||0x1;else _0x11605d==='layers'&&(_0x4982f9=_0x58d8e9['slice'](0x1)['map'](_0x389df0=>String(_0x389df0)[_0x28dce0(-0x2b,-0x35)](/[`"]/g,'')));}}return _0x50e4ae['length']>0x2&&(_0x183e7b=String(_0x50e4ae[0x2])['replace'](/[`"]/g,'')),_0x50e4ae['length']>0x3&&(_0x59ab90=String(_0x50e4ae[0x3])['replace'](/[`"]/g,'')),{'number':_0x1d985c,'type':_0x183e7b,'at':_0x33af0c,'size':_0x3f4974,'shape':_0x59ab90,'layers':_0x4982f9};}static['transformToAbsolute'](_0x3c3c06,_0x37e5ab){if(!_0x3c3c06)throw new Error(_0x17effb(-0x1ed,-0x1f7));const _0x8c0270=_0x37e5ab['pcb']['x']||0x0,_0xfda230=_0x37e5ab[_0x17effb(-0x204,-0x1f6)]['y']||0x0,_0x12c5ca=_0x37e5ab['pcb']['rotation']||0x0;function _0x17effb(_0xc25d40,_0xa1d705){return a27_0x319e(_0xa1d705- -0x202,_0xc25d40);}const _0x450d08=_0x37e5ab['pcb'][_0x17effb(-0x1f0,-0x1f5)]||'front',_0x5ecdc3=-_0x12c5ca*Math['PI']/0xb4,_0x566110=Math['cos'](_0x5ecdc3),_0x175333=Math[_0x17effb(-0x1eb,-0x1f4)](_0x5ecdc3);let _0x38e959=_0x3c3c06['at']['x'],_0x351bdc=_0x3c3c06['at']['y'];_0x450d08==='back'&&(_0x38e959=-_0x38e959);const _0x549dd0=_0x38e959*_0x566110-_0x351bdc*_0x175333,_0x343a1e=_0x38e959*_0x175333+_0x351bdc*_0x566110,_0x66804b=_0x8c0270+_0x549dd0,_0x3918bc=_0xfda230+_0x343a1e;let _0xeef189=_0x12c5ca+_0x3c3c06['at']['rotation'];_0x450d08==='back'&&(_0xeef189=(0x168-_0xeef189)%0x168);_0xeef189=_0xeef189%0x168;const _0xca64a9=_0x3c3c06[_0x17effb(-0x1fb,-0x1f3)]['filter'](_0x3b40b9=>_0x3b40b9['includes']('.Cu')),_0x3d02fb=_0xca64a9['some'](_0x27f18f=>_0x27f18f==='*.Cu');let _0x1850eb=_0x17effb(-0x1fa,-0x1fa),_0x3ff607=[],_0x5484fd='smd';const _0xe67f47=_0x3c3c06['type']['toLowerCase']();if(_0xe67f47['includes']('thru_hole'))_0x5484fd=_0x17effb(-0x1fa,-0x1f2);else{if(_0xe67f47['includes'](_0x17effb(-0x1ec,-0x1f1)))_0x5484fd=_0x17effb(-0x1f8,-0x1f1);else _0xe67f47['includes']('connect')&&(_0x5484fd='connect');}if(_0x5484fd===_0x17effb(-0x1ec,-0x1f2)||_0x5484fd==='np_thru_hole')_0x3ff607=['F.Cu',_0x17effb(-0x1f2,-0x1f0),'In1.Cu','In2.Cu','In3.Cu','In4.Cu'],_0x1850eb=_0x450d08==='back'?'B.Cu':'F.Cu';else{if(_0x3d02fb)_0x3ff607=['F.Cu','B.Cu'],_0x1850eb=_0x450d08==='back'?'B.Cu':'F.Cu';else{if(_0xca64a9['length']>0x0){_0x1850eb=_0xca64a9[0x0];if(_0x450d08==='back'){if(_0x1850eb==='F.Cu')_0x1850eb='B.Cu';else{if(_0x1850eb===_0x17effb(-0x1eb,-0x1f0))_0x1850eb='F.Cu';}}_0x3ff607=[_0x1850eb];}else _0x1850eb=_0x450d08==='back'?'B.Cu':'F.Cu',_0x3ff607=[_0x1850eb];}}let _0x1039d7='rect';const _0x3f2f97=_0x3c3c06['shape'][_0x17effb(-0x1e4,-0x1ef)]();if(_0x3f2f97['includes']('circle'))_0x1039d7=_0x17effb(-0x1f7,-0x1ee);else{if(_0x3f2f97[_0x17effb(-0x1e8,-0x1ed)]('oval'))_0x1039d7=_0x17effb(-0x1ec,-0x1ec);else{if(_0x3f2f97['includes']('roundrect'))_0x1039d7='roundrect';else{if(_0x3f2f97['includes']('custom'))_0x1039d7=_0x17effb(-0x1e0,-0x1eb);}}}return{'center':{'x':_0x66804b,'y':_0x3918bc},'shape':_0x1039d7,'type':_0x5484fd,'size':{'width':_0x3c3c06['size']['width'],'height':_0x3c3c06['size'][_0x17effb(-0x1f1,-0x1ea)]},'rotation':_0xeef189,'layer':_0x1850eb,'layers':_0x3ff607,'number':_0x3c3c06['number']};}static[a27_0x175716(0x3e9,0x3dc)](_0x53636a){const _0x13a894=[];try{const _0x16caf8=_0x53636a['footprint_lib'](_0x53636a['footprint']),_0x3f02ae=S['parse'](_0x16caf8);if(!Array['isArray'](_0x3f02ae)||_0x3f02ae['length']===0x0)return _0x13a894;const _0x5ef7b9=[],_0x447fa9=_0x145f35=>{if(Array['isArray'](_0x145f35)){_0x145f35['length']>0x0&&String(_0x145f35[0x0])==='pad'&&_0x5ef7b9['push'](_0x145f35);for(const _0x44170c of _0x145f35){_0x447fa9(_0x44170c);}}};_0x447fa9(_0x3f02ae);for(const _0x5ae784 of _0x5ef7b9){const _0x2eca65=this['extractPadData'](_0x5ae784);if(!_0x2eca65)continue;const _0x38a388=this[_0x1f4651(0x2c8,0x2c4)](_0x2eca65,_0x53636a);if(_0x38a388)_0x13a894['push'](_0x38a388);}}catch{}function _0x1f4651(_0x977d50,_0x4c6a83){return a27_0x319e(_0x977d50-0x2ae,_0x4c6a83);}return _0x13a894;}}