@tscircuit/rectdiff 0.0.1

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.
Files changed (40) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/.github/workflows/bun-formatcheck.yml +26 -0
  3. package/.github/workflows/bun-pver-release.yml +71 -0
  4. package/.github/workflows/bun-test.yml +31 -0
  5. package/.github/workflows/bun-typecheck.yml +26 -0
  6. package/CLAUDE.md +23 -0
  7. package/README.md +5 -0
  8. package/biome.json +93 -0
  9. package/bun.lock +29 -0
  10. package/bunfig.toml +5 -0
  11. package/components/SolverDebugger3d.tsx +833 -0
  12. package/cosmos.config.json +6 -0
  13. package/cosmos.decorator.tsx +21 -0
  14. package/dist/index.d.ts +111 -0
  15. package/dist/index.js +921 -0
  16. package/experiments/rect-fill-2d.tsx +983 -0
  17. package/experiments/rect3d_visualizer.html +640 -0
  18. package/global.d.ts +4 -0
  19. package/index.html +12 -0
  20. package/lib/index.ts +1 -0
  21. package/lib/solvers/RectDiffSolver.ts +158 -0
  22. package/lib/solvers/rectdiff/candidates.ts +397 -0
  23. package/lib/solvers/rectdiff/engine.ts +355 -0
  24. package/lib/solvers/rectdiff/geometry.ts +284 -0
  25. package/lib/solvers/rectdiff/layers.ts +48 -0
  26. package/lib/solvers/rectdiff/rectsToMeshNodes.ts +22 -0
  27. package/lib/solvers/rectdiff/types.ts +63 -0
  28. package/lib/types/capacity-mesh-types.ts +33 -0
  29. package/lib/types/srj-types.ts +37 -0
  30. package/package.json +33 -0
  31. package/pages/example01.page.tsx +11 -0
  32. package/test-assets/example01.json +933 -0
  33. package/tests/__snapshots__/svg.snap.svg +3 -0
  34. package/tests/examples/__snapshots__/example01.snap.svg +121 -0
  35. package/tests/examples/example01.test.tsx +65 -0
  36. package/tests/fixtures/preload.ts +1 -0
  37. package/tests/incremental-solver.test.ts +100 -0
  38. package/tests/rect-diff-solver.test.ts +154 -0
  39. package/tests/svg.test.ts +12 -0
  40. package/tsconfig.json +30 -0
@@ -0,0 +1,933 @@
1
+ {
2
+ "bounds": {
3
+ "minX": -12.5,
4
+ "maxX": 12.5,
5
+ "minY": -15,
6
+ "maxY": 15
7
+ },
8
+ "obstacles": [
9
+ {
10
+ "type": "rect",
11
+ "layers": ["top"],
12
+ "center": {
13
+ "x": -5.856893060790263,
14
+ "y": -8.275436101920713
15
+ },
16
+ "width": 0.6000000000000001,
17
+ "height": 0.16500000000000004,
18
+ "connectedTo": [
19
+ "pcb_smtpad_0",
20
+ "connectivity_net5",
21
+ "source_trace_2",
22
+ "source_port_19",
23
+ "source_port_6",
24
+ "pcb_smtpad_0",
25
+ "pcb_port_6",
26
+ "pcb_smtpad_13",
27
+ "pcb_port_19"
28
+ ]
29
+ },
30
+ {
31
+ "type": "rect",
32
+ "layers": ["top"],
33
+ "center": {
34
+ "x": -5.856893060790263,
35
+ "y": -8.425436101920713
36
+ },
37
+ "width": 0.6000000000000001,
38
+ "height": 0.16500000000000004,
39
+ "connectedTo": [
40
+ "pcb_smtpad_0",
41
+ "connectivity_net5",
42
+ "source_trace_2",
43
+ "source_port_19",
44
+ "source_port_6",
45
+ "pcb_smtpad_0",
46
+ "pcb_port_6",
47
+ "pcb_smtpad_13",
48
+ "pcb_port_19"
49
+ ]
50
+ },
51
+ {
52
+ "type": "rect",
53
+ "layers": ["top"],
54
+ "center": {
55
+ "x": -5.856893060790263,
56
+ "y": -8.575436101920712
57
+ },
58
+ "width": 0.6000000000000001,
59
+ "height": 0.16500000000000004,
60
+ "connectedTo": [
61
+ "pcb_smtpad_0",
62
+ "connectivity_net5",
63
+ "source_trace_2",
64
+ "source_port_19",
65
+ "source_port_6",
66
+ "pcb_smtpad_0",
67
+ "pcb_port_6",
68
+ "pcb_smtpad_13",
69
+ "pcb_port_19"
70
+ ]
71
+ },
72
+ {
73
+ "type": "rect",
74
+ "layers": ["top"],
75
+ "center": {
76
+ "x": -5.856893060790263,
77
+ "y": -8.725436101920712
78
+ },
79
+ "width": 0.6000000000000001,
80
+ "height": 0.16500000000000004,
81
+ "connectedTo": [
82
+ "pcb_smtpad_0",
83
+ "connectivity_net5",
84
+ "source_trace_2",
85
+ "source_port_19",
86
+ "source_port_6",
87
+ "pcb_smtpad_0",
88
+ "pcb_port_6",
89
+ "pcb_smtpad_13",
90
+ "pcb_port_19"
91
+ ]
92
+ },
93
+ {
94
+ "type": "rect",
95
+ "layers": ["top"],
96
+ "center": {
97
+ "x": -6.856893060790263,
98
+ "y": -8.275436101920713
99
+ },
100
+ "width": 0.6000000000000001,
101
+ "height": 0.16500000000000004,
102
+ "connectedTo": [
103
+ "pcb_smtpad_1",
104
+ "connectivity_net11",
105
+ "source_trace_4",
106
+ "source_trace_3",
107
+ "source_port_9",
108
+ "source_port_7",
109
+ "source_port_2",
110
+ "pcb_plated_hole_2",
111
+ "pcb_port_2",
112
+ "pcb_smtpad_1",
113
+ "pcb_port_7",
114
+ "pcb_smtpad_3",
115
+ "pcb_port_9"
116
+ ]
117
+ },
118
+ {
119
+ "type": "rect",
120
+ "layers": ["top"],
121
+ "center": {
122
+ "x": -6.856893060790263,
123
+ "y": -8.425436101920713
124
+ },
125
+ "width": 0.6000000000000001,
126
+ "height": 0.16500000000000004,
127
+ "connectedTo": [
128
+ "pcb_smtpad_1",
129
+ "connectivity_net11",
130
+ "source_trace_4",
131
+ "source_trace_3",
132
+ "source_port_9",
133
+ "source_port_7",
134
+ "source_port_2",
135
+ "pcb_plated_hole_2",
136
+ "pcb_port_2",
137
+ "pcb_smtpad_1",
138
+ "pcb_port_7",
139
+ "pcb_smtpad_3",
140
+ "pcb_port_9"
141
+ ]
142
+ },
143
+ {
144
+ "type": "rect",
145
+ "layers": ["top"],
146
+ "center": {
147
+ "x": -6.856893060790263,
148
+ "y": -8.575436101920712
149
+ },
150
+ "width": 0.6000000000000001,
151
+ "height": 0.16500000000000004,
152
+ "connectedTo": [
153
+ "pcb_smtpad_1",
154
+ "connectivity_net11",
155
+ "source_trace_4",
156
+ "source_trace_3",
157
+ "source_port_9",
158
+ "source_port_7",
159
+ "source_port_2",
160
+ "pcb_plated_hole_2",
161
+ "pcb_port_2",
162
+ "pcb_smtpad_1",
163
+ "pcb_port_7",
164
+ "pcb_smtpad_3",
165
+ "pcb_port_9"
166
+ ]
167
+ },
168
+ {
169
+ "type": "rect",
170
+ "layers": ["top"],
171
+ "center": {
172
+ "x": -6.856893060790263,
173
+ "y": -8.725436101920712
174
+ },
175
+ "width": 0.6000000000000001,
176
+ "height": 0.16500000000000004,
177
+ "connectedTo": [
178
+ "pcb_smtpad_1",
179
+ "connectivity_net11",
180
+ "source_trace_4",
181
+ "source_trace_3",
182
+ "source_port_9",
183
+ "source_port_7",
184
+ "source_port_2",
185
+ "pcb_plated_hole_2",
186
+ "pcb_port_2",
187
+ "pcb_smtpad_1",
188
+ "pcb_port_7",
189
+ "pcb_smtpad_3",
190
+ "pcb_port_9"
191
+ ]
192
+ },
193
+ {
194
+ "type": "rect",
195
+ "layers": ["top"],
196
+ "center": {
197
+ "x": -6.040227999999999,
198
+ "y": 12.073
199
+ },
200
+ "width": 2.75,
201
+ "height": 2,
202
+ "connectedTo": [
203
+ "pcb_smtpad_2",
204
+ "connectivity_net90",
205
+ "source_port_8",
206
+ "pcb_smtpad_2",
207
+ "pcb_port_8"
208
+ ]
209
+ },
210
+ {
211
+ "type": "rect",
212
+ "layers": ["top"],
213
+ "center": {
214
+ "x": -6.040227999999999,
215
+ "y": 9.533000000000001
216
+ },
217
+ "width": 2.75,
218
+ "height": 2,
219
+ "connectedTo": [
220
+ "pcb_smtpad_3",
221
+ "connectivity_net11",
222
+ "source_trace_4",
223
+ "source_trace_3",
224
+ "source_port_9",
225
+ "source_port_7",
226
+ "source_port_2",
227
+ "pcb_plated_hole_2",
228
+ "pcb_port_2",
229
+ "pcb_smtpad_1",
230
+ "pcb_port_7",
231
+ "pcb_smtpad_3",
232
+ "pcb_port_9"
233
+ ]
234
+ },
235
+ {
236
+ "type": "rect",
237
+ "layers": ["top"],
238
+ "center": {
239
+ "x": -6.040227999999999,
240
+ "y": 6.993
241
+ },
242
+ "width": 2.75,
243
+ "height": 2,
244
+ "connectedTo": [
245
+ "pcb_smtpad_4",
246
+ "connectivity_net15",
247
+ "source_trace_6",
248
+ "source_port_10",
249
+ "source_port_4",
250
+ "pcb_plated_hole_4",
251
+ "pcb_port_4",
252
+ "pcb_smtpad_4",
253
+ "pcb_port_10"
254
+ ]
255
+ },
256
+ {
257
+ "type": "rect",
258
+ "layers": ["top"],
259
+ "center": {
260
+ "x": -6.040227999999999,
261
+ "y": 4.453
262
+ },
263
+ "width": 2.75,
264
+ "height": 2,
265
+ "connectedTo": [
266
+ "pcb_smtpad_5",
267
+ "connectivity_net91",
268
+ "source_port_11",
269
+ "pcb_smtpad_5",
270
+ "pcb_port_11"
271
+ ]
272
+ },
273
+ {
274
+ "type": "rect",
275
+ "layers": ["top"],
276
+ "center": {
277
+ "x": -6.040227999999999,
278
+ "y": 1.9129999999999998
279
+ },
280
+ "width": 2.75,
281
+ "height": 2,
282
+ "connectedTo": [
283
+ "pcb_smtpad_6",
284
+ "connectivity_net92",
285
+ "source_port_12",
286
+ "pcb_smtpad_6",
287
+ "pcb_port_12"
288
+ ]
289
+ },
290
+ {
291
+ "type": "rect",
292
+ "layers": ["top"],
293
+ "center": {
294
+ "x": -6.040227999999999,
295
+ "y": -0.6269999999999998
296
+ },
297
+ "width": 2.75,
298
+ "height": 2,
299
+ "connectedTo": [
300
+ "pcb_smtpad_7",
301
+ "connectivity_net93",
302
+ "source_port_13",
303
+ "pcb_smtpad_7",
304
+ "pcb_port_13"
305
+ ]
306
+ },
307
+ {
308
+ "type": "rect",
309
+ "layers": ["top"],
310
+ "center": {
311
+ "x": -6.040227999999999,
312
+ "y": -3.167
313
+ },
314
+ "width": 2.75,
315
+ "height": 2,
316
+ "connectedTo": [
317
+ "pcb_smtpad_8",
318
+ "connectivity_net94",
319
+ "source_port_14",
320
+ "pcb_smtpad_8",
321
+ "pcb_port_14"
322
+ ]
323
+ },
324
+ {
325
+ "type": "rect",
326
+ "layers": ["top"],
327
+ "center": {
328
+ "x": 10.124772,
329
+ "y": -3.167
330
+ },
331
+ "width": 2.75,
332
+ "height": 2,
333
+ "connectedTo": [
334
+ "pcb_smtpad_9",
335
+ "connectivity_net95",
336
+ "source_port_15",
337
+ "pcb_smtpad_9",
338
+ "pcb_port_15"
339
+ ]
340
+ },
341
+ {
342
+ "type": "rect",
343
+ "layers": ["top"],
344
+ "center": {
345
+ "x": 10.124772,
346
+ "y": -0.6269999999999998
347
+ },
348
+ "width": 2.75,
349
+ "height": 2,
350
+ "connectedTo": [
351
+ "pcb_smtpad_10",
352
+ "connectivity_net96",
353
+ "source_port_16",
354
+ "pcb_smtpad_10",
355
+ "pcb_port_16"
356
+ ]
357
+ },
358
+ {
359
+ "type": "rect",
360
+ "layers": ["top"],
361
+ "center": {
362
+ "x": 10.124772,
363
+ "y": 1.9129999999999998
364
+ },
365
+ "width": 2.75,
366
+ "height": 2,
367
+ "connectedTo": [
368
+ "pcb_smtpad_11",
369
+ "connectivity_net97",
370
+ "source_port_17",
371
+ "pcb_smtpad_11",
372
+ "pcb_port_17"
373
+ ]
374
+ },
375
+ {
376
+ "type": "rect",
377
+ "layers": ["top"],
378
+ "center": {
379
+ "x": 10.124772,
380
+ "y": 4.453
381
+ },
382
+ "width": 2.75,
383
+ "height": 2,
384
+ "connectedTo": [
385
+ "pcb_smtpad_12",
386
+ "connectivity_net98",
387
+ "source_port_18",
388
+ "pcb_smtpad_12",
389
+ "pcb_port_18"
390
+ ]
391
+ },
392
+ {
393
+ "type": "rect",
394
+ "layers": ["top"],
395
+ "center": {
396
+ "x": 10.124772,
397
+ "y": 6.993
398
+ },
399
+ "width": 2.75,
400
+ "height": 2,
401
+ "connectedTo": [
402
+ "pcb_smtpad_13",
403
+ "connectivity_net5",
404
+ "source_trace_2",
405
+ "source_port_19",
406
+ "source_port_6",
407
+ "pcb_smtpad_0",
408
+ "pcb_port_6",
409
+ "pcb_smtpad_13",
410
+ "pcb_port_19"
411
+ ]
412
+ },
413
+ {
414
+ "type": "rect",
415
+ "layers": ["top"],
416
+ "center": {
417
+ "x": 10.124772,
418
+ "y": 9.533000000000001
419
+ },
420
+ "width": 2.75,
421
+ "height": 2,
422
+ "connectedTo": [
423
+ "pcb_smtpad_14",
424
+ "connectivity_net18",
425
+ "source_trace_7",
426
+ "source_port_5",
427
+ "source_trace_5",
428
+ "source_port_3",
429
+ "source_trace_1",
430
+ "source_port_27",
431
+ "source_trace_0",
432
+ "source_port_20",
433
+ "source_net_0",
434
+ "pcb_plated_hole_3",
435
+ "pcb_port_3",
436
+ "pcb_plated_hole_5",
437
+ "pcb_port_5",
438
+ "pcb_smtpad_14",
439
+ "pcb_port_20",
440
+ "pcb_smtpad_21",
441
+ "pcb_port_27"
442
+ ]
443
+ },
444
+ {
445
+ "type": "rect",
446
+ "layers": ["top"],
447
+ "center": {
448
+ "x": 10.124772,
449
+ "y": 12.073
450
+ },
451
+ "width": 2.75,
452
+ "height": 2,
453
+ "connectedTo": [
454
+ "pcb_smtpad_15",
455
+ "connectivity_net99",
456
+ "source_port_21",
457
+ "pcb_smtpad_15",
458
+ "pcb_port_21"
459
+ ]
460
+ },
461
+ {
462
+ "type": "rect",
463
+ "layers": ["top"],
464
+ "center": {
465
+ "x": -2.4302279999999996,
466
+ "y": 4.835
467
+ },
468
+ "width": 2.5,
469
+ "height": 1.1,
470
+ "connectedTo": [
471
+ "pcb_smtpad_16",
472
+ "connectivity_net20",
473
+ "source_trace_8",
474
+ "source_port_22",
475
+ "source_port_1",
476
+ "pcb_plated_hole_1",
477
+ "pcb_port_1",
478
+ "pcb_smtpad_16",
479
+ "pcb_port_22"
480
+ ]
481
+ },
482
+ {
483
+ "type": "rect",
484
+ "layers": ["top"],
485
+ "center": {
486
+ "x": -2.4302279999999996,
487
+ "y": 6.74
488
+ },
489
+ "width": 2.5,
490
+ "height": 1.1,
491
+ "connectedTo": [
492
+ "pcb_smtpad_17",
493
+ "connectivity_net23",
494
+ "source_trace_9",
495
+ "source_port_23",
496
+ "source_port_0",
497
+ "pcb_plated_hole_0",
498
+ "pcb_port_0",
499
+ "pcb_smtpad_17",
500
+ "pcb_port_23"
501
+ ]
502
+ },
503
+ {
504
+ "type": "rect",
505
+ "layers": ["top"],
506
+ "center": {
507
+ "x": 0.7447720000000002,
508
+ "y": 13.085
509
+ },
510
+ "width": 1.7,
511
+ "height": 1.7,
512
+ "connectedTo": [
513
+ "pcb_smtpad_18",
514
+ "connectivity_net100",
515
+ "source_port_24",
516
+ "pcb_smtpad_18",
517
+ "pcb_port_24"
518
+ ]
519
+ },
520
+ {
521
+ "type": "rect",
522
+ "layers": ["top"],
523
+ "center": {
524
+ "x": 3.2847720000000002,
525
+ "y": 13.085
526
+ },
527
+ "width": 1.7,
528
+ "height": 1.7,
529
+ "connectedTo": [
530
+ "pcb_smtpad_19",
531
+ "connectivity_net101",
532
+ "source_port_25",
533
+ "pcb_smtpad_19",
534
+ "pcb_port_25"
535
+ ]
536
+ },
537
+ {
538
+ "type": "rect",
539
+ "layers": ["top"],
540
+ "center": {
541
+ "x": 0.7447720000000002,
542
+ "y": 10.545
543
+ },
544
+ "width": 1.7,
545
+ "height": 1.7,
546
+ "connectedTo": [
547
+ "pcb_smtpad_20",
548
+ "connectivity_net102",
549
+ "source_port_26",
550
+ "pcb_smtpad_20",
551
+ "pcb_port_26"
552
+ ]
553
+ },
554
+ {
555
+ "type": "rect",
556
+ "layers": ["top"],
557
+ "center": {
558
+ "x": 3.2847720000000002,
559
+ "y": 10.545
560
+ },
561
+ "width": 1.7,
562
+ "height": 1.7,
563
+ "connectedTo": [
564
+ "pcb_smtpad_21",
565
+ "connectivity_net18",
566
+ "source_trace_7",
567
+ "source_port_5",
568
+ "source_trace_5",
569
+ "source_port_3",
570
+ "source_trace_1",
571
+ "source_port_27",
572
+ "source_trace_0",
573
+ "source_port_20",
574
+ "source_net_0",
575
+ "pcb_plated_hole_3",
576
+ "pcb_port_3",
577
+ "pcb_plated_hole_5",
578
+ "pcb_port_5",
579
+ "pcb_smtpad_14",
580
+ "pcb_port_20",
581
+ "pcb_smtpad_21",
582
+ "pcb_port_27"
583
+ ]
584
+ },
585
+ {
586
+ "type": "rect",
587
+ "layers": ["top"],
588
+ "center": {
589
+ "x": 0.7447720000000002,
590
+ "y": 8.004999999999999
591
+ },
592
+ "width": 1.7,
593
+ "height": 1.7,
594
+ "connectedTo": [
595
+ "pcb_smtpad_22",
596
+ "connectivity_net103",
597
+ "source_port_28",
598
+ "pcb_smtpad_22",
599
+ "pcb_port_28"
600
+ ]
601
+ },
602
+ {
603
+ "type": "rect",
604
+ "layers": ["top"],
605
+ "center": {
606
+ "x": 3.2847720000000002,
607
+ "y": 8.004999999999999
608
+ },
609
+ "width": 1.7,
610
+ "height": 1.7,
611
+ "connectedTo": [
612
+ "pcb_smtpad_23",
613
+ "connectivity_net104",
614
+ "source_port_29",
615
+ "pcb_smtpad_23",
616
+ "pcb_port_29"
617
+ ]
618
+ },
619
+ {
620
+ "type": "rect",
621
+ "layers": ["top"],
622
+ "center": {
623
+ "x": 0.7447720000000002,
624
+ "y": 5.465
625
+ },
626
+ "width": 1.7,
627
+ "height": 1.7,
628
+ "connectedTo": [
629
+ "pcb_smtpad_24",
630
+ "connectivity_net105",
631
+ "source_port_30",
632
+ "pcb_smtpad_24",
633
+ "pcb_port_30"
634
+ ]
635
+ },
636
+ {
637
+ "type": "rect",
638
+ "layers": ["top"],
639
+ "center": {
640
+ "x": 3.2847720000000002,
641
+ "y": 5.465
642
+ },
643
+ "width": 1.7,
644
+ "height": 1.7,
645
+ "connectedTo": [
646
+ "pcb_smtpad_25",
647
+ "connectivity_net106",
648
+ "source_port_31",
649
+ "pcb_smtpad_25",
650
+ "pcb_port_31"
651
+ ]
652
+ },
653
+ {
654
+ "type": "oval",
655
+ "layers": ["top", "inner1", "inner2", "bottom"],
656
+ "center": {
657
+ "x": 3.6885631738662035,
658
+ "y": -10.96420520580684
659
+ },
660
+ "width": 1.5,
661
+ "height": 1.5,
662
+ "connectedTo": [
663
+ "pcb_plated_hole_0",
664
+ "connectivity_net23",
665
+ "source_trace_9",
666
+ "source_port_23",
667
+ "source_port_0",
668
+ "pcb_plated_hole_0",
669
+ "pcb_port_0",
670
+ "pcb_smtpad_17",
671
+ "pcb_port_23"
672
+ ]
673
+ },
674
+ {
675
+ "type": "oval",
676
+ "layers": ["top", "inner1", "inner2", "bottom"],
677
+ "center": {
678
+ "x": 3.6885631738662035,
679
+ "y": -8.96420520580684
680
+ },
681
+ "width": 1.5,
682
+ "height": 1.5,
683
+ "connectedTo": [
684
+ "pcb_plated_hole_1",
685
+ "connectivity_net20",
686
+ "source_trace_8",
687
+ "source_port_22",
688
+ "source_port_1",
689
+ "pcb_plated_hole_1",
690
+ "pcb_port_1",
691
+ "pcb_smtpad_16",
692
+ "pcb_port_22"
693
+ ]
694
+ },
695
+ {
696
+ "type": "oval",
697
+ "layers": ["top", "inner1", "inner2", "bottom"],
698
+ "center": {
699
+ "x": -10.727385294299685,
700
+ "y": -11.579453643315949
701
+ },
702
+ "width": 1.5,
703
+ "height": 1.5,
704
+ "connectedTo": [
705
+ "pcb_plated_hole_2",
706
+ "connectivity_net11",
707
+ "source_trace_4",
708
+ "source_trace_3",
709
+ "source_port_9",
710
+ "source_port_7",
711
+ "source_port_2",
712
+ "pcb_plated_hole_2",
713
+ "pcb_port_2",
714
+ "pcb_smtpad_1",
715
+ "pcb_port_7",
716
+ "pcb_smtpad_3",
717
+ "pcb_port_9"
718
+ ]
719
+ },
720
+ {
721
+ "type": "oval",
722
+ "layers": ["top", "inner1", "inner2", "bottom"],
723
+ "center": {
724
+ "x": -10.727385294299685,
725
+ "y": -8.079453643315949
726
+ },
727
+ "width": 1.5,
728
+ "height": 1.5,
729
+ "connectedTo": [
730
+ "pcb_plated_hole_3",
731
+ "connectivity_net18",
732
+ "source_trace_7",
733
+ "source_port_5",
734
+ "source_trace_5",
735
+ "source_port_3",
736
+ "source_trace_1",
737
+ "source_port_27",
738
+ "source_trace_0",
739
+ "source_port_20",
740
+ "source_net_0",
741
+ "pcb_plated_hole_3",
742
+ "pcb_port_3",
743
+ "pcb_plated_hole_5",
744
+ "pcb_port_5",
745
+ "pcb_smtpad_14",
746
+ "pcb_port_20",
747
+ "pcb_smtpad_21",
748
+ "pcb_port_27"
749
+ ]
750
+ },
751
+ {
752
+ "type": "oval",
753
+ "layers": ["top", "inner1", "inner2", "bottom"],
754
+ "center": {
755
+ "x": -10.727385294299685,
756
+ "y": -4.579453643315949
757
+ },
758
+ "width": 1.5,
759
+ "height": 1.5,
760
+ "connectedTo": [
761
+ "pcb_plated_hole_4",
762
+ "connectivity_net15",
763
+ "source_trace_6",
764
+ "source_port_10",
765
+ "source_port_4",
766
+ "pcb_plated_hole_4",
767
+ "pcb_port_4",
768
+ "pcb_smtpad_4",
769
+ "pcb_port_10"
770
+ ]
771
+ },
772
+ {
773
+ "type": "oval",
774
+ "layers": ["top", "inner1", "inner2", "bottom"],
775
+ "center": {
776
+ "x": -10.727385294299685,
777
+ "y": -1.079453643315949
778
+ },
779
+ "width": 1.5,
780
+ "height": 1.5,
781
+ "connectedTo": [
782
+ "pcb_plated_hole_5",
783
+ "connectivity_net18",
784
+ "source_trace_7",
785
+ "source_port_5",
786
+ "source_trace_5",
787
+ "source_port_3",
788
+ "source_trace_1",
789
+ "source_port_27",
790
+ "source_trace_0",
791
+ "source_port_20",
792
+ "source_net_0",
793
+ "pcb_plated_hole_3",
794
+ "pcb_port_3",
795
+ "pcb_plated_hole_5",
796
+ "pcb_port_5",
797
+ "pcb_smtpad_14",
798
+ "pcb_port_20",
799
+ "pcb_smtpad_21",
800
+ "pcb_port_27"
801
+ ]
802
+ }
803
+ ],
804
+ "connections": [
805
+ {
806
+ "name": "source_trace_2",
807
+ "source_trace_id": "source_trace_2",
808
+ "pointsToConnect": [
809
+ {
810
+ "x": 10.124772,
811
+ "y": 6.993,
812
+ "layer": "top"
813
+ },
814
+ {
815
+ "x": -5.856893060790263,
816
+ "y": -8.500436101920712,
817
+ "layer": "top"
818
+ }
819
+ ]
820
+ },
821
+ {
822
+ "name": "source_trace_3",
823
+ "source_trace_id": "source_trace_3",
824
+ "pointsToConnect": [
825
+ {
826
+ "x": -6.040227999999999,
827
+ "y": 9.533000000000001,
828
+ "layer": "top"
829
+ },
830
+ {
831
+ "x": -6.856893060790263,
832
+ "y": -8.500436101920712,
833
+ "layer": "top"
834
+ }
835
+ ]
836
+ },
837
+ {
838
+ "name": "source_trace_4",
839
+ "source_trace_id": "source_trace_4",
840
+ "pointsToConnect": [
841
+ {
842
+ "x": -6.856893060790263,
843
+ "y": -8.500436101920712,
844
+ "layer": "top"
845
+ },
846
+ {
847
+ "x": -10.727385294299685,
848
+ "y": -11.579453643315949,
849
+ "layer": "top"
850
+ }
851
+ ]
852
+ },
853
+ {
854
+ "name": "source_trace_6",
855
+ "source_trace_id": "source_trace_6",
856
+ "pointsToConnect": [
857
+ {
858
+ "x": -6.040227999999999,
859
+ "y": 6.993,
860
+ "layer": "top"
861
+ },
862
+ {
863
+ "x": -10.727385294299685,
864
+ "y": -4.579453643315949,
865
+ "layer": "top"
866
+ }
867
+ ]
868
+ },
869
+ {
870
+ "name": "source_trace_8",
871
+ "source_trace_id": "source_trace_8",
872
+ "pointsToConnect": [
873
+ {
874
+ "x": -2.4302279999999996,
875
+ "y": 4.835,
876
+ "layer": "top"
877
+ },
878
+ {
879
+ "x": 3.6885631738662035,
880
+ "y": -8.96420520580684,
881
+ "layer": "top"
882
+ }
883
+ ]
884
+ },
885
+ {
886
+ "name": "source_trace_9",
887
+ "source_trace_id": "source_trace_9",
888
+ "pointsToConnect": [
889
+ {
890
+ "x": -2.4302279999999996,
891
+ "y": 6.74,
892
+ "layer": "top"
893
+ },
894
+ {
895
+ "x": 3.6885631738662035,
896
+ "y": -10.96420520580684,
897
+ "layer": "top"
898
+ }
899
+ ]
900
+ },
901
+ {
902
+ "name": "source_net_0",
903
+ "pointsToConnect": [
904
+ {
905
+ "x": 10.124772,
906
+ "y": 9.533000000000001,
907
+ "layer": "top",
908
+ "pcb_port_id": "pcb_port_20"
909
+ },
910
+ {
911
+ "x": 3.2847720000000002,
912
+ "y": 10.545,
913
+ "layer": "top",
914
+ "pcb_port_id": "pcb_port_27"
915
+ },
916
+ {
917
+ "x": -10.727385294299685,
918
+ "y": -8.079453643315949,
919
+ "layer": "top",
920
+ "pcb_port_id": "pcb_port_3"
921
+ },
922
+ {
923
+ "x": -10.727385294299685,
924
+ "y": -1.079453643315949,
925
+ "layer": "top",
926
+ "pcb_port_id": "pcb_port_5"
927
+ }
928
+ ]
929
+ }
930
+ ],
931
+ "layerCount": 2,
932
+ "minTraceWidth": 0.15
933
+ }