diff --git a/README.md b/README.md index ea479e2..7654198 100644 --- a/README.md +++ b/README.md @@ -1880,6 +1880,7 @@ interface PcbGroup { layout_mode?: string autorouter_configuration?: { trace_clearance: Length + allow_via_in_pad?: boolean } autorouter_used_string?: string } diff --git a/src/pcb/pcb_group.ts b/src/pcb/pcb_group.ts index b86c8a3..c528764 100644 --- a/src/pcb/pcb_group.ts +++ b/src/pcb/pcb_group.ts @@ -47,6 +47,12 @@ export const pcb_group = z autorouter_configuration: z .object({ trace_clearance: length, + allow_via_in_pad: z + .boolean() + .optional() + .describe( + "Allows the autorouter to place vias inside connected pads. Omitted or false keeps via-in-pad routing disabled.", + ), }) .optional(), autorouter_used_string: z.string().optional(), @@ -83,6 +89,7 @@ export interface PcbGroup { layout_mode?: string autorouter_configuration?: { trace_clearance: Length + allow_via_in_pad?: boolean } autorouter_used_string?: string } diff --git a/tests/pcb_group_autorouter.test.ts b/tests/pcb_group_autorouter.test.ts index cbaf12d..2d8f06e 100644 --- a/tests/pcb_group_autorouter.test.ts +++ b/tests/pcb_group_autorouter.test.ts @@ -16,6 +16,24 @@ test("pcb_group.autorouter_configuration.trace_clearance parses", () => { expect(group.autorouter_configuration?.trace_clearance).toBe(0.2) }) +test("pcb_group.autorouter_configuration.allow_via_in_pad parses", () => { + const group = pcb_group.parse({ + type: "pcb_group", + source_group_id: "g1", + center: { x: 0, y: 0 }, + width: 10, + height: 10, + pcb_component_ids: [], + autorouter_configuration: { + trace_clearance: 0.2, + allow_via_in_pad: true, + }, + }) + + expect(group.autorouter_configuration?.allow_via_in_pad).toBe(true) + expect(group.autorouter_configuration?.trace_clearance).toBe(0.2) +}) + test("pcb_group.autorouter_used_string is optional", () => { const group = pcb_group.parse({ type: "pcb_group",