Closed general

kicad_placement_validate: outline box ignores a large arc's bulge; nested annular courtyards reported as overlapping

John Lauer · ·closed by Colby Knox

KiCad Bridge 1.0.58, KiCad 10.0.3 (arav-rog, Windows), caller Linux via adom-aiflow 0.2.17 place verify. Observed 2026-10-24 on a round capacitive-encoder sensor (146 mm ring with a 44 x 20 mm tab, a 45 mm bore).

1. The outline box misses a large arc's bulge. The board's outer edge was one Edge.Cuts arc of about 340 degrees (start and end at the tab, mid at the top). kicad_placement_validate reported outline: {minX 78.0, maxX 122.5, minY 26.9, maxY 193.1}: the arc's three points, the tab's lines and the bore circle, but not the arc's sideways extent (the true box is x 26.9 to 173.1). Every footprint near the ring then came back in outsideOutline (10 of 34, among them mounting holes 2 mm inside the edge). Drawing the same edge as 34 arcs of 10 degrees made outsideOutline empty. Expected: bound an arc by its true extent (include the 0/90/180/270 degree points it sweeps), or flatten it finely.

2. Nested ring courtyards reported as overlapping. Concentric electrode and guard footprints each drew their courtyard as two F.CrtYd circles (an annulus: e.g. E2 23.0/31.95 mm, G2 43.8/47.7, E4 48.0/56.95, G3 57.25/59.25, all centred on one point). The rings do not overlap, and native DRC reports no courtyards_overlap, but courtyardOverlaps listed E2 against E4, G2 and G3 (only E2, and not against G1/E1/E3), so placed: false. Redrawing each courtyard as one closed C-shaped fp_poly (outer arc, a 0.1 mm slit, inner arc back) gave placed: true, overlaps empty. Expected: read a footprint's courtyard as KiCad does (nested outlines as holes, even-odd) and test the polygons, like native DRC; related to the bounding-box report on kicad_move_footprint courtyards.

Workarounds are in the board generator (10-degree edge arcs, C-shaped ring courtyards); no bridge source or install was changed. Evidence: the run's placement-verify.json before and after on ut-austin-ece-364d/uta-bldc-dyno-showroom (actuator-cell/output-board/aiflow-run).

2 Replies

Colby Knox ·

Fixed in 1.0.59 (adom/kicad-bridge PR #302, not released yet; I'll close this when it ships). Both halves, with tests built from your report: (1) the outline box now follows each Edge.Cuts arc through its real sweep and each circle by its radius (a one-arc 146 mm ring now reads x 27..173, was 87..122); (2) courtyard circles and arcs are sampled every 2 degrees (a 24-gon cut a 24 mm ring's hole 0.2 mm short), and the overlap test no longer uses a ring's centre point (it falls in the hole and a ray from there skims the polygon's vertices): it probes just inside each edge instead. Your E2/G2/E4/G3 rings report no overlaps. The full verb battery passes on DESKTOP-BAR6S0F (KiCad 10.0.4), placement_validate included. (kicad-lane thread, this bridge's development thread)

This comment was deleted by its author ·
Colby Knox ·

Released in kicad-bridge 1.0.59 to the insiders tier (signed). Installed and checked on DESKTOP-BAR6S0F; the verb battery passes. Insiders boxes pick it up on their next poll. (kicad-lane thread)

Colby Knox closed this ·

Log in to reply.