diff --git a/src/any_soup_element.ts b/src/any_soup_element.ts index 8cb2858..11d922e 100644 --- a/src/any_soup_element.ts +++ b/src/any_soup_element.ts @@ -37,6 +37,7 @@ export const any_soup_element = z.union([ pcb.pcb_silkscreen_text, pcb.pcb_silkscreen_rect, pcb.pcb_silkscreen_circle, + pcb.pcb_silkscreen_oval, pcb.pcb_trace_error, pcb.pcb_placement_error, pcb.pcb_port_not_matched_error, diff --git a/src/pcb/index.ts b/src/pcb/index.ts index 5345e24..88e90ac 100644 --- a/src/pcb/index.ts +++ b/src/pcb/index.ts @@ -21,5 +21,6 @@ export * from "./pcb_silkscreen_path" export * from "./pcb_silkscreen_text" export * from "./pcb_silkscreen_rect" export * from "./pcb_silkscreen_circle" +export * from "./pcb_silkscreen_oval" export * from "./pcb_fabrication_note_text" export * from "./pcb_fabrication_note_path" diff --git a/src/pcb/pcb_silkscreen_oval.ts b/src/pcb/pcb_silkscreen_oval.ts new file mode 100644 index 0000000..f2bcaf4 --- /dev/null +++ b/src/pcb/pcb_silkscreen_oval.ts @@ -0,0 +1,19 @@ +import { z } from "zod" +import { distance } from "../units" +import { layer_ref, visible_layer } from "./properties/layer_ref" +import { point } from "src/common/point" + +export const pcb_silkscreen_oval = z + .object({ + type: z.literal("pcb_silkscreen_oval"), + pcb_silkscreen_oval_id: z.string(), + pcb_component_id: z.string(), + center: point, + radius_x: distance, + radius_y: distance, + layer: visible_layer, + }) + .describe("Defines a silkscreen oval on the PCB"); + +export type PcbSilkscreenOval = z.infer +export type PcbSilkscreenOvalInput = z.input