circuit-json 0.0.218 → 0.0.220

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/README.md CHANGED
@@ -80,6 +80,7 @@ https://github.com/user-attachments/assets/2f28b7ba-689e-4d80-85b2-5bdef84b41f8
80
80
  - [PcbCutout](#pcbcutout)
81
81
  - [PcbFabricationNotePath](#pcbfabricationnotepath)
82
82
  - [PcbFabricationNoteText](#pcbfabricationnotetext)
83
+ - [PcbFootprintOverlapError](#pcbfootprintoverlaperror)
83
84
  - [PcbGroundPlane](#pcbgroundplane)
84
85
  - [PcbGroundPlaneRegion](#pcbgroundplaneregion)
85
86
  - [PcbGroup](#pcbgroup)
@@ -764,6 +765,25 @@ interface PcbFabricationNoteText {
764
765
  }
765
766
  ```
766
767
 
768
+ ### PcbFootprintOverlapError
769
+
770
+ [Source](https://github.com/tscircuit/circuit-json/blob/main/src/pcb/pcb_footprint_overlap_error.ts)
771
+
772
+ Error emitted when a pcb footprint overlaps with another element
773
+
774
+ ```typescript
775
+ /** Error emitted when a pcb footprint overlaps with another element */ interface PcbFootprintOverlapError {
776
+ type: "pcb_footprint_overlap_error"
777
+ pcb_error_id: string
778
+ error_type: "pcb_footprint_overlap_error"
779
+ message: string
780
+ pcb_smtpad_ids?: string[]
781
+ pcb_plated_hole_ids?: string[]
782
+ pcb_hole_ids?: string[]
783
+ pcb_keepout_ids?: string[]
784
+ }
785
+ ```
786
+
767
787
  ### PcbGroundPlane
768
788
 
769
789
  [Source](https://github.com/tscircuit/circuit-json/blob/main/src/pcb/pcb_ground_plane.ts)
package/dist/index.d.mts CHANGED
@@ -3047,6 +3047,47 @@ interface PcbFabricationNotePath {
3047
3047
  */
3048
3048
  type PCBFabricationNotePath = PcbFabricationNotePath;
3049
3049
 
3050
+ declare const pcb_footprint_overlap_error: z.ZodObject<{
3051
+ type: z.ZodLiteral<"pcb_footprint_overlap_error">;
3052
+ pcb_error_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
3053
+ error_type: z.ZodDefault<z.ZodLiteral<"pcb_footprint_overlap_error">>;
3054
+ message: z.ZodString;
3055
+ pcb_smtpad_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3056
+ pcb_plated_hole_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3057
+ pcb_hole_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3058
+ pcb_keepout_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
3059
+ }, "strip", z.ZodTypeAny, {
3060
+ message: string;
3061
+ type: "pcb_footprint_overlap_error";
3062
+ error_type: "pcb_footprint_overlap_error";
3063
+ pcb_error_id: string;
3064
+ pcb_smtpad_ids?: string[] | undefined;
3065
+ pcb_plated_hole_ids?: string[] | undefined;
3066
+ pcb_hole_ids?: string[] | undefined;
3067
+ pcb_keepout_ids?: string[] | undefined;
3068
+ }, {
3069
+ message: string;
3070
+ type: "pcb_footprint_overlap_error";
3071
+ error_type?: "pcb_footprint_overlap_error" | undefined;
3072
+ pcb_error_id?: string | undefined;
3073
+ pcb_smtpad_ids?: string[] | undefined;
3074
+ pcb_plated_hole_ids?: string[] | undefined;
3075
+ pcb_hole_ids?: string[] | undefined;
3076
+ pcb_keepout_ids?: string[] | undefined;
3077
+ }>;
3078
+ type PcbFootprintOverlapErrorInput = z.input<typeof pcb_footprint_overlap_error>;
3079
+ /** Error emitted when a pcb footprint overlaps with another element */
3080
+ interface PcbFootprintOverlapError {
3081
+ type: "pcb_footprint_overlap_error";
3082
+ pcb_error_id: string;
3083
+ error_type: "pcb_footprint_overlap_error";
3084
+ message: string;
3085
+ pcb_smtpad_ids?: string[];
3086
+ pcb_plated_hole_ids?: string[];
3087
+ pcb_hole_ids?: string[];
3088
+ pcb_keepout_ids?: string[];
3089
+ }
3090
+
3050
3091
  declare const pcb_keepout: z.ZodUnion<[z.ZodObject<{
3051
3092
  type: z.ZodLiteral<"pcb_keepout">;
3052
3093
  shape: z.ZodLiteral<"rect">;
@@ -3863,7 +3904,7 @@ interface PcbThermalSpoke {
3863
3904
  subcircuit_id?: string;
3864
3905
  }
3865
3906
 
3866
- type PcbCircuitElement = PcbComponent | PcbHole | PcbPlatedHole | PcbPort | PcbSmtPad | PcbSolderPaste | PcbText | PcbTrace | PcbTraceError | PcbMissingFootprintError | PcbManualEditConflictWarning | PcbPortNotMatchedError | PcbVia | PcbBoard | PcbPlacementError | PcbTraceHint | PcbSilkscreenLine | PcbSilkscreenPath | PcbSilkscreenText | PcbSilkscreenRect | PcbSilkscreenCircle | PcbAutoroutingError | PcbCutout | PcbBreakoutPoint | PcbGroundPlane | PcbGroundPlaneRegion | PcbThermalSpoke;
3907
+ type PcbCircuitElement = PcbComponent | PcbHole | PcbPlatedHole | PcbPort | PcbSmtPad | PcbSolderPaste | PcbText | PcbTrace | PcbTraceError | PcbMissingFootprintError | PcbManualEditConflictWarning | PcbPortNotMatchedError | PcbVia | PcbBoard | PcbPlacementError | PcbTraceHint | PcbSilkscreenLine | PcbSilkscreenPath | PcbSilkscreenText | PcbSilkscreenRect | PcbSilkscreenCircle | PcbAutoroutingError | PcbFootprintOverlapError | PcbCutout | PcbBreakoutPoint | PcbGroundPlane | PcbGroundPlaneRegion | PcbThermalSpoke;
3867
3908
 
3868
3909
  interface SchematicBox {
3869
3910
  type: "schematic_box";
@@ -5539,7 +5580,7 @@ interface SchematicTableCell {
5539
5580
  subcircuit_id?: string;
5540
5581
  }
5541
5582
 
5542
- type CircuitJsonError = PcbTraceError | PcbPlacementError | PcbPortNotMatchedError | PcbAutoroutingError | PcbMissingFootprintError | SchematicError;
5583
+ type CircuitJsonError = PcbTraceError | PcbPlacementError | PcbPortNotMatchedError | PcbAutoroutingError | PcbFootprintOverlapError | PcbMissingFootprintError | SchematicError;
5543
5584
 
5544
5585
  interface SourceComponentBase {
5545
5586
  type: "source_component";
@@ -11672,6 +11713,33 @@ declare const any_circuit_element: z.ZodUnion<[z.ZodObject<{
11672
11713
  subcircuit_id?: string | undefined;
11673
11714
  error_type?: "pcb_autorouting_error" | undefined;
11674
11715
  pcb_error_id?: string | undefined;
11716
+ }>, z.ZodObject<{
11717
+ type: z.ZodLiteral<"pcb_footprint_overlap_error">;
11718
+ pcb_error_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
11719
+ error_type: z.ZodDefault<z.ZodLiteral<"pcb_footprint_overlap_error">>;
11720
+ message: z.ZodString;
11721
+ pcb_smtpad_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11722
+ pcb_plated_hole_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11723
+ pcb_hole_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11724
+ pcb_keepout_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
11725
+ }, "strip", z.ZodTypeAny, {
11726
+ message: string;
11727
+ type: "pcb_footprint_overlap_error";
11728
+ error_type: "pcb_footprint_overlap_error";
11729
+ pcb_error_id: string;
11730
+ pcb_smtpad_ids?: string[] | undefined;
11731
+ pcb_plated_hole_ids?: string[] | undefined;
11732
+ pcb_hole_ids?: string[] | undefined;
11733
+ pcb_keepout_ids?: string[] | undefined;
11734
+ }, {
11735
+ message: string;
11736
+ type: "pcb_footprint_overlap_error";
11737
+ error_type?: "pcb_footprint_overlap_error" | undefined;
11738
+ pcb_error_id?: string | undefined;
11739
+ pcb_smtpad_ids?: string[] | undefined;
11740
+ pcb_plated_hole_ids?: string[] | undefined;
11741
+ pcb_hole_ids?: string[] | undefined;
11742
+ pcb_keepout_ids?: string[] | undefined;
11675
11743
  }>, z.ZodObject<{
11676
11744
  type: z.ZodLiteral<"pcb_breakout_point">;
11677
11745
  pcb_breakout_point_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -16794,6 +16862,33 @@ declare const any_soup_element: z.ZodUnion<[z.ZodObject<{
16794
16862
  subcircuit_id?: string | undefined;
16795
16863
  error_type?: "pcb_autorouting_error" | undefined;
16796
16864
  pcb_error_id?: string | undefined;
16865
+ }>, z.ZodObject<{
16866
+ type: z.ZodLiteral<"pcb_footprint_overlap_error">;
16867
+ pcb_error_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
16868
+ error_type: z.ZodDefault<z.ZodLiteral<"pcb_footprint_overlap_error">>;
16869
+ message: z.ZodString;
16870
+ pcb_smtpad_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16871
+ pcb_plated_hole_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16872
+ pcb_hole_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16873
+ pcb_keepout_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16874
+ }, "strip", z.ZodTypeAny, {
16875
+ message: string;
16876
+ type: "pcb_footprint_overlap_error";
16877
+ error_type: "pcb_footprint_overlap_error";
16878
+ pcb_error_id: string;
16879
+ pcb_smtpad_ids?: string[] | undefined;
16880
+ pcb_plated_hole_ids?: string[] | undefined;
16881
+ pcb_hole_ids?: string[] | undefined;
16882
+ pcb_keepout_ids?: string[] | undefined;
16883
+ }, {
16884
+ message: string;
16885
+ type: "pcb_footprint_overlap_error";
16886
+ error_type?: "pcb_footprint_overlap_error" | undefined;
16887
+ pcb_error_id?: string | undefined;
16888
+ pcb_smtpad_ids?: string[] | undefined;
16889
+ pcb_plated_hole_ids?: string[] | undefined;
16890
+ pcb_hole_ids?: string[] | undefined;
16891
+ pcb_keepout_ids?: string[] | undefined;
16797
16892
  }>, z.ZodObject<{
16798
16893
  type: z.ZodLiteral<"pcb_breakout_point">;
16799
16894
  pcb_breakout_point_id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
@@ -18190,4 +18285,4 @@ type AnySoupElementInput = AnyCircuitElementInput;
18190
18285
  */
18191
18286
  type CircuitJson = AnyCircuitElement[];
18192
18287
 
18193
- export { type AnyCircuitElement, type AnyCircuitElementInput, type AnySoupElement, type AnySoupElementInput, type AnySourceComponent, type AnySourceElement, type CadComponent, type CadComponentInput, type CircuitJson, type CircuitJsonError, type Distance, type InferredProjectMetadata, type InferredSchematicNetLabel, type InputPoint, type InputPosition, type InputRotation, type LayerRef, type LayerRefInput, type Length, type NinePointAnchor, type PCBBoard, type PCBComponent, type PCBFabricationNotePath, type PCBFabricationNoteText, type PCBHole, type PCBHoleInput, type PCBKeepout, type PCBKeepoutCircle, type PCBKeepoutInput, type PCBKeepoutRect, type PCBMissingFootprintError, type PCBPlacementError, type PCBPlatedHole, type PCBPlatedHoleInput, type PCBPort, type PCBPortInput, type PCBPortNotMatchedError, type PCBSMTPad, type PCBSMTPadInput, type PCBSilkscreenLine, type PCBSilkscreenText, type PCBSolderPasteInput, type PCBText, type PCBTrace, type PCBTraceError, type PCBTraceHint, type PCBTraceInput, type PCBVia, type PcbAutoroutingError, type PcbAutoroutingErrorInput, type PcbAutoroutingErrorInterface, type PcbBoard, type PcbBoardInput, type PcbBreakoutPoint, type PcbBreakoutPointInput, type PcbCircuitElement, type PcbComponent, type PcbComponentInput, type PcbCutout, type PcbCutoutCircle, type PcbCutoutCircleInput, type PcbCutoutInput, type PcbCutoutPolygon, type PcbCutoutPolygonInput, type PcbCutoutRect, type PcbCutoutRectInput, type PcbFabricationNotePath, type PcbFabricationNotePathInput, type PcbFabricationNoteText, type PcbFabricationNoteTextInput, type PcbGroundPlane, type PcbGroundPlaneInput, type PcbGroundPlaneRegion, type PcbGroundPlaneRegionInput, type PcbGroup, type PcbGroupInput, type PcbHole, type PcbHoleCircleOrSquare, type PcbHoleCircleOrSquareInput, type PcbHoleCircularWithRectPad, type PcbHoleOval, type PcbHoleOvalInput, type PcbHolePillWithRectPad, type PcbManualEditConflictWarning, type PcbManualEditConflictWarningInput, type PcbMissingFootprintError, type PcbMissingFootprintErrorInput, type PcbPlacementError, type PcbPlacementErrorInput, type PcbPlatedHole, type PcbPlatedHoleCircle, type PcbPlatedHoleInput, type PcbPlatedHoleOval, type PcbPort, type PcbPortInput, type PcbPortNotMatchedError, type PcbPortNotMatchedErrorInput, type PcbRouteHint, type PcbRouteHintInput, type PcbRouteHints, type PcbRouteHintsInput, type PcbSilkscreenCircle, type PcbSilkscreenCircleInput, type PcbSilkscreenLine, type PcbSilkscreenLineInput, type PcbSilkscreenOval, type PcbSilkscreenOvalDeprecated, type PcbSilkscreenOvalInput, type PcbSilkscreenPath, type PcbSilkscreenPathDeprecated, type PcbSilkscreenPathInput, type PcbSilkscreenRect, type PcbSilkscreenRectInput, type PcbSilkscreenRectOld, type PcbSilkscreenText, type PcbSilkscreenTextInput, type PcbSmtPad, type PcbSmtPadCircle, type PcbSmtPadPill, type PcbSmtPadPolygon, type PcbSmtPadRect, type PcbSmtPadRotatedRect, type PcbSolderPaste, type PcbSolderPasteCircle, type PcbSolderPasteOval, type PcbSolderPastePill, type PcbSolderPasteRect, type PcbSolderPasteRotatedRect, type PcbText, type PcbTextInput, type PcbThermalSpoke, type PcbThermalSpokeInput, type PcbTrace, type PcbTraceError, type PcbTraceErrorInput, type PcbTraceHint, type PcbTraceHintInput, type PcbTraceInput, type PcbTraceRoutePoint, type PcbTraceRoutePointVia, type PcbTraceRoutePointWire, type PcbVia, type PcbViaInput, type Point, type Point3, type Position, type Rotation, type RouteHintPoint, type RouteHintPointInput, type SchematicBox, type SchematicBoxInput, type SchematicComponent, type SchematicComponentInput, type SchematicDebugLine, type SchematicDebugObject, type SchematicDebugObjectInput, type SchematicDebugPoint, type SchematicDebugRect, type SchematicError, type SchematicErrorInput, type SchematicGroup, type SchematicGroupInput, type SchematicLayoutError, type SchematicLayoutErrorInput, type SchematicLine, type SchematicLineInput, type SchematicManualEditConflictWarning, type SchematicManualEditConflictWarningInput, type SchematicNetLabel, type SchematicNetLabelInput, type SchematicPath, type SchematicPathInput, type SchematicPort, type SchematicPortArrangement, type SchematicPortArrangementBySides, type SchematicPortArrangementBySize, type SchematicPortInput, type SchematicTable, type SchematicTableCell, type SchematicTableCellInput, type SchematicTableInput, type SchematicText, type SchematicTextInput, type SchematicTrace, type SchematicTraceEdge, type SchematicTraceInput, type SchematicVoltageProbe, type SchematicVoltageProbeInput, type Size, type SizeInput, type SourceComponentBase, type SourceFailedToCreateComponentError, type SourceFailedToCreateComponentErrorInput, type SourceGroup, type SourceGroupInput, type SourceMissingPropertyError, type SourceMissingPropertyErrorInput, type SourceNet, type SourceNetInput, type SourcePcbGroundPlane, type SourcePcbGroundPlaneInput, type SourcePort, type SourcePortInput, type SourceProjectMetadata, type SourceSimpleBattery, type SourceSimpleBatteryInput, type SourceSimpleCapacitor, type SourceSimpleCapacitorInput, type SourceSimpleChip, type SourceSimpleChipInput, type SourceSimpleCrystal, type SourceSimpleCrystalInput, type SourceSimpleDiode, type SourceSimpleDiodeInput, type SourceSimpleGround, type SourceSimpleGroundInput, type SourceSimpleInductor, type SourceSimpleInductorInput, type SourceSimpleLed, type SourceSimpleLedInput, type SourceSimpleMosfet, type SourceSimpleMosfetInput, type SourceSimplePinHeader, type SourceSimplePinHeaderInput, type SourceSimplePotentiometer, type SourceSimplePotentiometerInput, type SourceSimplePowerSource, type SourceSimplePowerSourceInput, type SourceSimplePushButton, type SourceSimplePushButtonInput, type SourceSimpleResistor, type SourceSimpleResistorInput, type SourceSimpleResonator, type SourceSimpleResonatorInput, type SourceSimpleSwitch, type SourceSimpleSwitchInput, type SourceSimpleTestPoint, type SourceSimpleTestPointInput, type SourceSimpleTransistor, type SourceSimpleTransistorInput, type SourceTrace, type SupplierName, type VisibleLayer, type VisibleLayerRef, all_layers, any_circuit_element, any_soup_element, any_source_component, battery_capacity, cad_component, capacitance, current, distance, frequency, getZodPrefixedIdWithDefault, inductance, layer_ref, layer_string, length, ninePointAnchor, pcb_autorouting_error, pcb_board, pcb_breakout_point, pcb_component, pcb_cutout, pcb_cutout_circle, pcb_cutout_polygon, pcb_cutout_rect, pcb_fabrication_note_path, pcb_fabrication_note_text, pcb_ground_plane, pcb_ground_plane_region, pcb_group, pcb_hole, pcb_hole_circle_or_square_shape, pcb_hole_oval_shape, pcb_keepout, pcb_manual_edit_conflict_warning, pcb_missing_footprint_error, pcb_placement_error, pcb_plated_hole, pcb_port, pcb_port_not_matched_error, pcb_route_hint, pcb_route_hints, pcb_silkscreen_circle, pcb_silkscreen_line, pcb_silkscreen_oval, pcb_silkscreen_path, pcb_silkscreen_rect, pcb_silkscreen_text, pcb_smtpad, pcb_smtpad_pill, pcb_solder_paste, pcb_text, pcb_thermal_spoke, pcb_trace, pcb_trace_error, pcb_trace_hint, pcb_trace_route_point, pcb_trace_route_point_via, pcb_trace_route_point_wire, pcb_via, point, point3, port_arrangement, position, position3, resistance, rotation, route_hint_point, schematic_box, schematic_component, schematic_component_port_arrangement_by_sides, schematic_component_port_arrangement_by_size, schematic_debug_line, schematic_debug_object, schematic_debug_object_base, schematic_debug_point, schematic_debug_rect, schematic_error, schematic_group, schematic_layout_error, schematic_line, schematic_manual_edit_conflict_warning, schematic_net_label, schematic_path, schematic_pin_styles, schematic_port, schematic_table, schematic_table_cell, schematic_text, schematic_trace, schematic_voltage_probe, size, source_component_base, source_failed_to_create_component_error, source_group, source_missing_property_error, source_net, source_pcb_ground_plane, source_port, source_project_metadata, source_simple_battery, source_simple_capacitor, source_simple_chip, source_simple_crystal, source_simple_diode, source_simple_ground, source_simple_inductor, source_simple_led, source_simple_mosfet, source_simple_pin_header, source_simple_potentiometer, source_simple_power_source, source_simple_push_button, source_simple_resistor, source_simple_resonator, source_simple_switch, source_simple_test_point, source_simple_transistor, source_trace, supplier_name, time, visible_layer, voltage };
18288
+ export { type AnyCircuitElement, type AnyCircuitElementInput, type AnySoupElement, type AnySoupElementInput, type AnySourceComponent, type AnySourceElement, type CadComponent, type CadComponentInput, type CircuitJson, type CircuitJsonError, type Distance, type InferredProjectMetadata, type InferredSchematicNetLabel, type InputPoint, type InputPosition, type InputRotation, type LayerRef, type LayerRefInput, type Length, type NinePointAnchor, type PCBBoard, type PCBComponent, type PCBFabricationNotePath, type PCBFabricationNoteText, type PCBHole, type PCBHoleInput, type PCBKeepout, type PCBKeepoutCircle, type PCBKeepoutInput, type PCBKeepoutRect, type PCBMissingFootprintError, type PCBPlacementError, type PCBPlatedHole, type PCBPlatedHoleInput, type PCBPort, type PCBPortInput, type PCBPortNotMatchedError, type PCBSMTPad, type PCBSMTPadInput, type PCBSilkscreenLine, type PCBSilkscreenText, type PCBSolderPasteInput, type PCBText, type PCBTrace, type PCBTraceError, type PCBTraceHint, type PCBTraceInput, type PCBVia, type PcbAutoroutingError, type PcbAutoroutingErrorInput, type PcbAutoroutingErrorInterface, type PcbBoard, type PcbBoardInput, type PcbBreakoutPoint, type PcbBreakoutPointInput, type PcbCircuitElement, type PcbComponent, type PcbComponentInput, type PcbCutout, type PcbCutoutCircle, type PcbCutoutCircleInput, type PcbCutoutInput, type PcbCutoutPolygon, type PcbCutoutPolygonInput, type PcbCutoutRect, type PcbCutoutRectInput, type PcbFabricationNotePath, type PcbFabricationNotePathInput, type PcbFabricationNoteText, type PcbFabricationNoteTextInput, type PcbFootprintOverlapError, type PcbFootprintOverlapErrorInput, type PcbGroundPlane, type PcbGroundPlaneInput, type PcbGroundPlaneRegion, type PcbGroundPlaneRegionInput, type PcbGroup, type PcbGroupInput, type PcbHole, type PcbHoleCircleOrSquare, type PcbHoleCircleOrSquareInput, type PcbHoleCircularWithRectPad, type PcbHoleOval, type PcbHoleOvalInput, type PcbHolePillWithRectPad, type PcbManualEditConflictWarning, type PcbManualEditConflictWarningInput, type PcbMissingFootprintError, type PcbMissingFootprintErrorInput, type PcbPlacementError, type PcbPlacementErrorInput, type PcbPlatedHole, type PcbPlatedHoleCircle, type PcbPlatedHoleInput, type PcbPlatedHoleOval, type PcbPort, type PcbPortInput, type PcbPortNotMatchedError, type PcbPortNotMatchedErrorInput, type PcbRouteHint, type PcbRouteHintInput, type PcbRouteHints, type PcbRouteHintsInput, type PcbSilkscreenCircle, type PcbSilkscreenCircleInput, type PcbSilkscreenLine, type PcbSilkscreenLineInput, type PcbSilkscreenOval, type PcbSilkscreenOvalDeprecated, type PcbSilkscreenOvalInput, type PcbSilkscreenPath, type PcbSilkscreenPathDeprecated, type PcbSilkscreenPathInput, type PcbSilkscreenRect, type PcbSilkscreenRectInput, type PcbSilkscreenRectOld, type PcbSilkscreenText, type PcbSilkscreenTextInput, type PcbSmtPad, type PcbSmtPadCircle, type PcbSmtPadPill, type PcbSmtPadPolygon, type PcbSmtPadRect, type PcbSmtPadRotatedRect, type PcbSolderPaste, type PcbSolderPasteCircle, type PcbSolderPasteOval, type PcbSolderPastePill, type PcbSolderPasteRect, type PcbSolderPasteRotatedRect, type PcbText, type PcbTextInput, type PcbThermalSpoke, type PcbThermalSpokeInput, type PcbTrace, type PcbTraceError, type PcbTraceErrorInput, type PcbTraceHint, type PcbTraceHintInput, type PcbTraceInput, type PcbTraceRoutePoint, type PcbTraceRoutePointVia, type PcbTraceRoutePointWire, type PcbVia, type PcbViaInput, type Point, type Point3, type Position, type Rotation, type RouteHintPoint, type RouteHintPointInput, type SchematicBox, type SchematicBoxInput, type SchematicComponent, type SchematicComponentInput, type SchematicDebugLine, type SchematicDebugObject, type SchematicDebugObjectInput, type SchematicDebugPoint, type SchematicDebugRect, type SchematicError, type SchematicErrorInput, type SchematicGroup, type SchematicGroupInput, type SchematicLayoutError, type SchematicLayoutErrorInput, type SchematicLine, type SchematicLineInput, type SchematicManualEditConflictWarning, type SchematicManualEditConflictWarningInput, type SchematicNetLabel, type SchematicNetLabelInput, type SchematicPath, type SchematicPathInput, type SchematicPort, type SchematicPortArrangement, type SchematicPortArrangementBySides, type SchematicPortArrangementBySize, type SchematicPortInput, type SchematicTable, type SchematicTableCell, type SchematicTableCellInput, type SchematicTableInput, type SchematicText, type SchematicTextInput, type SchematicTrace, type SchematicTraceEdge, type SchematicTraceInput, type SchematicVoltageProbe, type SchematicVoltageProbeInput, type Size, type SizeInput, type SourceComponentBase, type SourceFailedToCreateComponentError, type SourceFailedToCreateComponentErrorInput, type SourceGroup, type SourceGroupInput, type SourceMissingPropertyError, type SourceMissingPropertyErrorInput, type SourceNet, type SourceNetInput, type SourcePcbGroundPlane, type SourcePcbGroundPlaneInput, type SourcePort, type SourcePortInput, type SourceProjectMetadata, type SourceSimpleBattery, type SourceSimpleBatteryInput, type SourceSimpleCapacitor, type SourceSimpleCapacitorInput, type SourceSimpleChip, type SourceSimpleChipInput, type SourceSimpleCrystal, type SourceSimpleCrystalInput, type SourceSimpleDiode, type SourceSimpleDiodeInput, type SourceSimpleGround, type SourceSimpleGroundInput, type SourceSimpleInductor, type SourceSimpleInductorInput, type SourceSimpleLed, type SourceSimpleLedInput, type SourceSimpleMosfet, type SourceSimpleMosfetInput, type SourceSimplePinHeader, type SourceSimplePinHeaderInput, type SourceSimplePotentiometer, type SourceSimplePotentiometerInput, type SourceSimplePowerSource, type SourceSimplePowerSourceInput, type SourceSimplePushButton, type SourceSimplePushButtonInput, type SourceSimpleResistor, type SourceSimpleResistorInput, type SourceSimpleResonator, type SourceSimpleResonatorInput, type SourceSimpleSwitch, type SourceSimpleSwitchInput, type SourceSimpleTestPoint, type SourceSimpleTestPointInput, type SourceSimpleTransistor, type SourceSimpleTransistorInput, type SourceTrace, type SupplierName, type VisibleLayer, type VisibleLayerRef, all_layers, any_circuit_element, any_soup_element, any_source_component, battery_capacity, cad_component, capacitance, current, distance, frequency, getZodPrefixedIdWithDefault, inductance, layer_ref, layer_string, length, ninePointAnchor, pcb_autorouting_error, pcb_board, pcb_breakout_point, pcb_component, pcb_cutout, pcb_cutout_circle, pcb_cutout_polygon, pcb_cutout_rect, pcb_fabrication_note_path, pcb_fabrication_note_text, pcb_footprint_overlap_error, pcb_ground_plane, pcb_ground_plane_region, pcb_group, pcb_hole, pcb_hole_circle_or_square_shape, pcb_hole_oval_shape, pcb_keepout, pcb_manual_edit_conflict_warning, pcb_missing_footprint_error, pcb_placement_error, pcb_plated_hole, pcb_port, pcb_port_not_matched_error, pcb_route_hint, pcb_route_hints, pcb_silkscreen_circle, pcb_silkscreen_line, pcb_silkscreen_oval, pcb_silkscreen_path, pcb_silkscreen_rect, pcb_silkscreen_text, pcb_smtpad, pcb_smtpad_pill, pcb_solder_paste, pcb_text, pcb_thermal_spoke, pcb_trace, pcb_trace_error, pcb_trace_hint, pcb_trace_route_point, pcb_trace_route_point_via, pcb_trace_route_point_wire, pcb_via, point, point3, port_arrangement, position, position3, resistance, rotation, route_hint_point, schematic_box, schematic_component, schematic_component_port_arrangement_by_sides, schematic_component_port_arrangement_by_size, schematic_debug_line, schematic_debug_object, schematic_debug_object_base, schematic_debug_point, schematic_debug_rect, schematic_error, schematic_group, schematic_layout_error, schematic_line, schematic_manual_edit_conflict_warning, schematic_net_label, schematic_path, schematic_pin_styles, schematic_port, schematic_table, schematic_table_cell, schematic_text, schematic_trace, schematic_voltage_probe, size, source_component_base, source_failed_to_create_component_error, source_group, source_missing_property_error, source_net, source_pcb_ground_plane, source_port, source_project_metadata, source_simple_battery, source_simple_capacitor, source_simple_chip, source_simple_crystal, source_simple_diode, source_simple_ground, source_simple_inductor, source_simple_led, source_simple_mosfet, source_simple_pin_header, source_simple_potentiometer, source_simple_power_source, source_simple_push_button, source_simple_resistor, source_simple_resonator, source_simple_switch, source_simple_test_point, source_simple_transistor, source_trace, supplier_name, time, visible_layer, voltage };
package/dist/index.mjs CHANGED
@@ -1647,48 +1647,64 @@ var pcb_fabrication_note_path = z78.object({
1647
1647
  );
1648
1648
  expectTypesMatch(true);
1649
1649
 
1650
- // src/pcb/pcb_keepout.ts
1650
+ // src/pcb/pcb_footprint_overlap_error.ts
1651
1651
  import { z as z79 } from "zod";
1652
- var pcb_keepout = z79.object({
1653
- type: z79.literal("pcb_keepout"),
1654
- shape: z79.literal("rect"),
1655
- pcb_group_id: z79.string().optional(),
1656
- subcircuit_id: z79.string().optional(),
1652
+ var pcb_footprint_overlap_error = z79.object({
1653
+ type: z79.literal("pcb_footprint_overlap_error"),
1654
+ pcb_error_id: getZodPrefixedIdWithDefault("pcb_error"),
1655
+ error_type: z79.literal("pcb_footprint_overlap_error").default("pcb_footprint_overlap_error"),
1656
+ message: z79.string(),
1657
+ pcb_smtpad_ids: z79.array(z79.string()).optional(),
1658
+ pcb_plated_hole_ids: z79.array(z79.string()).optional(),
1659
+ pcb_hole_ids: z79.array(z79.string()).optional(),
1660
+ pcb_keepout_ids: z79.array(z79.string()).optional()
1661
+ }).describe("Error emitted when a pcb footprint overlaps with another element");
1662
+ expectTypesMatch(
1663
+ true
1664
+ );
1665
+
1666
+ // src/pcb/pcb_keepout.ts
1667
+ import { z as z80 } from "zod";
1668
+ var pcb_keepout = z80.object({
1669
+ type: z80.literal("pcb_keepout"),
1670
+ shape: z80.literal("rect"),
1671
+ pcb_group_id: z80.string().optional(),
1672
+ subcircuit_id: z80.string().optional(),
1657
1673
  center: point,
1658
1674
  width: distance,
1659
1675
  height: distance,
1660
- pcb_keepout_id: z79.string(),
1661
- layers: z79.array(z79.string()),
1676
+ pcb_keepout_id: z80.string(),
1677
+ layers: z80.array(z80.string()),
1662
1678
  // Specify layers where the keepout applies
1663
- description: z79.string().optional()
1679
+ description: z80.string().optional()
1664
1680
  // Optional description of the keepout
1665
1681
  }).or(
1666
- z79.object({
1667
- type: z79.literal("pcb_keepout"),
1668
- shape: z79.literal("circle"),
1669
- pcb_group_id: z79.string().optional(),
1670
- subcircuit_id: z79.string().optional(),
1682
+ z80.object({
1683
+ type: z80.literal("pcb_keepout"),
1684
+ shape: z80.literal("circle"),
1685
+ pcb_group_id: z80.string().optional(),
1686
+ subcircuit_id: z80.string().optional(),
1671
1687
  center: point,
1672
1688
  radius: distance,
1673
- pcb_keepout_id: z79.string(),
1674
- layers: z79.array(z79.string()),
1689
+ pcb_keepout_id: z80.string(),
1690
+ layers: z80.array(z80.string()),
1675
1691
  // Specify layers where the keepout applies
1676
- description: z79.string().optional()
1692
+ description: z80.string().optional()
1677
1693
  // Optional description of the keepout
1678
1694
  })
1679
1695
  );
1680
1696
  expectTypesMatch(true);
1681
1697
 
1682
1698
  // src/pcb/pcb_cutout.ts
1683
- import { z as z80 } from "zod";
1684
- var pcb_cutout_base = z80.object({
1685
- type: z80.literal("pcb_cutout"),
1699
+ import { z as z81 } from "zod";
1700
+ var pcb_cutout_base = z81.object({
1701
+ type: z81.literal("pcb_cutout"),
1686
1702
  pcb_cutout_id: getZodPrefixedIdWithDefault("pcb_cutout"),
1687
- pcb_group_id: z80.string().optional(),
1688
- subcircuit_id: z80.string().optional()
1703
+ pcb_group_id: z81.string().optional(),
1704
+ subcircuit_id: z81.string().optional()
1689
1705
  });
1690
1706
  var pcb_cutout_rect = pcb_cutout_base.extend({
1691
- shape: z80.literal("rect"),
1707
+ shape: z81.literal("rect"),
1692
1708
  center: point,
1693
1709
  width: length,
1694
1710
  height: length,
@@ -1696,17 +1712,17 @@ var pcb_cutout_rect = pcb_cutout_base.extend({
1696
1712
  });
1697
1713
  expectTypesMatch(true);
1698
1714
  var pcb_cutout_circle = pcb_cutout_base.extend({
1699
- shape: z80.literal("circle"),
1715
+ shape: z81.literal("circle"),
1700
1716
  center: point,
1701
1717
  radius: length
1702
1718
  });
1703
1719
  expectTypesMatch(true);
1704
1720
  var pcb_cutout_polygon = pcb_cutout_base.extend({
1705
- shape: z80.literal("polygon"),
1706
- points: z80.array(point)
1721
+ shape: z81.literal("polygon"),
1722
+ points: z81.array(point)
1707
1723
  });
1708
1724
  expectTypesMatch(true);
1709
- var pcb_cutout = z80.discriminatedUnion("shape", [
1725
+ var pcb_cutout = z81.discriminatedUnion("shape", [
1710
1726
  pcb_cutout_rect,
1711
1727
  pcb_cutout_circle,
1712
1728
  pcb_cutout_polygon
@@ -1714,82 +1730,82 @@ var pcb_cutout = z80.discriminatedUnion("shape", [
1714
1730
  expectTypesMatch(true);
1715
1731
 
1716
1732
  // src/pcb/pcb_missing_footprint_error.ts
1717
- import { z as z81 } from "zod";
1718
- var pcb_missing_footprint_error = z81.object({
1719
- type: z81.literal("pcb_missing_footprint_error"),
1733
+ import { z as z82 } from "zod";
1734
+ var pcb_missing_footprint_error = z82.object({
1735
+ type: z82.literal("pcb_missing_footprint_error"),
1720
1736
  pcb_missing_footprint_error_id: getZodPrefixedIdWithDefault(
1721
1737
  "pcb_missing_footprint_error"
1722
1738
  ),
1723
- pcb_group_id: z81.string().optional(),
1724
- subcircuit_id: z81.string().optional(),
1725
- error_type: z81.literal("pcb_missing_footprint_error").default("pcb_missing_footprint_error"),
1726
- source_component_id: z81.string(),
1727
- message: z81.string()
1739
+ pcb_group_id: z82.string().optional(),
1740
+ subcircuit_id: z82.string().optional(),
1741
+ error_type: z82.literal("pcb_missing_footprint_error").default("pcb_missing_footprint_error"),
1742
+ source_component_id: z82.string(),
1743
+ message: z82.string()
1728
1744
  }).describe("Defines a missing footprint error on the PCB");
1729
1745
  expectTypesMatch(
1730
1746
  true
1731
1747
  );
1732
1748
 
1733
1749
  // src/pcb/pcb_group.ts
1734
- import { z as z82 } from "zod";
1735
- var pcb_group = z82.object({
1736
- type: z82.literal("pcb_group"),
1750
+ import { z as z83 } from "zod";
1751
+ var pcb_group = z83.object({
1752
+ type: z83.literal("pcb_group"),
1737
1753
  pcb_group_id: getZodPrefixedIdWithDefault("pcb_group"),
1738
- source_group_id: z82.string(),
1739
- is_subcircuit: z82.boolean().optional(),
1740
- subcircuit_id: z82.string().optional(),
1754
+ source_group_id: z83.string(),
1755
+ is_subcircuit: z83.boolean().optional(),
1756
+ subcircuit_id: z83.string().optional(),
1741
1757
  width: length,
1742
1758
  height: length,
1743
1759
  center: point,
1744
- pcb_component_ids: z82.array(z82.string()),
1745
- name: z82.string().optional(),
1746
- description: z82.string().optional(),
1747
- autorouter_configuration: z82.object({
1760
+ pcb_component_ids: z83.array(z83.string()),
1761
+ name: z83.string().optional(),
1762
+ description: z83.string().optional(),
1763
+ autorouter_configuration: z83.object({
1748
1764
  trace_clearance: length
1749
1765
  }).optional(),
1750
- autorouter_used_string: z82.string().optional()
1766
+ autorouter_used_string: z83.string().optional()
1751
1767
  }).describe("Defines a group of components on the PCB");
1752
1768
  expectTypesMatch(true);
1753
1769
 
1754
1770
  // src/pcb/pcb_autorouting_error.ts
1755
- import { z as z83 } from "zod";
1756
- var pcb_autorouting_error = z83.object({
1757
- type: z83.literal("pcb_autorouting_error"),
1771
+ import { z as z84 } from "zod";
1772
+ var pcb_autorouting_error = z84.object({
1773
+ type: z84.literal("pcb_autorouting_error"),
1758
1774
  pcb_error_id: getZodPrefixedIdWithDefault("pcb_autorouting_error"),
1759
- error_type: z83.literal("pcb_autorouting_error").default("pcb_autorouting_error"),
1760
- message: z83.string(),
1761
- subcircuit_id: z83.string().optional()
1775
+ error_type: z84.literal("pcb_autorouting_error").default("pcb_autorouting_error"),
1776
+ message: z84.string(),
1777
+ subcircuit_id: z84.string().optional()
1762
1778
  }).describe("The autorouting has failed to route a portion of the board");
1763
1779
  expectTypesMatch(true);
1764
1780
 
1765
1781
  // src/pcb/pcb_manual_edit_conflict_warning.ts
1766
- import { z as z84 } from "zod";
1767
- var pcb_manual_edit_conflict_warning = z84.object({
1768
- type: z84.literal("pcb_manual_edit_conflict_warning"),
1782
+ import { z as z85 } from "zod";
1783
+ var pcb_manual_edit_conflict_warning = z85.object({
1784
+ type: z85.literal("pcb_manual_edit_conflict_warning"),
1769
1785
  pcb_manual_edit_conflict_warning_id: getZodPrefixedIdWithDefault(
1770
1786
  "pcb_manual_edit_conflict_warning"
1771
1787
  ),
1772
- warning_type: z84.literal("pcb_manual_edit_conflict_warning").default("pcb_manual_edit_conflict_warning"),
1773
- message: z84.string(),
1774
- pcb_component_id: z84.string(),
1775
- pcb_group_id: z84.string().optional(),
1776
- subcircuit_id: z84.string().optional(),
1777
- source_component_id: z84.string()
1788
+ warning_type: z85.literal("pcb_manual_edit_conflict_warning").default("pcb_manual_edit_conflict_warning"),
1789
+ message: z85.string(),
1790
+ pcb_component_id: z85.string(),
1791
+ pcb_group_id: z85.string().optional(),
1792
+ subcircuit_id: z85.string().optional(),
1793
+ source_component_id: z85.string()
1778
1794
  }).describe(
1779
1795
  "Warning emitted when a component has both manual placement and explicit pcbX/pcbY coordinates"
1780
1796
  );
1781
1797
  expectTypesMatch(true);
1782
1798
 
1783
1799
  // src/pcb/pcb_breakout_point.ts
1784
- import { z as z85 } from "zod";
1785
- var pcb_breakout_point = z85.object({
1786
- type: z85.literal("pcb_breakout_point"),
1800
+ import { z as z86 } from "zod";
1801
+ var pcb_breakout_point = z86.object({
1802
+ type: z86.literal("pcb_breakout_point"),
1787
1803
  pcb_breakout_point_id: getZodPrefixedIdWithDefault("pcb_breakout_point"),
1788
- pcb_group_id: z85.string(),
1789
- subcircuit_id: z85.string().optional(),
1790
- source_trace_id: z85.string().optional(),
1791
- source_port_id: z85.string().optional(),
1792
- source_net_id: z85.string().optional(),
1804
+ pcb_group_id: z86.string(),
1805
+ subcircuit_id: z86.string().optional(),
1806
+ source_trace_id: z86.string().optional(),
1807
+ source_port_id: z86.string().optional(),
1808
+ source_net_id: z86.string().optional(),
1793
1809
  x: distance,
1794
1810
  y: distance
1795
1811
  }).describe(
@@ -1798,72 +1814,72 @@ var pcb_breakout_point = z85.object({
1798
1814
  expectTypesMatch(true);
1799
1815
 
1800
1816
  // src/pcb/pcb_ground_plane.ts
1801
- import { z as z86 } from "zod";
1802
- var pcb_ground_plane = z86.object({
1803
- type: z86.literal("pcb_ground_plane"),
1817
+ import { z as z87 } from "zod";
1818
+ var pcb_ground_plane = z87.object({
1819
+ type: z87.literal("pcb_ground_plane"),
1804
1820
  pcb_ground_plane_id: getZodPrefixedIdWithDefault("pcb_ground_plane"),
1805
- source_pcb_ground_plane_id: z86.string(),
1806
- source_net_id: z86.string(),
1807
- pcb_group_id: z86.string().optional(),
1808
- subcircuit_id: z86.string().optional()
1821
+ source_pcb_ground_plane_id: z87.string(),
1822
+ source_net_id: z87.string(),
1823
+ pcb_group_id: z87.string().optional(),
1824
+ subcircuit_id: z87.string().optional()
1809
1825
  }).describe("Defines a ground plane on the PCB");
1810
1826
  expectTypesMatch(true);
1811
1827
 
1812
1828
  // src/pcb/pcb_ground_plane_region.ts
1813
- import { z as z87 } from "zod";
1814
- var pcb_ground_plane_region = z87.object({
1815
- type: z87.literal("pcb_ground_plane_region"),
1829
+ import { z as z88 } from "zod";
1830
+ var pcb_ground_plane_region = z88.object({
1831
+ type: z88.literal("pcb_ground_plane_region"),
1816
1832
  pcb_ground_plane_region_id: getZodPrefixedIdWithDefault(
1817
1833
  "pcb_ground_plane_region"
1818
1834
  ),
1819
- pcb_ground_plane_id: z87.string(),
1820
- pcb_group_id: z87.string().optional(),
1821
- subcircuit_id: z87.string().optional(),
1835
+ pcb_ground_plane_id: z88.string(),
1836
+ pcb_group_id: z88.string().optional(),
1837
+ subcircuit_id: z88.string().optional(),
1822
1838
  layer: layer_ref,
1823
- points: z87.array(point)
1839
+ points: z88.array(point)
1824
1840
  }).describe("Defines a polygon region of a ground plane");
1825
1841
  expectTypesMatch(true);
1826
1842
 
1827
1843
  // src/pcb/pcb_thermal_spoke.ts
1828
- import { z as z88 } from "zod";
1829
- var pcb_thermal_spoke = z88.object({
1830
- type: z88.literal("pcb_thermal_spoke"),
1844
+ import { z as z89 } from "zod";
1845
+ var pcb_thermal_spoke = z89.object({
1846
+ type: z89.literal("pcb_thermal_spoke"),
1831
1847
  pcb_thermal_spoke_id: getZodPrefixedIdWithDefault("pcb_thermal_spoke"),
1832
- pcb_ground_plane_id: z88.string(),
1833
- shape: z88.string(),
1834
- spoke_count: z88.number(),
1848
+ pcb_ground_plane_id: z89.string(),
1849
+ shape: z89.string(),
1850
+ spoke_count: z89.number(),
1835
1851
  spoke_thickness: distance,
1836
1852
  spoke_inner_diameter: distance,
1837
1853
  spoke_outer_diameter: distance,
1838
- pcb_plated_hole_id: z88.string().optional(),
1839
- subcircuit_id: z88.string().optional()
1854
+ pcb_plated_hole_id: z89.string().optional(),
1855
+ subcircuit_id: z89.string().optional()
1840
1856
  }).describe("Pattern for connecting a ground plane to a plated hole");
1841
1857
  expectTypesMatch(true);
1842
1858
 
1843
1859
  // src/cad/cad_component.ts
1844
- import { z as z89 } from "zod";
1845
- var cad_component = z89.object({
1846
- type: z89.literal("cad_component"),
1847
- cad_component_id: z89.string(),
1848
- pcb_component_id: z89.string(),
1849
- source_component_id: z89.string(),
1860
+ import { z as z90 } from "zod";
1861
+ var cad_component = z90.object({
1862
+ type: z90.literal("cad_component"),
1863
+ cad_component_id: z90.string(),
1864
+ pcb_component_id: z90.string(),
1865
+ source_component_id: z90.string(),
1850
1866
  position: point3,
1851
1867
  rotation: point3.optional(),
1852
1868
  size: point3.optional(),
1853
1869
  layer: layer_ref.optional(),
1854
- subcircuit_id: z89.string().optional(),
1870
+ subcircuit_id: z90.string().optional(),
1855
1871
  // These are all ways to generate/load the 3d model
1856
- footprinter_string: z89.string().optional(),
1857
- model_obj_url: z89.string().optional(),
1858
- model_stl_url: z89.string().optional(),
1859
- model_3mf_url: z89.string().optional(),
1860
- model_jscad: z89.any().optional()
1872
+ footprinter_string: z90.string().optional(),
1873
+ model_obj_url: z90.string().optional(),
1874
+ model_stl_url: z90.string().optional(),
1875
+ model_3mf_url: z90.string().optional(),
1876
+ model_jscad: z90.any().optional()
1861
1877
  }).describe("Defines a component on the PCB");
1862
1878
  expectTypesMatch(true);
1863
1879
 
1864
1880
  // src/any_circuit_element.ts
1865
- import { z as z90 } from "zod";
1866
- var any_circuit_element = z90.union([
1881
+ import { z as z91 } from "zod";
1882
+ var any_circuit_element = z91.union([
1867
1883
  source_trace,
1868
1884
  source_port,
1869
1885
  any_source_component,
@@ -1914,6 +1930,7 @@ var any_circuit_element = z90.union([
1914
1930
  pcb_fabrication_note_path,
1915
1931
  pcb_fabrication_note_text,
1916
1932
  pcb_autorouting_error,
1933
+ pcb_footprint_overlap_error,
1917
1934
  pcb_breakout_point,
1918
1935
  pcb_cutout,
1919
1936
  pcb_ground_plane,
@@ -1967,6 +1984,7 @@ export {
1967
1984
  pcb_cutout_rect,
1968
1985
  pcb_fabrication_note_path,
1969
1986
  pcb_fabrication_note_text,
1987
+ pcb_footprint_overlap_error,
1970
1988
  pcb_ground_plane,
1971
1989
  pcb_ground_plane_region,
1972
1990
  pcb_group,