circuit-json-to-lbrn 0.0.30 → 0.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +46 -54
- package/lib/ConvertContext.ts +2 -2
- package/lib/element-handlers/addPcbCutout/addCirclePcbCutout.ts +0 -1
- package/lib/element-handlers/addPcbCutout/addPathPcbCutout.ts +0 -1
- package/lib/element-handlers/addPcbCutout/addPolygonPcbCutout.ts +0 -1
- package/lib/element-handlers/addPcbCutout/addRectPcbCutout.ts +0 -1
- package/lib/element-handlers/addPcbHole/addCirclePcbHole.ts +1 -2
- package/lib/element-handlers/addPcbHole/addOvalPcbHole.ts +2 -3
- package/lib/element-handlers/addPcbHole/addPillPcbHole.ts +2 -3
- package/lib/element-handlers/addPcbHole/addRectPcbHole.ts +2 -3
- package/lib/element-handlers/addPcbHole/addRotatedPillPcbHole.ts +2 -3
- package/lib/element-handlers/addPcbVia/index.ts +3 -2
- package/lib/element-handlers/addPlatedHole/addCirclePlatedHole.ts +5 -2
- package/lib/element-handlers/addPlatedHole/addCircularHoleWithRectPad.ts +9 -3
- package/lib/element-handlers/addPlatedHole/addHoleWithPolygonPad.ts +1 -1
- package/lib/element-handlers/addPlatedHole/addOvalPlatedHole.ts +4 -1
- package/lib/element-handlers/addPlatedHole/addPillHoleWithRectPad.ts +9 -3
- package/lib/element-handlers/addPlatedHole/addPillPlatedHole.ts +9 -3
- package/lib/element-handlers/addPlatedHole/addRotatedPillHoleWithRectPad.ts +9 -3
- package/lib/element-handlers/addSmtPad/addCircleSmtPad.ts +5 -2
- package/lib/element-handlers/addSmtPad/addPillSmtPad.ts +9 -3
- package/lib/element-handlers/addSmtPad/addPolygonSmtPad.ts +1 -1
- package/lib/element-handlers/addSmtPad/addRectSmtPad.ts +9 -3
- package/lib/element-handlers/addSmtPad/addRotatedPillSmtPad.ts +9 -3
- package/lib/element-handlers/addSmtPad/addRotatedRectSmtPad.ts +9 -3
- package/lib/index.ts +4 -3
- package/package.json +1 -1
- package/site/index.html +1 -1
- package/site/main.tsx +4 -3
- package/tests/basics/__snapshots__/mixed-soldermask-margins.snap.svg +8 -0
- package/tests/basics/addPcbCutout/pcb-cutout-circle.test.ts +1 -1
- package/tests/basics/addPcbHole/__snapshots__/pcb-hole-soldermask-margin.snap.svg +8 -0
- package/tests/basics/addPcbHole/pcb-hole-soldermask-margin.test.ts +63 -0
- package/tests/basics/addPcbHole/pcb-hole-with-soldermask.test.ts +1 -1
- package/tests/basics/addPcbVia/pcb-via-with-soldermask.test.ts +1 -1
- package/tests/basics/mixed-soldermask-margins.test.ts +111 -0
- package/tests/basics/soldermask-margin/negative-soldermask-margin.test.ts +1 -1
- package/tests/basics/soldermask-margin/positive-soldermask-margin.test.ts +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg width="800" height="1400" viewBox="0 0 800 1400" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g transform="translate(0, 0)">
|
|
3
|
+
<style></style><rect class="boundary" x="0" y="0" fill="#000" width="800" height="600" data-type="pcb_background" data-pcb-layer="global"/><rect class="pcb-boundary" fill="none" stroke="#fff" stroke-width="0.3" x="150" y="50" width="500" height="500" data-type="pcb_boundary" data-pcb-layer="global"/><path class="pcb-board" d="M 150 550 L 650 550 L 650 50 L 150 50 Z" fill="none" stroke="rgba(255, 255, 255, 0.5)" stroke-width="5" data-type="pcb_board" data-pcb-layer="board"/><circle class="pcb-hole" cx="300" cy="200" r="37.5" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><rect class="pcb-hole" x="450" y="162.5" width="100" height="75" fill="#FF26E2" data-type="pcb_hole" data-pcb-layer="drill"/><path class="pcb-hole" fill="#FF26E2" d="M362.5,362.5 h75 a37.5,37.5 0 0 1 0,75 h-75 a37.5,37.5 0 0 1 0,-75 z" data-type="pcb_hole" data-pcb-layer="drill"/>
|
|
4
|
+
</g>
|
|
5
|
+
<g transform="translate(0, 600) scale(26.666666666666668, 26.666666666666668) translate(14.9, 14.9)">
|
|
6
|
+
<rect x="-14.9" y="-14.9" width="30" height="30" fill="white"/><g transform="matrix(1 0 0 -1 0 0.1999999999999993)"><g transform="matrix(1,0,0,1,0,0)"><path d="M -4.9 -4.9 L 5.1 -4.9 L 5.1 5.1 L -4.9 5.1 L -4.9 -4.9 L -4.9 -4.9 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -4.9 -4.9 L 5.1 -4.9 L 5.1 5.1 L -4.9 5.1 L -4.9 -4.9 L -4.9 -4.9" fill="none" stroke="#00FF00" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1766867724226-3v1ci2kqg__stack1"><path d="M -0.6499999999999999 2.1 L -0.6560190916597537 2.222521425411951 L -0.6740183994959619 2.3438629025201605 L -0.7038245803347389 2.462855846568078 L -0.7451505843608914 2.578354290456362 L -0.797598419564556 2.689245921032497 L -0.8606629846218183 2.794462791274503 L -0.9337369332965787 2.892991605204557 L -1.0161165235168155 2.9838834764831845 L -1.107008394795443 3.066263066703421 L -1.205537208725497 3.1393370153781817 L -1.3107540789675025 3.2024015804354438 L -1.4216457095436377 3.2548494156391086 L -1.537144153431922 3.296175419665261 L -1.6561370974798395 3.325981600504038 L -1.777478574588049 3.343980908340246 L -1.9 3.35 L -2.022521425411951 3.3439809083402463 L -2.1438629025201603 3.325981600504038 L -2.2628558465680775 3.2961754196652615 L -2.378354290456362 3.2548494156391086 L -2.489245921032497 3.2024015804354438 L -2.5944627912745024 3.1393370153781817 L -2.692991605204557 3.0662630667034216 L -2.7838834764831843 2.9838834764831845 L -2.866263066703421 2.892991605204557 L -2.9393370153781815 2.794462791274503 L -3.0024015804354436 2.6892459210324975 L -3.0548494156391084 2.5783542904563626 L -3.096175419665261 2.462855846568078 L -3.125981600504038 2.343862902520161 L -3.1439809083402457 2.222521425411951 L -3.15 2.1 L -3.143980908340246 1.9774785745880494 L -3.125981600504038 1.8561370974798397 L -3.0961754196652613 1.7371441534319225 L -3.0548494156391084 1.621645709543638 L -3.0024015804354436 1.5107540789675031 L -2.9393370153781815 1.4055372087254976 L -2.8662630667034215 1.3070083947954436 L -2.783883476483185 1.2161165235168157 L -2.6929916052045573 1.1337369332965792 L -2.594462791274503 1.0606629846218185 L -2.4892459210324973 0.9975984195645564 L -2.378354290456363 0.945150584360892 L -2.262855846568078 0.9038245803347391 L -2.1438629025201608 0.8740183994959623 L -2.0225214254119503 0.8560190916597539 L -1.9000000000000001 0.8500000000000001 L -1.7774785745880497 0.8560190916597539 L -1.6561370974798395 0.874018399495962 L -1.5371441534319223 0.9038245803347389 L -1.4216457095436374 0.9451505843608918 L -1.310754078967503 0.9975984195645562 L -1.2055372087254976 1.0606629846218183 L -1.107008394795443 1.133736933296579 L -1.0161165235168157 1.2161165235168154 L -0.933736933296579 1.3070083947954427 L -0.8606629846218183 1.4055372087254974 L -0.7975984195645565 1.5107540789675027 L -0.7451505843608919 1.6216457095436372 L -0.7038245803347389 1.737144153431922 L -0.6740183994959621 1.8561370974798392 L -0.6560190916597537 1.9774785745880494 L -0.6499999999999999 2.1 L -0.6499999999999999 2.1 Z"/></clipPath><g clip-path="url(#clip-1766867724226-3v1ci2kqg__stack1)"><line x1="-0.8589740289555858" y1="0.8500000000000001" x2="-0.6499999999999999" y2="1.058974028955586" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.1135324701827432" y1="0.8500000000000001" x2="-0.6499999999999999" y2="1.3135324701827433" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.3680909114099005" y1="0.8500000000000001" x2="-0.6499999999999999" y2="1.5680909114099004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6226493526370573" y1="0.8500000000000001" x2="-0.6499999999999999" y2="1.8226493526370575" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.8772077938642147" y1="0.8500000000000001" x2="-0.6499999999999999" y2="2.077207793864215" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.1317662350913715" y1="0.8500000000000001" x2="-0.6499999999999999" y2="2.3317662350913717" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.386324676318529" y1="0.8500000000000001" x2="-0.6499999999999999" y2="2.5863246763185286" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.6408831175456857" y1="0.8500000000000001" x2="-0.6499999999999999" y2="2.840883117545686" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.895441558772843" y1="0.8500000000000001" x2="-0.6499999999999999" y2="3.0954415587728423" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="0.8500000000000005" x2="-0.6499999999999999" y2="3.3499999999999996" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="1.1045584412271579" x2="-0.9045584412271568" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="1.3591168824543143" x2="-1.1591168824543137" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="1.6136753236814716" x2="-1.413675323681471" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="1.868233764908629" x2="-1.6682337649086285" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="2.1227922061357862" x2="-1.9227922061357858" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="2.3773506473629435" x2="-2.1773506473629434" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="2.6319090885901" x2="-2.4319090885901" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="2.8864675298172573" x2="-2.686467529817257" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-3.15" y1="3.1410259710444137" x2="-2.9410259710444135" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="3.141025971044414" x2="-0.8589740289555858" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="2.8864675298172573" x2="-1.1135324701827427" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="2.6319090885901" x2="-1.3680909114099" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="2.3773506473629427" x2="-1.6226493526370571" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="2.1227922061357853" x2="-1.8772077938642144" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="1.8682337649086282" x2="-2.1317662350913715" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="1.6136753236814712" x2="-2.386324676318529" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="1.3591168824543138" x2="-2.640883117545686" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6499999999999999" y1="1.1045584412271572" x2="-2.895441558772842" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.6500000000000001" y1="0.8500000000000001" x2="-3.1499999999999995" y2="3.35" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.9045584412271572" y1="0.8500000000000001" x2="-3.15" y2="3.0954415587728428" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.159116882454314" y1="0.8500000000000001" x2="-3.15" y2="2.840883117545686" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.4136753236814708" y1="0.8500000000000001" x2="-3.15" y2="2.5863246763185295" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.668233764908628" y1="0.8500000000000001" x2="-3.15" y2="2.331766235091372" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.9227922061357854" y1="0.8500000000000001" x2="-3.15" y2="2.077207793864215" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.177350647362943" y1="0.8500000000000001" x2="-3.15" y2="1.8226493526370573" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.4319090885901" y1="0.8500000000000001" x2="-3.15" y2="1.5680909114099002" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.6864675298172567" y1="0.8500000000000001" x2="-3.15" y2="1.3135324701827436" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-2.9410259710444135" y1="0.8500000000000001" x2="-3.15" y2="1.0589740289555865" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M -0.6499999999999999 2.1 L -0.6560190916597537 2.222521425411951 L -0.6740183994959619 2.3438629025201605 L -0.7038245803347389 2.462855846568078 L -0.7451505843608914 2.578354290456362 L -0.797598419564556 2.689245921032497 L -0.8606629846218183 2.794462791274503 L -0.9337369332965787 2.892991605204557 L -1.0161165235168155 2.9838834764831845 L -1.107008394795443 3.066263066703421 L -1.205537208725497 3.1393370153781817 L -1.3107540789675025 3.2024015804354438 L -1.4216457095436377 3.2548494156391086 L -1.537144153431922 3.296175419665261 L -1.6561370974798395 3.325981600504038 L -1.777478574588049 3.343980908340246 L -1.9 3.35 L -2.022521425411951 3.3439809083402463 L -2.1438629025201603 3.325981600504038 L -2.2628558465680775 3.2961754196652615 L -2.378354290456362 3.2548494156391086 L -2.489245921032497 3.2024015804354438 L -2.5944627912745024 3.1393370153781817 L -2.692991605204557 3.0662630667034216 L -2.7838834764831843 2.9838834764831845 L -2.866263066703421 2.892991605204557 L -2.9393370153781815 2.794462791274503 L -3.0024015804354436 2.6892459210324975 L -3.0548494156391084 2.5783542904563626 L -3.096175419665261 2.462855846568078 L -3.125981600504038 2.343862902520161 L -3.1439809083402457 2.222521425411951 L -3.15 2.1 L -3.143980908340246 1.9774785745880494 L -3.125981600504038 1.8561370974798397 L -3.0961754196652613 1.7371441534319225 L -3.0548494156391084 1.621645709543638 L -3.0024015804354436 1.5107540789675031 L -2.9393370153781815 1.4055372087254976 L -2.8662630667034215 1.3070083947954436 L -2.783883476483185 1.2161165235168157 L -2.6929916052045573 1.1337369332965792 L -2.594462791274503 1.0606629846218185 L -2.4892459210324973 0.9975984195645564 L -2.378354290456363 0.945150584360892 L -2.262855846568078 0.9038245803347391 L -2.1438629025201608 0.8740183994959623 L -2.0225214254119503 0.8560190916597539 L -1.9000000000000001 0.8500000000000001 L -1.7774785745880497 0.8560190916597539 L -1.6561370974798395 0.874018399495962 L -1.5371441534319223 0.9038245803347389 L -1.4216457095436374 0.9451505843608918 L -1.310754078967503 0.9975984195645562 L -1.2055372087254976 1.0606629846218183 L -1.107008394795443 1.133736933296579 L -1.0161165235168157 1.2161165235168154 L -0.933736933296579 1.3070083947954427 L -0.8606629846218183 1.4055372087254974 L -0.7975984195645565 1.5107540789675027 L -0.7451505843608919 1.6216457095436372 L -0.7038245803347389 1.737144153431922 L -0.6740183994959621 1.8561370974798392 L -0.6560190916597537 1.9774785745880494 L -0.6499999999999999 2.1 L -0.6499999999999999 2.1 Z" fill="none" stroke="#00FF00" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M -1.15 2.1 L -1.1536114549958523 2.1735128552471705 L -1.164411039697577 2.2463177415120965 L -1.1822947482008432 2.317713507940847 L -1.207090350616535 2.3870125742738173 L -1.2385590517387337 2.453547552619498 L -1.276397790773091 2.5166776747647015 L -1.3202421599779472 2.575794963122734 L -1.3696699141100892 2.6303300858899106 L -1.4242050368772659 2.6797578400220528 L -1.483322325235298 2.723602209226909 L -1.5464524473805015 2.7614409482612663 L -1.6129874257261825 2.792909649383465 L -1.6822864920591531 2.8177052517991568 L -1.7536822584879037 2.835588960302423 L -1.8264871447528293 2.8463885450041477 L -1.9 2.85 L -1.9735128552471704 2.8463885450041477 L -2.046317741512096 2.835588960302423 L -2.1177135079408465 2.8177052517991568 L -2.187012574273817 2.792909649383465 L -2.2535475526194984 2.7614409482612663 L -2.3166776747647013 2.723602209226909 L -2.375794963122734 2.679757840022053 L -2.4303300858899104 2.630330085889911 L -2.4797578400220526 2.575794963122734 L -2.523602209226909 2.5166776747647015 L -2.561440948261266 2.4535475526194985 L -2.592909649383465 2.3870125742738173 L -2.6177052517991566 2.317713507940847 L -2.6355889603024227 2.2463177415120965 L -2.6463885450041476 2.1735128552471705 L -2.65 2.1 L -2.6463885450041476 2.0264871447528296 L -2.6355889603024227 1.9536822584879039 L -2.6177052517991566 1.8822864920591535 L -2.592909649383465 1.8129874257261829 L -2.561440948261266 1.7464524473805019 L -2.523602209226909 1.6833223252352987 L -2.479757840022053 1.624205036877266 L -2.430330085889911 1.5696699141100896 L -2.3757949631227344 1.5202421599779476 L -2.3166776747647013 1.4763977907730912 L -2.2535475526194984 1.4385590517387339 L -2.1870125742738176 1.407090350616535 L -2.117713507940847 1.3822947482008434 L -2.0463177415120963 1.3644110396975773 L -1.9735128552471704 1.3536114549958524 L -1.9000000000000001 1.35 L -1.82648714475283 1.3536114549958524 L -1.7536822584879037 1.3644110396975773 L -1.6822864920591534 1.3822947482008434 L -1.6129874257261825 1.407090350616535 L -1.5464524473805017 1.4385590517387339 L -1.4833223252352985 1.476397790773091 L -1.4242050368772659 1.5202421599779474 L -1.3696699141100894 1.5696699141100894 L -1.3202421599779475 1.6242050368772656 L -1.276397790773091 1.6833223252352985 L -1.2385590517387337 1.7464524473805016 L -1.207090350616535 1.8129874257261824 L -1.1822947482008432 1.882286492059153 L -1.164411039697577 1.9536822584879037 L -1.1536114549958523 2.0264871447528296 L -1.15 2.1 L -1.15 2.1 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1766867724226-5jrka43ll__stack1"><path d="M 0.8 1.05 L 3.4000000000000004 1.05 L 3.4000000000000004 1.05 L 3.4000000000000004 1.05 L 3.4000000000000004 3.1500000000000004 L 3.4000000000000004 3.1500000000000004 L 3.4000000000000004 3.1500000000000004 L 0.8 3.1500000000000004 L 0.8 3.1500000000000004 L 0.8 3.1500000000000004 L 0.8 1.05 L 0.8 1.05 L 0.8 1.05 L 0.8 1.05 Z"/></clipPath><g clip-path="url(#clip-1766867724226-5jrka43ll__stack1)"><line x1="3.2137467504308357" y1="1.05" x2="3.4000000000000004" y2="1.2362532495691647" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.9591883092036784" y1="1.05" x2="3.4000000000000004" y2="1.4908116907963218" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.704629867976521" y1="1.05" x2="3.4000000000000004" y2="1.7453701320234791" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.4500714267493637" y1="1.05" x2="3.4000000000000004" y2="1.9999285732506364" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.195512985522207" y1="1.05" x2="3.4000000000000004" y2="2.2544870144777933" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.9409545442950495" y1="1.05" x2="3.4000000000000004" y2="2.5090454557049506" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.6863961030678922" y1="1.05" x2="3.4000000000000004" y2="2.763603896932108" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.4318376618407356" y1="1.05" x2="3.4000000000000004" y2="3.0181623381592644" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.1772792206135785" y1="1.05" x2="3.2772792206135795" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.9227207793864212" y1="1.05" x2="3.022720779386422" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="1.181837661840736" x2="2.768162338159265" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="1.4363961030678924" x2="2.5136038969321084" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="1.69095454429505" x2="2.259045455704951" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="1.9455129855222073" x2="2.0044870144777933" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="2.200071426749364" x2="1.7499285732506364" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="2.4546298679765215" x2="1.4953701320234791" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="2.709188309203679" x2="1.2408116907963218" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.8" y1="2.9637467504308357" x2="0.9862532495691647" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="2.9637467504308357" x2="3.2137467504308357" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="2.7091883092036784" x2="2.9591883092036784" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="2.454629867976521" x2="2.704629867976521" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="2.2000714267493637" x2="2.4500714267493637" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="1.9455129855222064" x2="2.195512985522207" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="1.690954544295049" x2="1.9409545442950493" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="1.4363961030678918" x2="1.686396103067892" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.4000000000000004" y1="1.1818376618407351" x2="1.4318376618407358" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.277279220613578" y1="1.05" x2="1.1772792206135785" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="3.022720779386421" y1="1.05" x2="0.9227207793864212" y2="3.1500000000000004" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.7681623381592644" y1="1.05" x2="0.8" y2="3.0181623381592644" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.513603896932108" y1="1.05" x2="0.8" y2="2.7636038969321084" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.2590454557049506" y1="1.05" x2="0.8" y2="2.5090454557049506" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="2.004487014477793" y1="1.05" x2="0.8" y2="2.2544870144777933" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.749928573250636" y1="1.05" x2="0.8" y2="1.999928573250636" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.4953701320234791" y1="1.05" x2="0.8" y2="1.7453701320234791" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.2408116907963223" y1="1.05" x2="0.8" y2="1.4908116907963223" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.9862532495691649" y1="1.05" x2="0.8" y2="1.236253249569165" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M 0.8 1.05 L 3.4000000000000004 1.05 L 3.4000000000000004 1.05 L 3.4000000000000004 1.05 L 3.4000000000000004 3.1500000000000004 L 3.4000000000000004 3.1500000000000004 L 3.4000000000000004 3.1500000000000004 L 0.8 3.1500000000000004 L 0.8 3.1500000000000004 L 0.8 3.1500000000000004 L 0.8 1.05 L 0.8 1.05 L 0.8 1.05 L 0.8 1.05 Z" fill="none" stroke="#00FF00" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 1.1 1.35 L 3.1 1.35 L 3.1 1.35 L 3.1 1.35 L 3.1 2.85 L 3.1 2.85 L 3.1 2.85 L 1.1 2.85 L 1.1 2.85 L 1.1 2.85 L 1.1 1.35 L 1.1 1.35 L 1.1 1.35 L 1.1 1.35 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><clipPath id="clip-1766867724226-egv7yticd__stack1"><path d="M 0.8500000000000001 -2.8499999999999996 L 0.9431162833130827 -2.8454254903385867 L 1.035335805915322 -2.831746016383069 L 1.1257704433917393 -2.809093318945598 L 1.2135492607468352 -2.7776855558857223 L 1.2978268999846978 -2.737825201130937 L 1.3777917213686222 -2.689896131687418 L 1.4526736199554633 -2.6343599306946 L 1.5217514421272202 -2.57175144212722 L 1.5843599306946001 -2.502673619955463 L 1.6398961316874179 -2.4277917213686218 L 1.6878252011309371 -2.347826899984698 L 1.7276855558857225 -2.263549260746835 L 1.7590933189455984 -2.1757704433917393 L 1.7817460163830687 -2.0853358059153217 L 1.795425490338587 -1.9931162833130827 L 1.7999999999999998 -1.9 L 1.795425490338587 -1.8068837166869172 L 1.7817460163830687 -1.714664194084678 L 1.7590933189455984 -1.6242295566082607 L 1.7276855558857225 -1.5364507392531646 L 1.6878252011309371 -1.452173100015302 L 1.639896131687418 -1.372208278631378 L 1.5843599306946001 -1.2973263800445367 L 1.5217514421272202 -1.2282485578727798 L 1.4526736199554633 -1.1656400693053999 L 1.377791721368622 -1.110103868312582 L 1.2978268999846978 -1.0621747988690626 L 1.2135492607468352 -1.0223144441142775 L 1.1257704433917393 -0.9909066810544016 L 1.0353358059153221 -0.968253983616931 L 0.9431162833130827 -0.954574509661413 L 0.8500000000000001 -0.95 L -0.65 -0.95 L -0.6499999999999999 -0.95 L -0.7431162833130827 -0.9545745096614129 L -0.8353358059153217 -0.968253983616931 L -0.9257704433917391 -0.9909066810544015 L -1.0135492607468353 -1.0223144441142775 L -1.0978268999846978 -1.0621747988690626 L -1.1777917213686218 -1.110103868312582 L -1.2526736199554631 -1.1656400693053997 L -1.32175144212722 -1.2282485578727798 L -1.3843599306946002 -1.2973263800445367 L -1.439896131687418 -1.3722082786313778 L -1.4878252011309372 -1.452173100015302 L -1.5276855558857223 -1.5364507392531646 L -1.5590933189455982 -1.6242295566082607 L -1.581746016383069 -1.7146641940846776 L -1.595425490338587 -1.8068837166869172 L -1.6 -1.8999999999999997 L -1.5954254903385872 -1.9931162833130824 L -1.581746016383069 -2.0853358059153217 L -1.5590933189455984 -2.175770443391739 L -1.5276855558857225 -2.263549260746835 L -1.4878252011309372 -2.347826899984698 L -1.4398961316874181 -2.4277917213686218 L -1.3843599306946004 -2.5026736199554627 L -1.3217514421272203 -2.57175144212722 L -1.252673619955463 -2.6343599306946004 L -1.1777917213686222 -2.689896131687418 L -1.097826899984698 -2.737825201130937 L -1.013549260746836 -2.7776855558857223 L -0.9257704433917393 -2.809093318945598 L -0.8353358059153222 -2.8317460163830686 L -0.7431162833130824 -2.845425490338587 L -0.6500000000000002 -2.8499999999999996 L 0.85 -2.8499999999999996 L 0.8500000000000001 -2.8499999999999996 L 0.8500000000000001 -2.8499999999999996 Z"/></clipPath><g clip-path="url(#clip-1766867724226-egv7yticd__stack1)"><line x1="1.6955844122715706" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-2.7455844122715707" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.4410259710444144" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-2.4910259710444143" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.186467529817257" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-2.236467529817257" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.9319090885901002" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-1.9819090885901" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.6773506473629429" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-1.727350647362943" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.4227922061357856" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-1.4727922061357857" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.16823376490862874" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-1.2182337649086292" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.08632467631852858" y1="-2.8499999999999996" x2="1.7999999999999998" y2="-0.9636753236814717" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.3408831175456859" y1="-2.8499999999999996" x2="1.5591168824543142" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.5954415587728428" y1="-2.8499999999999996" x2="1.3045584412271574" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.8500000000000001" y1="-2.8499999999999996" x2="1.05" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.104558441227157" y1="-2.8499999999999996" x2="0.7954415587728432" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.3591168824543147" y1="-2.8499999999999996" x2="0.5408831175456854" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-2.836324676318528" x2="0.28632467631852854" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-2.5817662350913713" x2="0.03176623509137144" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-2.327207793864214" x2="-0.22279220613578565" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-2.072649352637057" x2="-0.47735064736294297" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-1.8180909114099" x2="-0.7319090885901001" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-1.5635324701827427" x2="-0.9864675298172573" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-1.3089740289555858" x2="-1.2410259710444143" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.6" y1="-1.054415587728429" x2="-1.4955844122715711" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-1.0544155877284294" x2="1.6955844122715704" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-1.3089740289555862" x2="1.4410259710444135" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-1.5635324701827433" x2="1.1864675298172567" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-1.8180909114099006" x2="0.9319090885900994" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-2.0726493526370575" x2="0.6773506473629425" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-2.327207793864215" x2="0.42279220613578516" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-2.581766235091372" x2="0.16823376490862807" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.7999999999999998" y1="-2.8363246763185286" x2="-0.0863246763185288" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.5591168824543136" y1="-2.8499999999999996" x2="-0.3408831175456859" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.304558441227157" y1="-2.8499999999999996" x2="-0.5954415587728425" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="1.05" y1="-2.8499999999999996" x2="-0.8499999999999994" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.7954415587728427" y1="-2.8499999999999996" x2="-1.1045584412271567" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.5408831175456856" y1="-2.8499999999999996" x2="-1.3591168824543138" y2="-0.95" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.2863246763185283" y1="-2.8499999999999996" x2="-1.6" y2="-0.963675323681471" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="0.031766235091371" y1="-2.8499999999999996" x2="-1.6" y2="-1.2182337649086283" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.22279220613578588" y1="-2.8499999999999996" x2="-1.6" y2="-1.4727922061357852" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.4773506473629432" y1="-2.8499999999999996" x2="-1.6" y2="-1.7273506473629427" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.7319090885901005" y1="-2.8499999999999996" x2="-1.6" y2="-1.9819090885900996" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-0.9864675298172576" y1="-2.8499999999999996" x2="-1.6" y2="-2.236467529817257" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.241025971044414" y1="-2.8499999999999996" x2="-1.6" y2="-2.4910259710444134" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/><line x1="-1.4955844122715707" y1="-2.8499999999999996" x2="-1.6" y2="-2.7455844122715702" stroke="#00FF00" stroke-width="0.1" stroke-opacity="0.8"/></g><path d="M 0.8500000000000001 -2.8499999999999996 L 0.9431162833130827 -2.8454254903385867 L 1.035335805915322 -2.831746016383069 L 1.1257704433917393 -2.809093318945598 L 1.2135492607468352 -2.7776855558857223 L 1.2978268999846978 -2.737825201130937 L 1.3777917213686222 -2.689896131687418 L 1.4526736199554633 -2.6343599306946 L 1.5217514421272202 -2.57175144212722 L 1.5843599306946001 -2.502673619955463 L 1.6398961316874179 -2.4277917213686218 L 1.6878252011309371 -2.347826899984698 L 1.7276855558857225 -2.263549260746835 L 1.7590933189455984 -2.1757704433917393 L 1.7817460163830687 -2.0853358059153217 L 1.795425490338587 -1.9931162833130827 L 1.7999999999999998 -1.9 L 1.795425490338587 -1.8068837166869172 L 1.7817460163830687 -1.714664194084678 L 1.7590933189455984 -1.6242295566082607 L 1.7276855558857225 -1.5364507392531646 L 1.6878252011309371 -1.452173100015302 L 1.639896131687418 -1.372208278631378 L 1.5843599306946001 -1.2973263800445367 L 1.5217514421272202 -1.2282485578727798 L 1.4526736199554633 -1.1656400693053999 L 1.377791721368622 -1.110103868312582 L 1.2978268999846978 -1.0621747988690626 L 1.2135492607468352 -1.0223144441142775 L 1.1257704433917393 -0.9909066810544016 L 1.0353358059153221 -0.968253983616931 L 0.9431162833130827 -0.954574509661413 L 0.8500000000000001 -0.95 L -0.65 -0.95 L -0.6499999999999999 -0.95 L -0.7431162833130827 -0.9545745096614129 L -0.8353358059153217 -0.968253983616931 L -0.9257704433917391 -0.9909066810544015 L -1.0135492607468353 -1.0223144441142775 L -1.0978268999846978 -1.0621747988690626 L -1.1777917213686218 -1.110103868312582 L -1.2526736199554631 -1.1656400693053997 L -1.32175144212722 -1.2282485578727798 L -1.3843599306946002 -1.2973263800445367 L -1.439896131687418 -1.3722082786313778 L -1.4878252011309372 -1.452173100015302 L -1.5276855558857223 -1.5364507392531646 L -1.5590933189455982 -1.6242295566082607 L -1.581746016383069 -1.7146641940846776 L -1.595425490338587 -1.8068837166869172 L -1.6 -1.8999999999999997 L -1.5954254903385872 -1.9931162833130824 L -1.581746016383069 -2.0853358059153217 L -1.5590933189455984 -2.175770443391739 L -1.5276855558857225 -2.263549260746835 L -1.4878252011309372 -2.347826899984698 L -1.4398961316874181 -2.4277917213686218 L -1.3843599306946004 -2.5026736199554627 L -1.3217514421272203 -2.57175144212722 L -1.252673619955463 -2.6343599306946004 L -1.1777917213686222 -2.689896131687418 L -1.097826899984698 -2.737825201130937 L -1.013549260746836 -2.7776855558857223 L -0.9257704433917393 -2.809093318945598 L -0.8353358059153222 -2.8317460163830686 L -0.7431162833130824 -2.845425490338587 L -0.6500000000000002 -2.8499999999999996 L 0.85 -2.8499999999999996 L 0.8500000000000001 -2.8499999999999996 L 0.8500000000000001 -2.8499999999999996 Z" fill="none" stroke="#00FF00" stroke-width="0.1"/></g><g transform="matrix(1,0,0,1,0,0)"><path d="M 0.85 -2.65 L 0.9235128552471705 -2.6463885450041476 L 0.9963177415120963 -2.6355889603024227 L 1.0677135079408466 -2.6177052517991566 L 1.1370125742738173 -2.592909649383465 L 1.2035475526194983 -2.561440948261266 L 1.2666776747647017 -2.523602209226909 L 1.3257949631227341 -2.4797578400220526 L 1.3803300858899106 -2.4303300858899104 L 1.4297578400220528 -2.375794963122734 L 1.4736022092269088 -2.3166776747647013 L 1.5114409482612663 -2.2535475526194984 L 1.542909649383465 -2.187012574273817 L 1.5677052517991568 -2.1177135079408465 L 1.585588960302423 -2.0463177415120963 L 1.5963885450041477 -1.9735128552471704 L 1.6 -1.9 L 1.5963885450041477 -1.8264871447528295 L 1.585588960302423 -1.7536822584879037 L 1.5677052517991568 -1.6822864920591531 L 1.542909649383465 -1.6129874257261827 L 1.5114409482612663 -1.5464524473805015 L 1.473602209226909 -1.4833223252352985 L 1.4297578400220528 -1.4242050368772659 L 1.3803300858899106 -1.3696699141100894 L 1.3257949631227341 -1.3202421599779472 L 1.2666776747647015 -1.2763977907730908 L 1.2035475526194983 -1.2385590517387337 L 1.1370125742738173 -1.207090350616535 L 1.0677135079408466 -1.1822947482008432 L 0.9963177415120964 -1.164411039697577 L 0.9235128552471705 -1.1536114549958523 L 0.85 -1.15 L -0.65 -1.15 L -0.65 -1.15 L -0.7235128552471705 -1.1536114549958523 L -0.7963177415120961 -1.164411039697577 L -0.8677135079408467 -1.1822947482008432 L -0.9370125742738173 -1.207090350616535 L -1.0035475526194984 -1.2385590517387337 L -1.0666776747647015 -1.2763977907730908 L -1.125794963122734 -1.320242159977947 L -1.1803300858899106 -1.3696699141100892 L -1.2297578400220528 -1.4242050368772659 L -1.273602209226909 -1.4833223252352983 L -1.3114409482612661 -1.5464524473805015 L -1.342909649383465 -1.6129874257261825 L -1.3677052517991566 -1.6822864920591531 L -1.3855889603024227 -1.7536822584879035 L -1.3963885450041476 -1.8264871447528293 L -1.4 -1.9 L -1.3963885450041476 -1.9735128552471704 L -1.3855889603024227 -2.0463177415120963 L -1.3677052517991566 -2.1177135079408465 L -1.3429096493834651 -2.187012574273817 L -1.3114409482612663 -2.253547552619498 L -1.273602209226909 -2.3166776747647013 L -1.229757840022053 -2.375794963122734 L -1.1803300858899108 -2.4303300858899104 L -1.125794963122734 -2.479757840022053 L -1.0666776747647018 -2.523602209226909 L -1.0035475526194984 -2.561440948261266 L -0.9370125742738178 -2.592909649383465 L -0.8677135079408469 -2.6177052517991566 L -0.7963177415120966 -2.6355889603024227 L -0.7235128552471704 -2.6463885450041476 L -0.6500000000000001 -2.65 L 0.85 -2.65 L 0.85 -2.65 L 0.85 -2.65 Z" fill="none" stroke="#FF0000" stroke-width="0.1"/></g></g>
|
|
7
|
+
</g>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { test, expect } from "bun:test"
|
|
2
|
+
import { convertCircuitJsonToPcbSvg } from "circuit-to-svg"
|
|
3
|
+
import { generateLightBurnSvg } from "lbrnts"
|
|
4
|
+
import { convertCircuitJsonToLbrn } from "../../../lib"
|
|
5
|
+
import { stackSvgsVertically } from "stack-svgs"
|
|
6
|
+
import type { CircuitJson } from "circuit-json"
|
|
7
|
+
|
|
8
|
+
const circuitJson: CircuitJson = [
|
|
9
|
+
{
|
|
10
|
+
type: "pcb_board",
|
|
11
|
+
pcb_board_id: "board_soldermask_margin",
|
|
12
|
+
width: 10,
|
|
13
|
+
height: 10,
|
|
14
|
+
center: { x: 0, y: 0 },
|
|
15
|
+
thickness: 1.6,
|
|
16
|
+
num_layers: 2,
|
|
17
|
+
material: "fr4",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
type: "pcb_hole",
|
|
21
|
+
pcb_hole_id: "pcb_hole_circle_margin",
|
|
22
|
+
hole_shape: "circle",
|
|
23
|
+
hole_diameter: 1.5,
|
|
24
|
+
soldermask_margin: 0.5,
|
|
25
|
+
x: -2,
|
|
26
|
+
y: 2,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
type: "pcb_hole",
|
|
30
|
+
pcb_hole_id: "pcb_hole_rect_margin",
|
|
31
|
+
hole_shape: "rect",
|
|
32
|
+
hole_width: 2,
|
|
33
|
+
hole_height: 1.5,
|
|
34
|
+
soldermask_margin: 0.3,
|
|
35
|
+
x: 2,
|
|
36
|
+
y: 2,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
type: "pcb_hole",
|
|
40
|
+
pcb_hole_id: "pcb_hole_pill_margin",
|
|
41
|
+
hole_shape: "pill",
|
|
42
|
+
hole_width: 3,
|
|
43
|
+
hole_height: 1.5,
|
|
44
|
+
soldermask_margin: 0.2,
|
|
45
|
+
x: 0,
|
|
46
|
+
y: -2,
|
|
47
|
+
},
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
test("renders pcb holes with soldermask_margin", async () => {
|
|
51
|
+
const pcbSvg = await convertCircuitJsonToPcbSvg(circuitJson)
|
|
52
|
+
|
|
53
|
+
const project = convertCircuitJsonToLbrn(circuitJson, {
|
|
54
|
+
includeSoldermask: true,
|
|
55
|
+
// Note: globalCopperSoldermaskMarginAdjustment not applied to holes
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
const lbrnSvg = await generateLightBurnSvg(project)
|
|
59
|
+
|
|
60
|
+
expect(stackSvgsVertically([pcbSvg, lbrnSvg])).toMatchSvgSnapshot(
|
|
61
|
+
import.meta.filename,
|
|
62
|
+
)
|
|
63
|
+
})
|
|
@@ -49,7 +49,7 @@ test("renders pcb holes with soldermask openings", async () => {
|
|
|
49
49
|
|
|
50
50
|
const project = convertCircuitJsonToLbrn(circuitJson, {
|
|
51
51
|
includeSoldermask: true,
|
|
52
|
-
|
|
52
|
+
globalCopperSoldermaskMarginAdjustment: 0.2,
|
|
53
53
|
})
|
|
54
54
|
|
|
55
55
|
const lbrnSvg = await generateLightBurnSvg(project)
|
|
@@ -42,7 +42,7 @@ test("renders pcb vias with soldermask opening", async () => {
|
|
|
42
42
|
const project = convertCircuitJsonToLbrn(circuitJson, {
|
|
43
43
|
includeCopper: false,
|
|
44
44
|
includeSoldermask: true,
|
|
45
|
-
|
|
45
|
+
globalCopperSoldermaskMarginAdjustment: 0.1,
|
|
46
46
|
})
|
|
47
47
|
|
|
48
48
|
const lbrnSvg = generateLightBurnSvg(project)
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { test, expect } from "bun:test"
|
|
2
|
+
import { convertCircuitJsonToPcbSvg } from "circuit-to-svg"
|
|
3
|
+
import { generateLightBurnSvg } from "lbrnts"
|
|
4
|
+
import { convertCircuitJsonToLbrn } from "lib/index"
|
|
5
|
+
import { stackSvgsVertically } from "stack-svgs"
|
|
6
|
+
import type { CircuitJson } from "circuit-json"
|
|
7
|
+
|
|
8
|
+
const circuitJson: CircuitJson = [
|
|
9
|
+
{
|
|
10
|
+
type: "pcb_board",
|
|
11
|
+
pcb_board_id: "board_mixed",
|
|
12
|
+
width: 30,
|
|
13
|
+
height: 30,
|
|
14
|
+
center: { x: 0, y: 0 },
|
|
15
|
+
thickness: 1.6,
|
|
16
|
+
num_layers: 2,
|
|
17
|
+
material: "fr4",
|
|
18
|
+
},
|
|
19
|
+
// Circle SMT pad without soldermask_margin
|
|
20
|
+
{
|
|
21
|
+
type: "pcb_smtpad",
|
|
22
|
+
x: -6,
|
|
23
|
+
y: 6,
|
|
24
|
+
layer: "top",
|
|
25
|
+
shape: "circle",
|
|
26
|
+
pcb_smtpad_id: "smt_pad_circle_no_margin",
|
|
27
|
+
radius: 1,
|
|
28
|
+
port_hints: ["port1"],
|
|
29
|
+
},
|
|
30
|
+
// Rect SMT pad with soldermask_margin
|
|
31
|
+
{
|
|
32
|
+
type: "pcb_smtpad",
|
|
33
|
+
x: -2,
|
|
34
|
+
y: 6,
|
|
35
|
+
layer: "top",
|
|
36
|
+
shape: "rect",
|
|
37
|
+
pcb_smtpad_id: "smt_pad_rect_with_margin",
|
|
38
|
+
width: 2,
|
|
39
|
+
height: 1.5,
|
|
40
|
+
soldermask_margin: 0.1,
|
|
41
|
+
port_hints: ["port2"],
|
|
42
|
+
},
|
|
43
|
+
// Plated hole circle without soldermask_margin
|
|
44
|
+
{
|
|
45
|
+
type: "pcb_plated_hole",
|
|
46
|
+
pcb_plated_hole_id: "plated_hole_circle_no_margin",
|
|
47
|
+
pcb_component_id: "pcb_component_1",
|
|
48
|
+
pcb_port_id: "pcb_port_3",
|
|
49
|
+
outer_diameter: 3,
|
|
50
|
+
hole_diameter: 1.5,
|
|
51
|
+
shape: "circle",
|
|
52
|
+
port_hints: ["port3"],
|
|
53
|
+
x: 2,
|
|
54
|
+
y: 6,
|
|
55
|
+
layers: ["top", "bottom"],
|
|
56
|
+
},
|
|
57
|
+
// Via without soldermask_margin
|
|
58
|
+
{
|
|
59
|
+
type: "pcb_via",
|
|
60
|
+
pcb_via_id: "via_no_margin",
|
|
61
|
+
x: -4,
|
|
62
|
+
y: -4,
|
|
63
|
+
outer_diameter: 2,
|
|
64
|
+
hole_diameter: 1,
|
|
65
|
+
layers: ["top", "bottom"],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
type: "pcb_hole",
|
|
69
|
+
pcb_hole_id: "hole1",
|
|
70
|
+
x: 6,
|
|
71
|
+
y: 2,
|
|
72
|
+
hole_shape: "rect",
|
|
73
|
+
hole_width: 2,
|
|
74
|
+
hole_height: 4,
|
|
75
|
+
soldermask_margin: 0.3,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: "pcb_hole",
|
|
79
|
+
pcb_hole_id: "hole2",
|
|
80
|
+
x: 6,
|
|
81
|
+
y: -6,
|
|
82
|
+
hole_shape: "circle",
|
|
83
|
+
hole_diameter: 3,
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
{
|
|
87
|
+
type: "pcb_cutout",
|
|
88
|
+
pcb_cutout_id: "1",
|
|
89
|
+
center: {
|
|
90
|
+
x: 12,
|
|
91
|
+
y: -5,
|
|
92
|
+
},
|
|
93
|
+
shape: "circle",
|
|
94
|
+
radius: 2,
|
|
95
|
+
},
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
test("renders mixed elements with global and per-element soldermask margins", async () => {
|
|
99
|
+
const pcbSvg = await convertCircuitJsonToPcbSvg(circuitJson as CircuitJson)
|
|
100
|
+
|
|
101
|
+
const project = convertCircuitJsonToLbrn(circuitJson as CircuitJson, {
|
|
102
|
+
includeSoldermask: true,
|
|
103
|
+
globalCopperSoldermaskMarginAdjustment: 0.2,
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
const lbrnSvg = await generateLightBurnSvg(project)
|
|
107
|
+
|
|
108
|
+
expect(stackSvgsVertically([pcbSvg, lbrnSvg])).toMatchSvgSnapshot(
|
|
109
|
+
import.meta.filename,
|
|
110
|
+
)
|
|
111
|
+
})
|
|
@@ -67,7 +67,7 @@ test("renders soldermask with positive margin", async () => {
|
|
|
67
67
|
const project = convertCircuitJsonToLbrn(circuitJson, {
|
|
68
68
|
includeSoldermask: true,
|
|
69
69
|
includeCopper: true,
|
|
70
|
-
|
|
70
|
+
globalCopperSoldermaskMarginAdjustment: -0.2,
|
|
71
71
|
})
|
|
72
72
|
|
|
73
73
|
const lbrnSvg = await generateLightBurnSvg(project)
|
|
@@ -67,7 +67,7 @@ test("renders soldermask with positive margin", async () => {
|
|
|
67
67
|
const project = convertCircuitJsonToLbrn(circuitJson, {
|
|
68
68
|
includeSoldermask: true,
|
|
69
69
|
includeCopper: true,
|
|
70
|
-
|
|
70
|
+
globalCopperSoldermaskMarginAdjustment: 0.2,
|
|
71
71
|
})
|
|
72
72
|
|
|
73
73
|
const lbrnSvg = await generateLightBurnSvg(project)
|