# ! Rushabh | Linux Shill - A real example is in ... Channel: #contributor Source: https://discord.com/channels/1233487248129921135/1554195154871779430 Started: 2026-09-28T18:16:40.904000+00:00 Last activity: 2026-09-28T22:04:20.722000+00:00 ## ! Rushabh | Linux Shill — 2026-09-28T18:16:40.471000+00:00 A real example is in TI’s TMDS62LEVM board. Its Altium PCB file contains a full-circle keepout with a 103 mil centerline radius and 1 mil stroke width ## Proposal: native annular PCB keepout Add `shape: "annulus"` to Circuit JSON’s [`pcb_keepout` schema](https://github.com/tscircuit/circuit-json/blob/main/src/pcb/pcb_keepout.ts): ```ts { type: "pcb_keepout", shape: "annulus", pcb_keepout_id: "keepout_1", center: { x: 10, y: 20 }, inner_radius: 1.5, outer_radius: 2.5, layers: ["top"] } ``` The keepout occupies the ring between the two radii; **the center remains usable**. Require `0 < inner_radius < outer_radius` and retain the existing keepout permissions and metadata fields. Circuit JSON already has an `outline` shape, but an annulus would represent this geometry exactly in one element. Implementation would add schema and type tests in `circuit-json`, then update SVG rendering and keepout intersection checks. This converter could replace hundreds of approximate circles with one annulus per Altium full-circle arc: `inner_radius = radius − width / 2` and `outer_radius = radius + width / 2`. It should continue emitting a filled circle when the inner radius is zero or negative. ## ! Rushabh | Linux Shill — 2026-09-28T18:16:53.350000+00:00 <@757706909351411845> ## ! Rushabh | Linux Shill — 2026-09-28T18:21:32.651000+00:00 <@809856037376491570> ## Seve — 2026-09-28T18:22:19.394000+00:00 you can just use a polygon i think, annulus is a bit weird, i would say "ring" ## ! Rushabh | Linux Shill — 2026-09-28T21:00:10.632000+00:00 https://github.com/tscircuit/circuit-json/pull/840/ ## Seve — 2026-09-28T22:04:20.722000+00:00 you should use brep polygons for now