@tscircuit/rectdiff 0.0.26 → 0.0.28

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 (39) hide show
  1. package/dist/index.d.ts +21 -0
  2. package/dist/index.js +488 -160
  3. package/lib/RectDiffPipeline.ts +23 -0
  4. package/lib/solvers/AdjacentLayerContainmentMergeSolver/AdjacentLayerContainmentMergeSolver.ts +456 -0
  5. package/lib/solvers/OuterLayerContainmentMergeSolver/OuterLayerContainmentMergeSolver.ts +4 -1
  6. package/package.json +1 -1
  7. package/pages/bugreports/bugreport50-multi-support-layer-merge.page.tsx +19 -0
  8. package/tests/__snapshots__/board-outline.snap.svg +2 -2
  9. package/tests/outer-layer-containment-merge-solver.test.ts +73 -0
  10. package/tests/solver/__snapshots__/rectDiffGridSolverPipeline.snap.svg +1 -1
  11. package/tests/solver/both-points-equivalent/__snapshots__/both-points-equivalent.snap.svg +1 -1
  12. package/tests/solver/bugreport01-be84eb/__snapshots__/bugreport01-be84eb.snap.svg +1 -1
  13. package/tests/solver/bugreport02-bc4361/__snapshots__/bugreport02-bc4361.snap.svg +1 -1
  14. package/tests/solver/bugreport03-fe4a17/__snapshots__/bugreport03-fe4a17.snap.svg +1 -1
  15. package/tests/solver/bugreport07-d3f3be/__snapshots__/bugreport07-d3f3be.snap.svg +1 -1
  16. package/tests/solver/bugreport08-e3ec95/__snapshots__/bugreport08-e3ec95.snap.svg +1 -1
  17. package/tests/solver/bugreport09-618e09/__snapshots__/bugreport09-618e09.snap.svg +1 -1
  18. package/tests/solver/bugreport10-71239a/__snapshots__/bugreport10-71239a.snap.svg +1 -1
  19. package/tests/solver/bugreport11-b2de3c/__snapshots__/bugreport11-b2de3c.snap.svg +1 -1
  20. package/tests/solver/bugreport12-35ce1c/__snapshots__/bugreport12-35ce1c.snap.svg +1 -1
  21. package/tests/solver/bugreport13-b9a758/__snapshots__/bugreport13-b9a758.snap.svg +1 -1
  22. package/tests/solver/bugreport16-d95f38/__snapshots__/bugreport16-d95f38.snap.svg +1 -1
  23. package/tests/solver/bugreport19/__snapshots__/bugreport19.snap.svg +1 -1
  24. package/tests/solver/bugreport20-obstacle-clipping/__snapshots__/bugreport20-obstacle-clipping.snap.svg +1 -1
  25. package/tests/solver/bugreport21-board-outline/__snapshots__/bugreport21-board-outline.snap.svg +2 -2
  26. package/tests/solver/bugreport22-2a75ce/__snapshots__/bugreport22-2a75ce.snap.svg +1 -1
  27. package/tests/solver/bugreport23-LGA15x4/__snapshots__/bugreport23-LGA15x4.snap.svg +1 -1
  28. package/tests/solver/bugreport24-05597c/__snapshots__/bugreport24-05597c.snap.svg +1 -1
  29. package/tests/solver/bugreport25-4b1d55/__snapshots__/bugreport25-4b1d55.snap.svg +1 -1
  30. package/tests/solver/bugreport36-bf8303/__snapshots__/bugreport36-bf8303.snap.svg +1 -1
  31. package/tests/solver/bugreport49-634662/__snapshots__/bugreport49-634662.snap.svg +1 -1
  32. package/tests/solver/bugreport49-634662/bugreport49-634662.test.ts +7 -11
  33. package/tests/solver/bugreport50-multi-support-layer-merge/__snapshots__/bugreport50-multi-support-layer-merge.snap.svg +44 -0
  34. package/tests/solver/bugreport50-multi-support-layer-merge/bugreport50-multi-support-layer-merge.json +972 -0
  35. package/tests/solver/bugreport50-multi-support-layer-merge/bugreport50-multi-support-layer-merge.test.ts +125 -0
  36. package/tests/solver/interaction/__snapshots__/interaction.snap.svg +1 -1
  37. package/tests/solver/multi-point/__snapshots__/multi-point.snap.svg +1 -1
  38. package/tests/solver/no-better-path/__snapshots__/no-better-path.snap.svg +1 -1
  39. package/tests/solver/transitivity/__snapshots__/transitivity.snap.svg +2 -2
@@ -0,0 +1,972 @@
1
+ {
2
+ "simpleRouteJson": {
3
+ "bounds": {
4
+ "maxX": 10,
5
+ "maxY": 5,
6
+ "minX": -10,
7
+ "minY": -5
8
+ },
9
+ "obstacles": [
10
+ {
11
+ "type": "rect",
12
+ "width": 1,
13
+ "center": {
14
+ "x": -2.15,
15
+ "y": 2.54
16
+ },
17
+ "height": 0.6,
18
+ "layers": ["top"],
19
+ "connectedTo": [
20
+ "pcb_smtpad_0",
21
+ "connectivity_net8",
22
+ "source_trace_3",
23
+ "source_port_10",
24
+ "source_port_0",
25
+ "pcb_smtpad_0",
26
+ "pcb_port_0",
27
+ "pcb_smtpad_10",
28
+ "pcb_port_10"
29
+ ],
30
+ "zLayers": [0]
31
+ },
32
+ {
33
+ "type": "rect",
34
+ "width": 1,
35
+ "center": {
36
+ "x": -2.15,
37
+ "y": 1.27
38
+ },
39
+ "height": 0.6,
40
+ "layers": ["top"],
41
+ "connectedTo": [
42
+ "pcb_smtpad_1",
43
+ "connectivity_net26",
44
+ "source_trace_10",
45
+ "source_port_17",
46
+ "source_trace_6",
47
+ "source_port_13",
48
+ "source_trace_4",
49
+ "source_port_11",
50
+ "source_trace_2",
51
+ "source_port_3",
52
+ "source_trace_0",
53
+ "source_port_1",
54
+ "source_net_0",
55
+ "pcb_smtpad_1",
56
+ "pcb_port_1",
57
+ "pcb_smtpad_3",
58
+ "pcb_port_3",
59
+ "pcb_smtpad_11",
60
+ "pcb_port_11",
61
+ "pcb_smtpad_13",
62
+ "pcb_port_13",
63
+ "pcb_smtpad_17",
64
+ "pcb_port_17"
65
+ ],
66
+ "zLayers": [0]
67
+ },
68
+ {
69
+ "type": "rect",
70
+ "width": 1,
71
+ "center": {
72
+ "x": -2.15,
73
+ "y": 0
74
+ },
75
+ "height": 0.6,
76
+ "layers": ["top"],
77
+ "connectedTo": [
78
+ "pcb_smtpad_2",
79
+ "connectivity_net24",
80
+ "source_trace_9",
81
+ "source_port_16",
82
+ "source_trace_1",
83
+ "source_port_2",
84
+ "source_net_1",
85
+ "pcb_smtpad_2",
86
+ "pcb_port_2",
87
+ "pcb_smtpad_16",
88
+ "pcb_port_16"
89
+ ],
90
+ "zLayers": [0]
91
+ },
92
+ {
93
+ "type": "rect",
94
+ "width": 1,
95
+ "center": {
96
+ "x": -2.15,
97
+ "y": -1.27
98
+ },
99
+ "height": 0.6,
100
+ "layers": ["top"],
101
+ "connectedTo": [
102
+ "pcb_smtpad_3",
103
+ "connectivity_net26",
104
+ "source_trace_10",
105
+ "source_port_17",
106
+ "source_trace_6",
107
+ "source_port_13",
108
+ "source_trace_4",
109
+ "source_port_11",
110
+ "source_trace_2",
111
+ "source_port_3",
112
+ "source_trace_0",
113
+ "source_port_1",
114
+ "source_net_0",
115
+ "pcb_smtpad_1",
116
+ "pcb_port_1",
117
+ "pcb_smtpad_3",
118
+ "pcb_port_3",
119
+ "pcb_smtpad_11",
120
+ "pcb_port_11",
121
+ "pcb_smtpad_13",
122
+ "pcb_port_13",
123
+ "pcb_smtpad_17",
124
+ "pcb_port_17"
125
+ ],
126
+ "zLayers": [0]
127
+ },
128
+ {
129
+ "type": "rect",
130
+ "width": 1,
131
+ "center": {
132
+ "x": -2.15,
133
+ "y": -2.54
134
+ },
135
+ "height": 0.6,
136
+ "layers": ["top"],
137
+ "connectedTo": [
138
+ "pcb_smtpad_4",
139
+ "connectivity_net74",
140
+ "source_port_4",
141
+ "pcb_smtpad_4",
142
+ "pcb_port_4"
143
+ ],
144
+ "zLayers": [0]
145
+ },
146
+ {
147
+ "type": "rect",
148
+ "width": 1,
149
+ "center": {
150
+ "x": 2.15,
151
+ "y": -2.54
152
+ },
153
+ "height": 0.6,
154
+ "layers": ["top"],
155
+ "connectedTo": [
156
+ "pcb_smtpad_5",
157
+ "connectivity_net13",
158
+ "source_trace_5",
159
+ "source_port_12",
160
+ "source_port_5",
161
+ "pcb_smtpad_5",
162
+ "pcb_port_5",
163
+ "pcb_smtpad_12",
164
+ "pcb_port_12"
165
+ ],
166
+ "zLayers": [0]
167
+ },
168
+ {
169
+ "type": "rect",
170
+ "width": 1,
171
+ "center": {
172
+ "x": 2.15,
173
+ "y": -1.27
174
+ },
175
+ "height": 0.6,
176
+ "layers": ["top"],
177
+ "connectedTo": [
178
+ "pcb_smtpad_6",
179
+ "connectivity_net21",
180
+ "source_trace_8",
181
+ "source_port_15",
182
+ "source_port_6",
183
+ "pcb_smtpad_6",
184
+ "pcb_port_6",
185
+ "pcb_smtpad_15",
186
+ "pcb_port_15"
187
+ ],
188
+ "zLayers": [0]
189
+ },
190
+ {
191
+ "type": "rect",
192
+ "width": 1,
193
+ "center": {
194
+ "x": 2.15,
195
+ "y": 0
196
+ },
197
+ "height": 0.6,
198
+ "layers": ["top"],
199
+ "connectedTo": [
200
+ "pcb_smtpad_7",
201
+ "connectivity_net18",
202
+ "source_trace_7",
203
+ "source_port_14",
204
+ "source_port_7",
205
+ "pcb_smtpad_7",
206
+ "pcb_port_7",
207
+ "pcb_smtpad_14",
208
+ "pcb_port_14"
209
+ ],
210
+ "zLayers": [0]
211
+ },
212
+ {
213
+ "type": "rect",
214
+ "width": 1,
215
+ "center": {
216
+ "x": 2.15,
217
+ "y": 1.27
218
+ },
219
+ "height": 0.6,
220
+ "layers": ["top"],
221
+ "connectedTo": [
222
+ "pcb_smtpad_8",
223
+ "connectivity_net31",
224
+ "source_trace_12",
225
+ "source_port_19",
226
+ "source_port_8",
227
+ "pcb_smtpad_8",
228
+ "pcb_port_8",
229
+ "pcb_smtpad_19",
230
+ "pcb_port_19"
231
+ ],
232
+ "zLayers": [0]
233
+ },
234
+ {
235
+ "type": "rect",
236
+ "width": 1,
237
+ "center": {
238
+ "x": 2.15,
239
+ "y": 2.54
240
+ },
241
+ "height": 0.6,
242
+ "layers": ["top"],
243
+ "connectedTo": [
244
+ "pcb_smtpad_9",
245
+ "connectivity_net28",
246
+ "source_trace_11",
247
+ "source_port_18",
248
+ "source_port_9",
249
+ "pcb_smtpad_9",
250
+ "pcb_port_9",
251
+ "pcb_smtpad_18",
252
+ "pcb_port_18"
253
+ ],
254
+ "zLayers": [0]
255
+ },
256
+ {
257
+ "type": "rect",
258
+ "width": 0.54,
259
+ "center": {
260
+ "x": -2.1500000000000004,
261
+ "y": 4.16
262
+ },
263
+ "height": 0.64,
264
+ "layers": ["top"],
265
+ "connectedTo": [
266
+ "pcb_smtpad_10",
267
+ "connectivity_net8",
268
+ "source_trace_3",
269
+ "source_port_10",
270
+ "source_port_0",
271
+ "pcb_smtpad_0",
272
+ "pcb_port_0",
273
+ "pcb_smtpad_10",
274
+ "pcb_port_10"
275
+ ],
276
+ "zLayers": [0]
277
+ },
278
+ {
279
+ "type": "rect",
280
+ "width": 0.54,
281
+ "center": {
282
+ "x": -1.1300000000000006,
283
+ "y": 4.16
284
+ },
285
+ "height": 0.64,
286
+ "layers": ["top"],
287
+ "connectedTo": [
288
+ "pcb_smtpad_11",
289
+ "connectivity_net26",
290
+ "source_trace_10",
291
+ "source_port_17",
292
+ "source_trace_6",
293
+ "source_port_13",
294
+ "source_trace_4",
295
+ "source_port_11",
296
+ "source_trace_2",
297
+ "source_port_3",
298
+ "source_trace_0",
299
+ "source_port_1",
300
+ "source_net_0",
301
+ "pcb_smtpad_1",
302
+ "pcb_port_1",
303
+ "pcb_smtpad_3",
304
+ "pcb_port_3",
305
+ "pcb_smtpad_11",
306
+ "pcb_port_11",
307
+ "pcb_smtpad_13",
308
+ "pcb_port_13",
309
+ "pcb_smtpad_17",
310
+ "pcb_port_17"
311
+ ],
312
+ "zLayers": [0]
313
+ },
314
+ {
315
+ "type": "rect",
316
+ "width": 0.64,
317
+ "center": {
318
+ "x": 3.97,
319
+ "y": -3.2861261293105146
320
+ },
321
+ "height": 0.54,
322
+ "layers": ["top"],
323
+ "connectedTo": [
324
+ "pcb_smtpad_12",
325
+ "connectivity_net13",
326
+ "source_trace_5",
327
+ "source_port_12",
328
+ "source_port_5",
329
+ "pcb_smtpad_5",
330
+ "pcb_port_5",
331
+ "pcb_smtpad_12",
332
+ "pcb_port_12"
333
+ ],
334
+ "zLayers": [0]
335
+ },
336
+ {
337
+ "type": "rect",
338
+ "width": 0.64,
339
+ "center": {
340
+ "x": 3.97,
341
+ "y": -4.306126129310514
342
+ },
343
+ "height": 0.54,
344
+ "layers": ["top"],
345
+ "connectedTo": [
346
+ "pcb_smtpad_13",
347
+ "connectivity_net26",
348
+ "source_trace_10",
349
+ "source_port_17",
350
+ "source_trace_6",
351
+ "source_port_13",
352
+ "source_trace_4",
353
+ "source_port_11",
354
+ "source_trace_2",
355
+ "source_port_3",
356
+ "source_trace_0",
357
+ "source_port_1",
358
+ "source_net_0",
359
+ "pcb_smtpad_1",
360
+ "pcb_port_1",
361
+ "pcb_smtpad_3",
362
+ "pcb_port_3",
363
+ "pcb_smtpad_11",
364
+ "pcb_port_11",
365
+ "pcb_smtpad_13",
366
+ "pcb_port_13",
367
+ "pcb_smtpad_17",
368
+ "pcb_port_17"
369
+ ],
370
+ "zLayers": [0]
371
+ },
372
+ {
373
+ "type": "rect",
374
+ "width": 1,
375
+ "center": {
376
+ "x": 4.15,
377
+ "y": 0.8238738706894861
378
+ },
379
+ "height": 0.6,
380
+ "layers": ["top"],
381
+ "connectedTo": [
382
+ "pcb_smtpad_14",
383
+ "connectivity_net18",
384
+ "source_trace_7",
385
+ "source_port_14",
386
+ "source_port_7",
387
+ "pcb_smtpad_7",
388
+ "pcb_port_7",
389
+ "pcb_smtpad_14",
390
+ "pcb_port_14"
391
+ ],
392
+ "zLayers": [0]
393
+ },
394
+ {
395
+ "type": "rect",
396
+ "width": 1,
397
+ "center": {
398
+ "x": 4.15,
399
+ "y": -0.4461261293105139
400
+ },
401
+ "height": 0.6,
402
+ "layers": ["top"],
403
+ "connectedTo": [
404
+ "pcb_smtpad_15",
405
+ "connectivity_net21",
406
+ "source_trace_8",
407
+ "source_port_15",
408
+ "source_port_6",
409
+ "pcb_smtpad_6",
410
+ "pcb_port_6",
411
+ "pcb_smtpad_15",
412
+ "pcb_port_15"
413
+ ],
414
+ "zLayers": [0]
415
+ },
416
+ {
417
+ "type": "rect",
418
+ "width": 1,
419
+ "center": {
420
+ "x": 4.15,
421
+ "y": -1.716126129310514
422
+ },
423
+ "height": 0.6,
424
+ "layers": ["top"],
425
+ "connectedTo": [
426
+ "pcb_smtpad_16",
427
+ "connectivity_net24",
428
+ "source_trace_9",
429
+ "source_port_16",
430
+ "source_trace_1",
431
+ "source_port_2",
432
+ "source_net_1",
433
+ "pcb_smtpad_2",
434
+ "pcb_port_2",
435
+ "pcb_smtpad_16",
436
+ "pcb_port_16"
437
+ ],
438
+ "zLayers": [0]
439
+ },
440
+ {
441
+ "type": "rect",
442
+ "width": 1,
443
+ "center": {
444
+ "x": 8.45,
445
+ "y": -1.716126129310514
446
+ },
447
+ "height": 0.6,
448
+ "layers": ["top"],
449
+ "connectedTo": [
450
+ "pcb_smtpad_17",
451
+ "connectivity_net26",
452
+ "source_trace_10",
453
+ "source_port_17",
454
+ "source_trace_6",
455
+ "source_port_13",
456
+ "source_trace_4",
457
+ "source_port_11",
458
+ "source_trace_2",
459
+ "source_port_3",
460
+ "source_trace_0",
461
+ "source_port_1",
462
+ "source_net_0",
463
+ "pcb_smtpad_1",
464
+ "pcb_port_1",
465
+ "pcb_smtpad_3",
466
+ "pcb_port_3",
467
+ "pcb_smtpad_11",
468
+ "pcb_port_11",
469
+ "pcb_smtpad_13",
470
+ "pcb_port_13",
471
+ "pcb_smtpad_17",
472
+ "pcb_port_17"
473
+ ],
474
+ "zLayers": [0]
475
+ },
476
+ {
477
+ "type": "rect",
478
+ "width": 1,
479
+ "center": {
480
+ "x": 8.45,
481
+ "y": -0.4461261293105139
482
+ },
483
+ "height": 0.6,
484
+ "layers": ["top"],
485
+ "connectedTo": [
486
+ "pcb_smtpad_18",
487
+ "connectivity_net28",
488
+ "source_trace_11",
489
+ "source_port_18",
490
+ "source_port_9",
491
+ "pcb_smtpad_9",
492
+ "pcb_port_9",
493
+ "pcb_smtpad_18",
494
+ "pcb_port_18"
495
+ ],
496
+ "zLayers": [0]
497
+ },
498
+ {
499
+ "type": "rect",
500
+ "width": 1,
501
+ "center": {
502
+ "x": 8.45,
503
+ "y": 0.8238738706894861
504
+ },
505
+ "height": 0.6,
506
+ "layers": ["top"],
507
+ "connectedTo": [
508
+ "pcb_smtpad_19",
509
+ "connectivity_net31",
510
+ "source_trace_12",
511
+ "source_port_19",
512
+ "source_port_8",
513
+ "pcb_smtpad_8",
514
+ "pcb_port_8",
515
+ "pcb_smtpad_19",
516
+ "pcb_port_19"
517
+ ],
518
+ "zLayers": [0]
519
+ },
520
+ {
521
+ "type": "rect",
522
+ "width": 20,
523
+ "center": {
524
+ "x": 0,
525
+ "y": 0
526
+ },
527
+ "height": 10,
528
+ "layers": ["bottom"],
529
+ "connectedTo": [
530
+ "source_net_0",
531
+ "unnamedsubcircuit760_connectivity_net0",
532
+ "connectivity_net26",
533
+ "source_trace_10",
534
+ "source_port_17",
535
+ "source_trace_6",
536
+ "source_port_13",
537
+ "source_trace_4",
538
+ "source_port_11",
539
+ "source_trace_2",
540
+ "source_port_3",
541
+ "source_trace_0",
542
+ "source_port_1",
543
+ "source_net_0",
544
+ "pcb_smtpad_1",
545
+ "pcb_port_1",
546
+ "pcb_smtpad_3",
547
+ "pcb_port_3",
548
+ "pcb_smtpad_11",
549
+ "pcb_port_11",
550
+ "pcb_smtpad_13",
551
+ "pcb_port_13",
552
+ "pcb_smtpad_17",
553
+ "pcb_port_17"
554
+ ],
555
+ "isCopperPour": true,
556
+ "zLayers": [3]
557
+ },
558
+ {
559
+ "type": "rect",
560
+ "width": 20,
561
+ "center": {
562
+ "x": 0,
563
+ "y": 0
564
+ },
565
+ "height": 10,
566
+ "layers": ["inner2"],
567
+ "connectedTo": [
568
+ "source_net_1",
569
+ "unnamedsubcircuit760_connectivity_net1",
570
+ "connectivity_net24",
571
+ "source_trace_9",
572
+ "source_port_16",
573
+ "source_trace_1",
574
+ "source_port_2",
575
+ "source_net_1",
576
+ "pcb_smtpad_2",
577
+ "pcb_port_2",
578
+ "pcb_smtpad_16",
579
+ "pcb_port_16"
580
+ ],
581
+ "isCopperPour": true,
582
+ "zLayers": [2]
583
+ },
584
+ {
585
+ "obstacleId": "escape-via-obstacle:escape-via:source_trace_9:pcb_port_16:inner2:0",
586
+ "type": "rect",
587
+ "layers": ["top", "inner1", "inner2"],
588
+ "zLayers": [0, 1, 2],
589
+ "center": {
590
+ "x": 3.3500000000000005,
591
+ "y": -1.716126129310514
592
+ },
593
+ "width": 0.3,
594
+ "height": 0.3,
595
+ "connectedTo": ["source_trace_9"]
596
+ },
597
+ {
598
+ "obstacleId": "escape-via-obstacle:escape-via:source_net_1:pcb_port_2:inner2:2",
599
+ "type": "rect",
600
+ "layers": ["top", "inner1", "inner2"],
601
+ "zLayers": [0, 1, 2],
602
+ "center": {
603
+ "x": -1.3499999999999999,
604
+ "y": 0
605
+ },
606
+ "width": 0.3,
607
+ "height": 0.3,
608
+ "connectedTo": ["source_net_1"]
609
+ },
610
+ {
611
+ "obstacleId": "escape-via-obstacle:escape-via:source_net_0:pcb_port_11:bottom:3",
612
+ "type": "rect",
613
+ "layers": ["top", "inner1", "inner2", "bottom"],
614
+ "zLayers": [0, 1, 2, 3],
615
+ "center": {
616
+ "x": -0.5600000000000005,
617
+ "y": 4.16
618
+ },
619
+ "width": 0.3,
620
+ "height": 0.3,
621
+ "connectedTo": ["source_net_0"]
622
+ },
623
+ {
624
+ "obstacleId": "escape-via-obstacle:escape-via:source_net_0:pcb_port_13:bottom:4",
625
+ "type": "rect",
626
+ "layers": ["top", "inner1", "inner2", "bottom"],
627
+ "zLayers": [0, 1, 2, 3],
628
+ "center": {
629
+ "x": 3.3500000000000005,
630
+ "y": -4.306126129310514
631
+ },
632
+ "width": 0.3,
633
+ "height": 0.3,
634
+ "connectedTo": ["source_net_0"]
635
+ },
636
+ {
637
+ "obstacleId": "escape-via-obstacle:escape-via:source_net_0:pcb_port_1:bottom:6",
638
+ "type": "rect",
639
+ "layers": ["top", "inner1", "inner2", "bottom"],
640
+ "zLayers": [0, 1, 2, 3],
641
+ "center": {
642
+ "x": -1.3499999999999999,
643
+ "y": 1.27
644
+ },
645
+ "width": 0.3,
646
+ "height": 0.3,
647
+ "connectedTo": ["source_net_0"]
648
+ },
649
+ {
650
+ "obstacleId": "escape-via-obstacle:escape-via:source_net_0:pcb_port_3:bottom:8",
651
+ "type": "rect",
652
+ "layers": ["top", "inner1", "inner2", "bottom"],
653
+ "zLayers": [0, 1, 2, 3],
654
+ "center": {
655
+ "x": -1.3499999999999999,
656
+ "y": -1.27
657
+ },
658
+ "width": 0.3,
659
+ "height": 0.3,
660
+ "connectedTo": ["source_net_0"]
661
+ },
662
+ {
663
+ "obstacleId": "escape-via-obstacle:escape-via:source_net_0:pcb_port_17:bottom:9",
664
+ "type": "rect",
665
+ "layers": ["top", "inner1", "inner2", "bottom"],
666
+ "zLayers": [0, 1, 2, 3],
667
+ "center": {
668
+ "x": 7.6499999999999995,
669
+ "y": -1.716126129310514
670
+ },
671
+ "width": 0.3,
672
+ "height": 0.3,
673
+ "connectedTo": ["source_net_0"]
674
+ }
675
+ ],
676
+ "layerCount": 4,
677
+ "connections": [
678
+ {
679
+ "pointsToConnect": [
680
+ {
681
+ "x": -1.1300000000000006,
682
+ "y": 4.16,
683
+ "layer": "top",
684
+ "pointId": "pcb_port_11",
685
+ "pcb_port_id": "pcb_port_11"
686
+ },
687
+ {
688
+ "x": -0.5600000000000005,
689
+ "y": 4.16,
690
+ "layer": "top",
691
+ "pointId": "escape-via:source_net_0:pcb_port_11:bottom:3",
692
+ "terminalVia": {
693
+ "toLayer": "bottom",
694
+ "viaDiameter": 0.3
695
+ }
696
+ }
697
+ ],
698
+ "name": "source_net_0_mst0",
699
+ "rootConnectionName": "source_net_0"
700
+ },
701
+ {
702
+ "pointsToConnect": [
703
+ {
704
+ "x": 3.3500000000000005,
705
+ "y": -4.306126129310514,
706
+ "layer": "top",
707
+ "pointId": "escape-via:source_net_0:pcb_port_13:bottom:4",
708
+ "terminalVia": {
709
+ "toLayer": "bottom",
710
+ "viaDiameter": 0.3
711
+ }
712
+ },
713
+ {
714
+ "x": 3.97,
715
+ "y": -4.306126129310514,
716
+ "layer": "top",
717
+ "pointId": "pcb_port_13",
718
+ "pcb_port_id": "pcb_port_13"
719
+ }
720
+ ],
721
+ "name": "source_net_0_mst1",
722
+ "rootConnectionName": "source_net_0"
723
+ },
724
+ {
725
+ "pointsToConnect": [
726
+ {
727
+ "x": 7.6499999999999995,
728
+ "y": -1.716126129310514,
729
+ "layer": "top",
730
+ "pointId": "escape-via:source_net_0:pcb_port_17:bottom:9",
731
+ "terminalVia": {
732
+ "toLayer": "bottom",
733
+ "viaDiameter": 0.3
734
+ }
735
+ },
736
+ {
737
+ "x": 8.45,
738
+ "y": -1.716126129310514,
739
+ "layer": "top",
740
+ "pointId": "pcb_port_17",
741
+ "pcb_port_id": "pcb_port_17"
742
+ }
743
+ ],
744
+ "name": "source_net_0_mst2",
745
+ "rootConnectionName": "source_net_0"
746
+ },
747
+ {
748
+ "pointsToConnect": [
749
+ {
750
+ "x": -2.15,
751
+ "y": 1.27,
752
+ "layer": "top",
753
+ "pointId": "pcb_port_1",
754
+ "pcb_port_id": "pcb_port_1"
755
+ },
756
+ {
757
+ "x": -1.3499999999999999,
758
+ "y": 1.27,
759
+ "layer": "top",
760
+ "pointId": "escape-via:source_net_0:pcb_port_1:bottom:6",
761
+ "terminalVia": {
762
+ "toLayer": "bottom",
763
+ "viaDiameter": 0.3
764
+ }
765
+ }
766
+ ],
767
+ "name": "source_net_0_mst3",
768
+ "rootConnectionName": "source_net_0"
769
+ },
770
+ {
771
+ "pointsToConnect": [
772
+ {
773
+ "x": -2.15,
774
+ "y": -1.27,
775
+ "layer": "top",
776
+ "pointId": "pcb_port_3",
777
+ "pcb_port_id": "pcb_port_3"
778
+ },
779
+ {
780
+ "x": -1.3499999999999999,
781
+ "y": -1.27,
782
+ "layer": "top",
783
+ "pointId": "escape-via:source_net_0:pcb_port_3:bottom:8",
784
+ "terminalVia": {
785
+ "toLayer": "bottom",
786
+ "viaDiameter": 0.3
787
+ }
788
+ }
789
+ ],
790
+ "name": "source_net_0_mst4",
791
+ "rootConnectionName": "source_net_0"
792
+ },
793
+ {
794
+ "name": "source_trace_12",
795
+ "pointsToConnect": [
796
+ {
797
+ "x": 8.45,
798
+ "y": 0.8238738706894861,
799
+ "layer": "top",
800
+ "pointId": "pcb_port_19",
801
+ "pcb_port_id": "pcb_port_19"
802
+ },
803
+ {
804
+ "x": 2.15,
805
+ "y": 1.27,
806
+ "layer": "top",
807
+ "pointId": "pcb_port_8",
808
+ "pcb_port_id": "pcb_port_8"
809
+ }
810
+ ],
811
+ "source_trace_id": "source_trace_12",
812
+ "rootConnectionName": "source_trace_12"
813
+ },
814
+ {
815
+ "name": "source_trace_11",
816
+ "pointsToConnect": [
817
+ {
818
+ "x": 8.45,
819
+ "y": -0.4461261293105139,
820
+ "layer": "top",
821
+ "pointId": "pcb_port_18",
822
+ "pcb_port_id": "pcb_port_18"
823
+ },
824
+ {
825
+ "x": 2.15,
826
+ "y": 2.54,
827
+ "layer": "top",
828
+ "pointId": "pcb_port_9",
829
+ "pcb_port_id": "pcb_port_9"
830
+ }
831
+ ],
832
+ "source_trace_id": "source_trace_11",
833
+ "rootConnectionName": "source_trace_11"
834
+ },
835
+ {
836
+ "pointsToConnect": [
837
+ {
838
+ "x": 3.3500000000000005,
839
+ "y": -1.716126129310514,
840
+ "layer": "top",
841
+ "pointId": "escape-via:source_trace_9:pcb_port_16:inner2:0",
842
+ "terminalVia": {
843
+ "toLayer": "inner2",
844
+ "viaDiameter": 0.3
845
+ }
846
+ },
847
+ {
848
+ "x": 4.15,
849
+ "y": -1.716126129310514,
850
+ "layer": "top",
851
+ "pointId": "pcb_port_16",
852
+ "pcb_port_id": "pcb_port_16"
853
+ }
854
+ ],
855
+ "name": "source_trace_9__source_net_1_mst0",
856
+ "rootConnectionName": "source_trace_9__source_net_1",
857
+ "mergedConnectionNames": {
858
+ "$ref": "$.simpleRouteJson.connections[8].mergedConnectionNames"
859
+ }
860
+ },
861
+ {
862
+ "pointsToConnect": [
863
+ {
864
+ "x": -2.15,
865
+ "y": 0,
866
+ "layer": "top",
867
+ "pointId": "pcb_port_2",
868
+ "pcb_port_id": "pcb_port_2"
869
+ },
870
+ {
871
+ "x": -1.3499999999999999,
872
+ "y": 0,
873
+ "layer": "top",
874
+ "pointId": "escape-via:source_net_1:pcb_port_2:inner2:2",
875
+ "terminalVia": {
876
+ "toLayer": "inner2",
877
+ "viaDiameter": 0.3
878
+ }
879
+ }
880
+ ],
881
+ "name": "source_trace_9__source_net_1_mst1",
882
+ "rootConnectionName": "source_trace_9__source_net_1",
883
+ "mergedConnectionNames": ["source_trace_9", "source_net_1"]
884
+ },
885
+ {
886
+ "name": "source_trace_8",
887
+ "pointsToConnect": [
888
+ {
889
+ "x": 4.15,
890
+ "y": -0.4461261293105139,
891
+ "layer": "top",
892
+ "pointId": "pcb_port_15",
893
+ "pcb_port_id": "pcb_port_15"
894
+ },
895
+ {
896
+ "x": 2.15,
897
+ "y": -1.27,
898
+ "layer": "top",
899
+ "pointId": "pcb_port_6",
900
+ "pcb_port_id": "pcb_port_6"
901
+ }
902
+ ],
903
+ "source_trace_id": "source_trace_8",
904
+ "rootConnectionName": "source_trace_8"
905
+ },
906
+ {
907
+ "name": "source_trace_7",
908
+ "pointsToConnect": [
909
+ {
910
+ "x": 4.15,
911
+ "y": 0.8238738706894861,
912
+ "layer": "top",
913
+ "pointId": "pcb_port_14",
914
+ "pcb_port_id": "pcb_port_14"
915
+ },
916
+ {
917
+ "x": 2.15,
918
+ "y": 0,
919
+ "layer": "top",
920
+ "pointId": "pcb_port_7",
921
+ "pcb_port_id": "pcb_port_7"
922
+ }
923
+ ],
924
+ "source_trace_id": "source_trace_7",
925
+ "rootConnectionName": "source_trace_7"
926
+ },
927
+ {
928
+ "name": "source_trace_5",
929
+ "pointsToConnect": [
930
+ {
931
+ "x": 3.97,
932
+ "y": -3.2861261293105146,
933
+ "layer": "top",
934
+ "pointId": "pcb_port_12",
935
+ "pcb_port_id": "pcb_port_12"
936
+ },
937
+ {
938
+ "x": 2.15,
939
+ "y": -2.54,
940
+ "layer": "top",
941
+ "pointId": "pcb_port_5",
942
+ "pcb_port_id": "pcb_port_5"
943
+ }
944
+ ],
945
+ "source_trace_id": "source_trace_5",
946
+ "rootConnectionName": "source_trace_5"
947
+ },
948
+ {
949
+ "name": "source_trace_3",
950
+ "pointsToConnect": [
951
+ {
952
+ "x": -2.1500000000000004,
953
+ "y": 4.16,
954
+ "layer": "top",
955
+ "pointId": "pcb_port_10",
956
+ "pcb_port_id": "pcb_port_10"
957
+ },
958
+ {
959
+ "x": -2.15,
960
+ "y": 2.54,
961
+ "layer": "top",
962
+ "pointId": "pcb_port_0",
963
+ "pcb_port_id": "pcb_port_0"
964
+ }
965
+ ],
966
+ "source_trace_id": "source_trace_3",
967
+ "rootConnectionName": "source_trace_3"
968
+ }
969
+ ],
970
+ "minTraceWidth": 0.15
971
+ }
972
+ }