@tscircuit/3d-viewer 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.
@@ -0,0 +1,1301 @@
1
+ ## Source
2
+
3
+ ### `source_component_base`
4
+
5
+ ```json
6
+ {
7
+ "type": "source_component",
8
+ "ftype": "consectetur",
9
+ "source_component_id": "source_component_1",
10
+ "name": "C1",
11
+ "supplier_part_numbers": {
12
+ "voluptate_b5": ["cillum ad qui aute"],
13
+ "dolor__": [
14
+ "Excepteur Lorem",
15
+ "voluptate minim ut ea",
16
+ "Excepteur veniam esse officia sit",
17
+ "ut ipsum voluptate"
18
+ ],
19
+ "qui_1": [
20
+ "do eu",
21
+ "sint incididunt aute labore",
22
+ "pariatur labore",
23
+ "labore"
24
+ ]
25
+ }
26
+ }
27
+ ```
28
+
29
+ | Property | Type | Required | Description |
30
+ | --------------------- | ------ | -------- | ----------- |
31
+ | type | string | Yes | |
32
+ | ftype | string | No | |
33
+ | source_component_id | string | Yes | |
34
+ | name | string | Yes | |
35
+ | supplier_part_numbers | object | No | |
36
+
37
+ ### `source_group`
38
+
39
+ ```json
40
+ {
41
+ "type": "source_group",
42
+ "source_group_id": "source_group_1",
43
+ "name": "G1"
44
+ }
45
+ ```
46
+
47
+ | Property | Type | Required | Description |
48
+ | --------------- | ------ | -------- | ----------- |
49
+ | type | string | Yes | |
50
+ | source_group_id | string | Yes | |
51
+ | name | string | No | |
52
+
53
+ ### `source_led`
54
+
55
+ ```json
56
+ {
57
+ "type": "source_component",
58
+ "ftype": "led",
59
+ "source_component_id": "source_component_1",
60
+ "name": "L1",
61
+ "supplier_part_numbers": {
62
+ "pariaturcd9": ["amet est do nostrud"],
63
+ "culpa_ce": ["dolore reprehenderit ex Excepteur do", "ipsum in nulla anim"],
64
+ "exercitationc_6": [
65
+ "elit reprehenderit laborum laboris",
66
+ "non aliquip",
67
+ "minim",
68
+ "reprehenderit sint occaecat pariatur",
69
+ "exercitation ea"
70
+ ]
71
+ }
72
+ }
73
+ ```
74
+
75
+ | Property | Type | Required | Description |
76
+ | --------------------- | ------ | -------- | ----------- |
77
+ | type | string | Yes | |
78
+ | ftype | string | Yes | |
79
+ | source_component_id | string | Yes | |
80
+ | name | string | Yes | |
81
+ | supplier_part_numbers | object | No | |
82
+
83
+ ### `source_net`
84
+
85
+ ```json
86
+ {
87
+ "type": "source_net",
88
+ "source_net_id": "source_net_1",
89
+ "name": "N1",
90
+ "member_source_group_ids": [
91
+ "laborum minim",
92
+ "Duis culpa et esse",
93
+ "aliquip labore"
94
+ ],
95
+ "is_power": true,
96
+ "is_ground": false,
97
+ "is_digital_signal": true,
98
+ "is_analog_signal": true
99
+ }
100
+ ```
101
+
102
+ | Property | Type | Required | Description |
103
+ | ----------------------- | ------- | -------- | ----------- |
104
+ | type | string | Yes | |
105
+ | source_net_id | string | Yes | |
106
+ | name | string | Yes | |
107
+ | member_source_group_ids | array | Yes | |
108
+ | is_power | boolean | No | |
109
+ | is_ground | boolean | No | |
110
+ | is_digital_signal | boolean | No | |
111
+ | is_analog_signal | boolean | No | |
112
+
113
+ ### `source_port`
114
+
115
+ ```json
116
+ {
117
+ "type": "source_port",
118
+ "pin_number": 54740263.182806104,
119
+ "port_hints": ["1", "left"],
120
+ "name": "P1",
121
+ "source_port_id": "source_port_1",
122
+ "source_component_id": "source_component_1"
123
+ }
124
+ ```
125
+
126
+ | Property | Type | Required | Description |
127
+ | ------------------- | ------ | -------- | ----------- |
128
+ | type | string | Yes | |
129
+ | pin_number | number | No | |
130
+ | port_hints | array | No | |
131
+ | name | string | Yes | |
132
+ | source_port_id | string | Yes | |
133
+ | source_component_id | string | Yes | |
134
+
135
+ ### `source_simple_bug`
136
+
137
+ ```json
138
+ {
139
+ "type": "source_component",
140
+ "ftype": "simple_bug",
141
+ "source_component_id": "source_component_1",
142
+ "name": "B1",
143
+ "supplier_part_numbers": {
144
+ "elit_21": ["amet nostrud officia Lorem Excepteur", "amet"]
145
+ }
146
+ }
147
+ ```
148
+
149
+ | Property | Type | Required | Description |
150
+ | --------------------- | ------ | -------- | ----------- |
151
+ | type | string | Yes | |
152
+ | ftype | string | Yes | |
153
+ | source_component_id | string | Yes | |
154
+ | name | string | Yes | |
155
+ | supplier_part_numbers | object | No | |
156
+
157
+ ### `source_simple_capacitor`
158
+
159
+ ```json
160
+ {
161
+ "type": "source_component",
162
+ "ftype": "simple_capacitor",
163
+ "source_component_id": "source_component_1",
164
+ "name": "C1",
165
+ "capacitance": "1uF"
166
+ }
167
+ ```
168
+
169
+ | Property | Type | Required | Description |
170
+ | --------------------- | -------------- | -------- | ----------- |
171
+ | type | string | Yes | |
172
+ | ftype | string | Yes | |
173
+ | source_component_id | string | Yes | |
174
+ | name | string | Yes | |
175
+ | supplier_part_numbers | object | No | |
176
+ | capacitance | string, number | Yes | |
177
+
178
+ ### `source_simple_diode`
179
+
180
+ ```json
181
+ {
182
+ "type": "source_component",
183
+ "ftype": "simple_diode",
184
+ "source_component_id": "source_component_1",
185
+ "name": "D1",
186
+ "supplier_part_numbers": {
187
+ "Ut9": [
188
+ "pariatur quis magna non",
189
+ "ut ut",
190
+ "dolor aliquip reprehenderit deserunt enim"
191
+ ],
192
+ "adipisicing2": [
193
+ "aliquip exercitation veniam",
194
+ "Ut exercitation ullamco nulla ex"
195
+ ]
196
+ }
197
+ }
198
+ ```
199
+
200
+ | Property | Type | Required | Description |
201
+ | --------------------- | ------ | -------- | ----------- |
202
+ | type | string | Yes | |
203
+ | ftype | string | Yes | |
204
+ | source_component_id | string | Yes | |
205
+ | name | string | Yes | |
206
+ | supplier_part_numbers | object | No | |
207
+
208
+ ### `source_simple_ground`
209
+
210
+ ```json
211
+ {
212
+ "type": "source_component",
213
+ "ftype": "simple_ground",
214
+ "source_component_id": "source_component_1",
215
+ "name": "G1",
216
+ "supplier_part_numbers": {
217
+ "quis69": [
218
+ "elit et sit culpa",
219
+ "dolor amet consequat reprehenderit dolore",
220
+ "Duis deserunt"
221
+ ],
222
+ "adipisicing_5c": [
223
+ "cillum pariatur deserunt aute est",
224
+ "aliqua sit ipsum est quis",
225
+ "deserunt sit cupidatat"
226
+ ],
227
+ "eu_41": [
228
+ "ex ipsum incididunt esse in",
229
+ "aliquip nostrud esse",
230
+ "incididunt",
231
+ "esse est ipsum aute",
232
+ "ut dolore fugiat in anim"
233
+ ]
234
+ }
235
+ }
236
+ ```
237
+
238
+ | Property | Type | Required | Description |
239
+ | --------------------- | ------ | -------- | ----------- |
240
+ | type | string | Yes | |
241
+ | ftype | string | Yes | |
242
+ | source_component_id | string | Yes | |
243
+ | name | string | Yes | |
244
+ | supplier_part_numbers | object | No | |
245
+
246
+ ### `source_simple_power_source`
247
+
248
+ ```json
249
+ {
250
+ "type": "source_component",
251
+ "ftype": "simple_power_source",
252
+ "source_component_id": "source_component_1",
253
+ "name": "P1",
254
+ "supplier_part_numbers": {
255
+ "irure5": ["dolore Ut Excepteur adipisicing"],
256
+ "irure6f2": ["proident", "id sit qui laboris in", "dolor", "ex"],
257
+ "non_9": [
258
+ "esse",
259
+ "reprehenderit occaecat",
260
+ "cupidatat proident consectetur do sed"
261
+ ],
262
+ "Excepteur__": ["ea in pariatur", "ex"]
263
+ },
264
+ "voltage": "5V"
265
+ }
266
+ ```
267
+
268
+ | Property | Type | Required | Description |
269
+ | --------------------- | -------------- | -------- | ----------- |
270
+ | type | string | Yes | |
271
+ | ftype | string | Yes | |
272
+ | source_component_id | string | Yes | |
273
+ | name | string | Yes | |
274
+ | supplier_part_numbers | object | No | |
275
+ | voltage | string, number | Yes | |
276
+
277
+ ### `source_simple_resistor`
278
+
279
+ ```json
280
+ {
281
+ "type": "source_component",
282
+ "ftype": "simple_resistor",
283
+ "source_component_id": "source_component_1",
284
+ "name": "R1",
285
+ "supplier_part_numbers": {
286
+ "velit53": ["esse eu consequat"]
287
+ },
288
+ "resistance": "1k"
289
+ }
290
+ ```
291
+
292
+ | Property | Type | Required | Description |
293
+ | --------------------- | -------------- | -------- | ----------- |
294
+ | type | string | Yes | |
295
+ | ftype | string | Yes | |
296
+ | source_component_id | string | Yes | |
297
+ | name | string | Yes | |
298
+ | supplier_part_numbers | object | No | |
299
+ | resistance | string, number | Yes | |
300
+
301
+ ### `source_trace`
302
+
303
+ ```json
304
+ {
305
+ "type": "source_trace",
306
+ "source_trace_id": "source_trace_1",
307
+ "connected_source_port_ids": [
308
+ "incididunt ad dolore qui",
309
+ "elit pariatur dolor est labore"
310
+ ],
311
+ "connected_source_net_ids": [
312
+ "tempor eiusmod do laboris id",
313
+ "ipsum ut ad",
314
+ "cillum eiusmod pariatur enim",
315
+ "proident"
316
+ ]
317
+ }
318
+ ```
319
+
320
+ | Property | Type | Required | Description |
321
+ | ------------------------- | ------ | -------- | ----------- |
322
+ | type | string | Yes | |
323
+ | source_trace_id | string | Yes | |
324
+ | connected_source_port_ids | array | Yes | |
325
+ | connected_source_net_ids | array | Yes | |
326
+
327
+ ## Schematic
328
+
329
+ ### `schematic_box`
330
+
331
+ Draws a box on the schematic
332
+
333
+ ```json
334
+ {
335
+ "type": "schematic_box",
336
+ "schematic_component_id": "schematic_component_1",
337
+ "width": "5mm",
338
+ "height": "5mm",
339
+ "x": "3mm",
340
+ "y": "1mm"
341
+ }
342
+ ```
343
+
344
+ | Property | Type | Required | Description |
345
+ | ---------------------- | -------------- | -------- | ----------- |
346
+ | type | string | Yes | |
347
+ | schematic_component_id | string | Yes | |
348
+ | width | string, number | Yes | |
349
+ | height | string, number | Yes | |
350
+ | x | string, number | Yes | |
351
+ | y | string, number | Yes | |
352
+
353
+ ### `schematic_component`
354
+
355
+ ```json
356
+ {
357
+ "type": "schematic_component",
358
+ "rotation": "90deg",
359
+ "size": {
360
+ "width": "5mm",
361
+ "height": "5mm"
362
+ },
363
+ "center": {
364
+ "x": "3mm",
365
+ "y": "1mm"
366
+ },
367
+ "source_component_id": "source_component_1",
368
+ "schematic_component_id": "schematic_component_1",
369
+ "pin_spacing": -24166877.58031033,
370
+ "box_width": -67498217.8392372,
371
+ "port_arrangement": {
372
+ "left_size": 3,
373
+ "right_size": 3
374
+ },
375
+ "port_labels": {
376
+ "1": "VCC",
377
+ "2": "GND",
378
+ "3": "OUT"
379
+ }
380
+ }
381
+ ```
382
+
383
+ | Property | Type | Required | Description |
384
+ | ---------------------- | -------------- | -------- | ----------- |
385
+ | type | string | Yes | |
386
+ | rotation | string, number | No | |
387
+ | size | object | Yes | |
388
+ | center | object | Yes | |
389
+ | source_component_id | string | Yes | |
390
+ | schematic_component_id | string | Yes | |
391
+ | pin_spacing | undefined | No | |
392
+ | box_width | undefined | No | |
393
+ | port_arrangement | undefined | No | |
394
+ | port_labels | object | No | |
395
+
396
+ ### `schematic_error`
397
+
398
+ Defines a schematic error on the schematic
399
+
400
+ ```json
401
+ {
402
+ "schematic_error_id": "schematic_error_1",
403
+ "type": "schematic_error",
404
+ "error_type": "schematic_port_not_found",
405
+ "message": "consectetur eiusmod dolor in do"
406
+ }
407
+ ```
408
+
409
+ | Property | Type | Required | Description |
410
+ | ------------------ | ------ | -------- | ----------- |
411
+ | schematic_error_id | string | Yes | |
412
+ | type | string | Yes | |
413
+ | error_type | string | Yes | |
414
+ | message | string | Yes | |
415
+
416
+ ### `schematic_line`
417
+
418
+ ```json
419
+ {
420
+ "type": "schematic_line",
421
+ "schematic_component_id": "schematic_component_1",
422
+ "x1": "1mm",
423
+ "x2": "2mm",
424
+ "y1": "1mm",
425
+ "y2": "2mm"
426
+ }
427
+ ```
428
+
429
+ | Property | Type | Required | Description |
430
+ | ---------------------- | -------------- | -------- | ----------- |
431
+ | type | string | Yes | |
432
+ | schematic_component_id | string | Yes | |
433
+ | x1 | string, number | Yes | |
434
+ | x2 | string, number | Yes | |
435
+ | y1 | string, number | Yes | |
436
+ | y2 | string, number | Yes | |
437
+
438
+ ### `schematic_net_label`
439
+
440
+ ```json
441
+ {
442
+ "type": "schematic_net_label",
443
+ "source_net_id": "source_net_1",
444
+ "center": {
445
+ "x": "3mm",
446
+ "y": "1mm"
447
+ },
448
+ "anchor_side": "right",
449
+ "text": "Hello, World!"
450
+ }
451
+ ```
452
+
453
+ | Property | Type | Required | Description |
454
+ | ------------- | ------ | -------- | ----------- |
455
+ | type | string | Yes | |
456
+ | source_net_id | string | Yes | |
457
+ | center | object | Yes | |
458
+ | anchor_side | string | Yes | |
459
+ | text | string | Yes | |
460
+
461
+ ### `schematic_path`
462
+
463
+ ```json
464
+ {
465
+ "type": "schematic_path",
466
+ "schematic_component_id": "schematic_component_1",
467
+ "fill_color": "red",
468
+ "is_filled": true,
469
+ "points": [
470
+ {
471
+ "x": "3mm",
472
+ "y": "1mm"
473
+ },
474
+ {
475
+ "x": "3mm",
476
+ "y": "1mm"
477
+ },
478
+ {
479
+ "x": "3mm",
480
+ "y": "1mm"
481
+ },
482
+ {
483
+ "x": "3mm",
484
+ "y": "1mm"
485
+ }
486
+ ]
487
+ }
488
+ ```
489
+
490
+ | Property | Type | Required | Description |
491
+ | ---------------------- | ------- | -------- | ----------- |
492
+ | type | string | Yes | |
493
+ | schematic_component_id | string | Yes | |
494
+ | fill_color | string | No | |
495
+ | is_filled | boolean | No | |
496
+ | points | array | Yes | |
497
+
498
+ ### `schematic_port`
499
+
500
+ Defines a port on a schematic component
501
+
502
+ ```json
503
+ {
504
+ "type": "schematic_port",
505
+ "schematic_port_id": "schematic_port_1",
506
+ "source_port_id": "source_port_1",
507
+ "schematic_component_id": "schematic_component_1",
508
+ "center": {
509
+ "x": "3mm",
510
+ "y": "1mm"
511
+ },
512
+ "facing_direction": "down"
513
+ }
514
+ ```
515
+
516
+ | Property | Type | Required | Description |
517
+ | ---------------------- | ------ | -------- | ----------- |
518
+ | type | string | Yes | |
519
+ | schematic_port_id | string | Yes | |
520
+ | source_port_id | string | Yes | |
521
+ | schematic_component_id | string | No | |
522
+ | center | object | Yes | |
523
+ | facing_direction | string | No | |
524
+
525
+ ### `schematic_text`
526
+
527
+ ```json
528
+ {
529
+ "type": "schematic_text",
530
+ "schematic_component_id": "schematic_component_1",
531
+ "schematic_text_id": "schematic_text_1",
532
+ "text": "Hello, World!",
533
+ "position": {
534
+ "x": "3mm",
535
+ "y": "1mm"
536
+ },
537
+ "rotation": "90deg",
538
+ "anchor": "center"
539
+ }
540
+ ```
541
+
542
+ | Property | Type | Required | Description |
543
+ | ---------------------- | ------ | -------- | ----------- |
544
+ | type | string | Yes | |
545
+ | schematic_component_id | string | Yes | |
546
+ | schematic_text_id | string | Yes | |
547
+ | text | string | Yes | |
548
+ | position | object | Yes | |
549
+ | rotation | number | No | |
550
+ | anchor | string | No | |
551
+
552
+ ### `schematic_trace`
553
+
554
+ ```json
555
+ {
556
+ "type": "schematic_trace",
557
+ "schematic_trace_id": "schematic_trace_1",
558
+ "source_trace_id": "source_trace_1",
559
+ "edges": [
560
+ {
561
+ "from": {
562
+ "x": "3mm",
563
+ "y": "1mm"
564
+ },
565
+ "to": {
566
+ "x": "3mm",
567
+ "y": "1mm"
568
+ },
569
+ "to_schematic_port_id": "to_schematic_port_1"
570
+ }
571
+ ]
572
+ }
573
+ ```
574
+
575
+ | Property | Type | Required | Description |
576
+ | ------------------ | ------ | -------- | ----------- |
577
+ | type | string | Yes | |
578
+ | schematic_trace_id | string | Yes | |
579
+ | source_trace_id | string | Yes | |
580
+ | edges | array | Yes | |
581
+
582
+ ## Pcb
583
+
584
+ ### `pcb_board`
585
+
586
+ Defines the board outline of the PCB
587
+
588
+ ```json
589
+ {
590
+ "type": "pcb_board",
591
+ "width": "5mm",
592
+ "height": "5mm",
593
+ "center": {
594
+ "x": "3mm",
595
+ "y": "1mm"
596
+ }
597
+ }
598
+ ```
599
+
600
+ | Property | Type | Required | Description |
601
+ | -------- | -------------- | -------- | ----------- |
602
+ | type | string | Yes | |
603
+ | width | string, number | Yes | |
604
+ | height | string, number | Yes | |
605
+ | center | object | Yes | |
606
+
607
+ ### `pcb_component`
608
+
609
+ Defines a component on the PCB
610
+
611
+ ```json
612
+ {
613
+ "type": "pcb_component",
614
+ "pcb_component_id": "pcb_component_1",
615
+ "source_component_id": "source_component_1",
616
+ "center": {
617
+ "x": "3mm",
618
+ "y": "1mm"
619
+ },
620
+ "layer": "top",
621
+ "rotation": "90deg",
622
+ "width": "5mm",
623
+ "height": "5mm"
624
+ }
625
+ ```
626
+
627
+ | Property | Type | Required | Description |
628
+ | ------------------- | -------------- | -------- | ----------- |
629
+ | type | string | Yes | |
630
+ | pcb_component_id | string | Yes | |
631
+ | source_component_id | string | Yes | |
632
+ | center | object | Yes | |
633
+ | layer | undefined | Yes | |
634
+ | rotation | string, number | Yes | |
635
+ | width | undefined | Yes | |
636
+ | height | undefined | Yes | |
637
+
638
+ ### `pcb_fabrication_note_path`
639
+
640
+ Defines a fabrication path on the PCB for fabricators or assemblers
641
+
642
+ ```json
643
+ {
644
+ "type": "pcb_fabrication_note_path",
645
+ "fabrication_note_path_id": "fabrication_note_path_1",
646
+ "pcb_component_id": "pcb_component_1",
647
+ "layer": "top",
648
+ "route": [
649
+ {
650
+ "x": "3mm",
651
+ "y": "1mm"
652
+ },
653
+ {
654
+ "x": "3mm",
655
+ "y": "1mm"
656
+ }
657
+ ],
658
+ "stroke_width": "0.1mm"
659
+ }
660
+ ```
661
+
662
+ | Property | Type | Required | Description |
663
+ | ------------------------ | --------- | -------- | ----------- |
664
+ | type | string | Yes | |
665
+ | fabrication_note_path_id | string | Yes | |
666
+ | pcb_component_id | string | Yes | |
667
+ | layer | string | Yes | |
668
+ | route | array | Yes | |
669
+ | stroke_width | undefined | Yes | |
670
+
671
+ ### `pcb_fabrication_note_text`
672
+
673
+ Defines a fabrication note in text on the PCB, useful for leaving notes for assemblers or fabricators
674
+
675
+ ```json
676
+ {
677
+ "type": "pcb_fabrication_note_text",
678
+ "pcb_component_id": "pcb_component_1",
679
+ "text": "Hello, World!",
680
+ "layer": "top"
681
+ }
682
+ ```
683
+
684
+ | Property | Type | Required | Description |
685
+ | ---------------- | -------------- | -------- | ----------- |
686
+ | type | string | Yes | |
687
+ | font | string | No | |
688
+ | font_size | string, number | No | |
689
+ | pcb_component_id | string | Yes | |
690
+ | text | string | Yes | |
691
+ | layer | string | Yes | |
692
+ | anchor_position | object | No | |
693
+ | anchor_alignment | string | No | |
694
+
695
+ ### `pcb_placement_error`
696
+
697
+ Defines a placement error on the PCB
698
+
699
+ ```json
700
+ {
701
+ "pcb_error_id": "pcb_error_1",
702
+ "type": "pcb_error",
703
+ "error_type": "pcb_placement_error",
704
+ "message": "nisi incididunt sint"
705
+ }
706
+ ```
707
+
708
+ | Property | Type | Required | Description |
709
+ | ------------ | ------ | -------- | ----------- |
710
+ | pcb_error_id | string | Yes | |
711
+ | type | string | Yes | |
712
+ | error_type | string | Yes | |
713
+ | message | string | Yes | |
714
+
715
+ ### `pcb_port`
716
+
717
+ Defines a port on the PCB
718
+
719
+ ```json
720
+ {
721
+ "type": "pcb_port",
722
+ "pcb_port_id": "pcb_port_1",
723
+ "source_port_id": "source_port_1",
724
+ "pcb_component_id": "pcb_component_1",
725
+ "x": "3mm",
726
+ "y": "1mm",
727
+ "layers": ["top", "bottom"]
728
+ }
729
+ ```
730
+
731
+ | Property | Type | Required | Description |
732
+ | ---------------- | -------------- | -------- | ----------- |
733
+ | type | string | Yes | |
734
+ | pcb_port_id | string | Yes | |
735
+ | source_port_id | string | Yes | |
736
+ | pcb_component_id | string | Yes | |
737
+ | x | string, number | Yes | |
738
+ | y | string, number | Yes | |
739
+ | layers | array | Yes | |
740
+
741
+ ### `pcb_port_not_matched_error`
742
+
743
+ Defines a trace error on the PCB
744
+
745
+ ```json
746
+ {
747
+ "pcb_error_id": "pcb_error_1",
748
+ "type": "pcb_error",
749
+ "error_type": "pcb_port_not_matched_error",
750
+ "message": "aliqua dolor ea",
751
+ "pcb_component_ids": ["pcb_component_1"]
752
+ }
753
+ ```
754
+
755
+ | Property | Type | Required | Description |
756
+ | ----------------- | ------ | -------- | ----------- |
757
+ | pcb_error_id | string | Yes | |
758
+ | type | string | Yes | |
759
+ | error_type | string | Yes | |
760
+ | message | string | Yes | |
761
+ | pcb_component_ids | array | Yes | |
762
+
763
+ ### `pcb_silkscreen_circle`
764
+
765
+ Defines a silkscreen circle on the PCB
766
+
767
+ ```json
768
+ {
769
+ "type": "pcb_silkscreen_circle",
770
+ "pcb_silkscreen_circle_id": "pcb_silkscreen_circle_1",
771
+ "pcb_component_id": "pcb_component_1",
772
+ "center": {
773
+ "x": "3mm",
774
+ "y": "1mm"
775
+ },
776
+ "radius": "5mm",
777
+ "layer": "top"
778
+ }
779
+ ```
780
+
781
+ | Property | Type | Required | Description |
782
+ | ------------------------ | --------- | -------- | ----------- |
783
+ | type | string | Yes | |
784
+ | pcb_silkscreen_circle_id | string | Yes | |
785
+ | pcb_component_id | string | Yes | |
786
+ | center | object | Yes | |
787
+ | radius | undefined | Yes | |
788
+ | layer | string | Yes | |
789
+
790
+ ### `pcb_silkscreen_line`
791
+
792
+ Defines a silkscreen line on the PCB
793
+
794
+ ```json
795
+ {
796
+ "type": "pcb_silkscreen_line",
797
+ "pcb_silkscreen_line_id": "pcb_silkscreen_line_1",
798
+ "pcb_component_id": "pcb_component_1",
799
+ "stroke_width": "0.1mm",
800
+ "x1": "1mm",
801
+ "y1": "1mm",
802
+ "x2": "2mm",
803
+ "y2": "2mm",
804
+ "layer": "top"
805
+ }
806
+ ```
807
+
808
+ | Property | Type | Required | Description |
809
+ | ---------------------- | -------------- | -------- | ----------- |
810
+ | type | string | Yes | |
811
+ | pcb_silkscreen_line_id | string | Yes | |
812
+ | pcb_component_id | string | Yes | |
813
+ | stroke_width | string, number | No | |
814
+ | x1 | string, number | Yes | |
815
+ | y1 | string, number | Yes | |
816
+ | x2 | string, number | Yes | |
817
+ | y2 | string, number | Yes | |
818
+ | layer | string | Yes | |
819
+
820
+ ### `pcb_silkscreen_path`
821
+
822
+ Defines a silkscreen path on the PCB
823
+
824
+ ```json
825
+ {
826
+ "type": "pcb_silkscreen_path",
827
+ "pcb_silkscreen_path_id": "pcb_silkscreen_path_1",
828
+ "pcb_component_id": "pcb_component_1",
829
+ "layer": "top",
830
+ "route": [
831
+ {
832
+ "x": "3mm",
833
+ "y": "1mm"
834
+ },
835
+ {
836
+ "x": "3mm",
837
+ "y": "1mm"
838
+ }
839
+ ],
840
+ "stroke_width": "0.1mm"
841
+ }
842
+ ```
843
+
844
+ | Property | Type | Required | Description |
845
+ | ---------------------- | --------- | -------- | ----------- |
846
+ | type | string | Yes | |
847
+ | pcb_silkscreen_path_id | string | Yes | |
848
+ | pcb_component_id | string | Yes | |
849
+ | layer | string | Yes | |
850
+ | route | array | Yes | |
851
+ | stroke_width | undefined | Yes | |
852
+
853
+ ### `pcb_silkscreen_rect`
854
+
855
+ Defines a silkscreen rect on the PCB
856
+
857
+ ```json
858
+ {
859
+ "type": "pcb_silkscreen_rect",
860
+ "pcb_silkscreen_rect_id": "pcb_silkscreen_rect_1",
861
+ "pcb_component_id": "pcb_component_1",
862
+ "center": {
863
+ "x": "3mm",
864
+ "y": "1mm"
865
+ },
866
+ "width": "5mm",
867
+ "height": "5mm",
868
+ "layer": "top"
869
+ }
870
+ ```
871
+
872
+ | Property | Type | Required | Description |
873
+ | ---------------------- | --------- | -------- | ----------- |
874
+ | type | string | Yes | |
875
+ | pcb_silkscreen_rect_id | string | Yes | |
876
+ | pcb_component_id | string | Yes | |
877
+ | center | object | Yes | |
878
+ | width | undefined | Yes | |
879
+ | height | undefined | Yes | |
880
+ | layer | string | Yes | |
881
+
882
+ ### `pcb_silkscreen_text`
883
+
884
+ Defines silkscreen text on the PCB
885
+
886
+ ```json
887
+ {
888
+ "type": "pcb_silkscreen_text",
889
+ "font": "tscircuit2024",
890
+ "font_size": "1mm",
891
+ "pcb_component_id": "pcb_component_1",
892
+ "text": "Hello, World!",
893
+ "layer": "top",
894
+ "anchor_position": {
895
+ "x": "3mm",
896
+ "y": "1mm"
897
+ }
898
+ }
899
+ ```
900
+
901
+ | Property | Type | Required | Description |
902
+ | ---------------- | -------------- | -------- | ----------- |
903
+ | type | string | Yes | |
904
+ | font | string | No | |
905
+ | font_size | string, number | No | |
906
+ | pcb_component_id | string | Yes | |
907
+ | text | string | Yes | |
908
+ | layer | string | Yes | |
909
+ | anchor_position | object | No | |
910
+ | anchor_alignment | string | No | |
911
+
912
+ ### `pcb_text`
913
+
914
+ Defines text on the PCB
915
+
916
+ ```json
917
+ {
918
+ "type": "pcb_text",
919
+ "text": "Hello, World!",
920
+ "x": "3mm",
921
+ "y": "1mm",
922
+ "align": "bottom-left",
923
+ "width": "5mm",
924
+ "height": "5mm",
925
+ "lines": 1
926
+ }
927
+ ```
928
+
929
+ | Property | Type | Required | Description |
930
+ | -------- | -------------- | -------- | ----------- |
931
+ | type | string | Yes | |
932
+ | text | string | Yes | |
933
+ | x | string, number | Yes | |
934
+ | y | string, number | Yes | |
935
+ | align | string | Yes | |
936
+ | width | string, number | Yes | |
937
+ | height | string, number | Yes | |
938
+ | lines | number | Yes | |
939
+
940
+ ### `pcb_trace`
941
+
942
+ ```json
943
+ {
944
+ "type": "pcb_trace",
945
+ "source_trace_id": "source_trace_1",
946
+ "pcb_component_id": "pcb_component_1",
947
+ "pcb_trace_id": "pcb_trace_1",
948
+ "route": [
949
+ {
950
+ "route_type": "wire",
951
+ "x": "3mm",
952
+ "y": "1mm",
953
+ "width": "5mm",
954
+ "start_pcb_port_id": "start_pcb_port_1",
955
+ "end_pcb_port_id": "end_pcb_port_1",
956
+ "layer": "top"
957
+ }
958
+ ]
959
+ }
960
+ ```
961
+
962
+ | Property | Type | Required | Description |
963
+ | ---------------- | ------ | -------- | ----------- |
964
+ | type | string | Yes | |
965
+ | source_trace_id | string | No | |
966
+ | pcb_component_id | string | No | |
967
+ | pcb_trace_id | string | Yes | |
968
+ | route | array | Yes | |
969
+
970
+ ### `pcb_trace_error`
971
+
972
+ Defines a trace error on the PCB
973
+
974
+ ```json
975
+ {
976
+ "pcb_error_id": "pcb_error_1",
977
+ "type": "pcb_error",
978
+ "error_type": "pcb_trace_error",
979
+ "message": "ex",
980
+ "pcb_trace_id": "pcb_trace_1",
981
+ "source_trace_id": "source_trace_1",
982
+ "pcb_component_ids": ["pcb_component_1"],
983
+ "pcb_port_ids": ["pcb_port_1", "pcb_port_2"]
984
+ }
985
+ ```
986
+
987
+ | Property | Type | Required | Description |
988
+ | ----------------- | ------ | -------- | ----------- |
989
+ | pcb_error_id | string | Yes | |
990
+ | type | string | Yes | |
991
+ | error_type | string | Yes | |
992
+ | message | string | Yes | |
993
+ | pcb_trace_id | string | Yes | |
994
+ | source_trace_id | string | Yes | |
995
+ | pcb_component_ids | array | Yes | |
996
+ | pcb_port_ids | array | Yes | |
997
+
998
+ ### `pcb_trace_hint`
999
+
1000
+ A hint that can be used to generate a PCB trace
1001
+
1002
+ ```json
1003
+ {
1004
+ "pcb_trace_hint_id": "pcb_trace_hint_1",
1005
+ "type": "pcb_trace_hint",
1006
+ "pcb_port_id": "pcb_port_1",
1007
+ "pcb_component_id": "pcb_component_1",
1008
+ "route": [
1009
+ {
1010
+ "x": "3mm",
1011
+ "y": "1mm",
1012
+ "via": true,
1013
+ "to_layer": "bottom"
1014
+ },
1015
+ {
1016
+ "x": "3mm",
1017
+ "y": "1mm",
1018
+ "via": true,
1019
+ "to_layer": "bottom"
1020
+ }
1021
+ ]
1022
+ }
1023
+ ```
1024
+
1025
+ | Property | Type | Required | Description |
1026
+ | ----------------- | ------ | -------- | ----------- |
1027
+ | pcb_trace_hint_id | string | Yes | |
1028
+ | type | string | Yes | |
1029
+ | pcb_port_id | string | Yes | |
1030
+ | pcb_component_id | string | Yes | |
1031
+ | route | array | Yes | |
1032
+
1033
+ ### `pcb_via`
1034
+
1035
+ Defines a via on the PCB
1036
+
1037
+ ```json
1038
+ {
1039
+ "type": "pcb_via",
1040
+ "x": "3mm",
1041
+ "y": "1mm",
1042
+ "outer_diameter": "1.2mm",
1043
+ "hole_diameter": "0.08in",
1044
+ "from_layer": "top",
1045
+ "to_layer": "bottom",
1046
+ "layers": ["top", "bottom"]
1047
+ }
1048
+ ```
1049
+
1050
+ | Property | Type | Required | Description |
1051
+ | -------------- | -------------- | -------- | ----------- |
1052
+ | type | string | Yes | |
1053
+ | x | string, number | Yes | |
1054
+ | y | string, number | Yes | |
1055
+ | outer_diameter | string, number | No | |
1056
+ | hole_diameter | string, number | No | |
1057
+ | from_layer | undefined | No | |
1058
+ | to_layer | undefined | No | |
1059
+ | layers | array | Yes | |
1060
+
1061
+ ## Misc
1062
+
1063
+ ### `any_source_component`
1064
+
1065
+ ```json
1066
+ {
1067
+ "type": "source_component",
1068
+ "ftype": "led",
1069
+ "source_component_id": "source_component_1",
1070
+ "name": "L1",
1071
+ "supplier_part_numbers": {
1072
+ "esse6e1": [
1073
+ "ex anim sint mollit",
1074
+ "dolore nulla occaecat voluptate",
1075
+ "qui eiusmod dolore consequat",
1076
+ "qui dolore"
1077
+ ],
1078
+ "aliquip_0": ["nulla ad"],
1079
+ "ullamco_466": ["Lorem", "consectetur nisi", "deserunt", "amet cillum esse"]
1080
+ }
1081
+ }
1082
+ ```
1083
+
1084
+ ### `capacitance`
1085
+
1086
+ ```json
1087
+ "1uF"
1088
+ ```
1089
+
1090
+ ### `current`
1091
+
1092
+ ```json
1093
+ "1A"
1094
+ ```
1095
+
1096
+ ### `distance`
1097
+
1098
+ ```json
1099
+ "10mm"
1100
+ ```
1101
+
1102
+ ### `inductance`
1103
+
1104
+ ```json
1105
+ "1mH"
1106
+ ```
1107
+
1108
+ ### `layer_ref`
1109
+
1110
+ ```json
1111
+ "top"
1112
+ ```
1113
+
1114
+ ### `layer_string`
1115
+
1116
+ ```json
1117
+ "inner4"
1118
+ ```
1119
+
1120
+ ### `length`
1121
+
1122
+ ```json
1123
+ "1m"
1124
+ ```
1125
+
1126
+ ### `pcb_hole`
1127
+
1128
+ Defines a hole on the PCB
1129
+
1130
+ ```json
1131
+ {
1132
+ "type": "pcb_hole",
1133
+ "hole_diameter": "0.08in",
1134
+ "x": "3mm",
1135
+ "y": "1mm"
1136
+ }
1137
+ ```
1138
+
1139
+ ### `pcb_plated_hole`
1140
+
1141
+ Defines a plated hole on the PCB
1142
+
1143
+ ```json
1144
+ {
1145
+ "type": "pcb_plated_hole",
1146
+ "shape": "oval",
1147
+ "outer_width": -19181027.975192234,
1148
+ "outer_height": 13417151.0622572,
1149
+ "hole_width": "1mm",
1150
+ "hole_height": "1mm",
1151
+ "x": "3mm",
1152
+ "y": "1mm",
1153
+ "layers": ["top", "bottom"]
1154
+ }
1155
+ ```
1156
+
1157
+ ### `pcb_route_hint`
1158
+
1159
+ ```json
1160
+ {
1161
+ "x": "3mm",
1162
+ "y": "1mm",
1163
+ "via": false,
1164
+ "via_to_layer": "inner5"
1165
+ }
1166
+ ```
1167
+
1168
+ | Property | Type | Required | Description |
1169
+ | ------------ | -------------- | -------- | ----------- |
1170
+ | x | string, number | Yes | |
1171
+ | y | string, number | Yes | |
1172
+ | via | boolean | No | |
1173
+ | via_to_layer | undefined | No | |
1174
+
1175
+ ### `pcb_route_hints`
1176
+
1177
+ ```json
1178
+ [
1179
+ {
1180
+ "x": "5mm",
1181
+ "y": "6mm",
1182
+ "via": false
1183
+ }
1184
+ ]
1185
+ ```
1186
+
1187
+ ### `pcb_smtpad`
1188
+
1189
+ Defines an SMT pad on the PCB
1190
+
1191
+ ```json
1192
+ {
1193
+ "pcb_smtpad_id": "pcb_smtpad_1",
1194
+ "type": "pcb_smtpad",
1195
+ "shape": "rect",
1196
+ "x": "3mm",
1197
+ "y": "1mm",
1198
+ "width": "5mm",
1199
+ "height": "5mm",
1200
+ "layer": "top",
1201
+ "port_hints": ["1", "left"],
1202
+ "pcb_component_id": "pcb_component_1",
1203
+ "pcb_port_id": "pcb_port_1"
1204
+ }
1205
+ ```
1206
+
1207
+ ### `point`
1208
+
1209
+ ```json
1210
+ {
1211
+ "x": "3mm",
1212
+ "y": "1mm"
1213
+ }
1214
+ ```
1215
+
1216
+ | Property | Type | Required | Description |
1217
+ | -------- | -------------- | -------- | ----------- |
1218
+ | x | string, number | Yes | |
1219
+ | y | string, number | Yes | |
1220
+
1221
+ ### `position`
1222
+
1223
+ ```json
1224
+ {
1225
+ "x": "3mm",
1226
+ "y": "1mm"
1227
+ }
1228
+ ```
1229
+
1230
+ | Property | Type | Required | Description |
1231
+ | -------- | -------------- | -------- | ----------- |
1232
+ | x | string, number | Yes | |
1233
+ | y | string, number | Yes | |
1234
+
1235
+ ### `resistance`
1236
+
1237
+ ```json
1238
+ "1k"
1239
+ ```
1240
+
1241
+ ### `rotation`
1242
+
1243
+ ```json
1244
+ "90deg"
1245
+ ```
1246
+
1247
+ ### `route_hint_point`
1248
+
1249
+ ```json
1250
+ {
1251
+ "x": "3mm",
1252
+ "y": "1mm",
1253
+ "via": true,
1254
+ "to_layer": "bottom"
1255
+ }
1256
+ ```
1257
+
1258
+ | Property | Type | Required | Description |
1259
+ | -------- | -------------- | -------- | ----------- |
1260
+ | x | string, number | Yes | |
1261
+ | y | string, number | Yes | |
1262
+ | via | boolean | No | |
1263
+ | to_layer | undefined | No | |
1264
+
1265
+ ### `size`
1266
+
1267
+ ```json
1268
+ {
1269
+ "width": "5mm",
1270
+ "height": "5mm"
1271
+ }
1272
+ ```
1273
+
1274
+ | Property | Type | Required | Description |
1275
+ | -------- | ------ | -------- | ----------- |
1276
+ | width | number | Yes | |
1277
+ | height | number | Yes | |
1278
+
1279
+ ### `supplier_name`
1280
+
1281
+ ```json
1282
+ "digikey"
1283
+ ```
1284
+
1285
+ ### `time`
1286
+
1287
+ ```json
1288
+ "60s"
1289
+ ```
1290
+
1291
+ ### `visible_layer`
1292
+
1293
+ ```json
1294
+ "bottom"
1295
+ ```
1296
+
1297
+ ### `voltage`
1298
+
1299
+ ```json
1300
+ "5V"
1301
+ ```