Skip to content

Add courtyard rectangle support from kicad_mod files#186

Open
rkluis wants to merge 2 commits intotscircuit:mainfrom
rkluis:add-courtyard-support
Open

Add courtyard rectangle support from kicad_mod files#186
rkluis wants to merge 2 commits intotscircuit:mainfrom
rkluis:add-courtyard-support

Conversation

@rkluis
Copy link
Copy Markdown

@rkluis rkluis commented Feb 27, 2026

Summary

  • Parses fp_rect elements on F.CrtYd/B.CrtYd layers from kicad_mod files and converts them to pcb_courtyard_rect circuit-json elements
  • Detects rectangle shapes formed by 4 fp_line segments on courtyard layers and converts them to pcb_courtyard_rect
  • Adds FpRect zod schema/type definition for fp_rect S-expression parsing
  • Maps courtyard KiCad layers (F.CrtYd -> top, B.CrtYd -> bottom) in layer conversion

Changes

  • src/kicad-zod.ts: Added fp_rect_def schema and FpRect type, added fp_rects to kicad_mod_json_def
  • src/parse-kicad-mod-to-kicad-json.ts: Added parsing of fp_rect elements from kicad_mod S-expressions
  • src/convert-kicad-json-to-tscircuit-soup.ts: Added courtyard detection from both fp_rect and fp_line elements, outputting pcb_courtyard_rect elements

Test plan

  • Test courtyard from fp_rect using existing DIP-10_W10.16mm.kicad_mod fixture
  • Test courtyard from fp_line rectangle using existing R_01005_0402Metric.kicad_mod fixture
  • Test both front and back courtyard layers with custom test fixture
  • All 19 tests pass (16 existing + 3 new)

Closes tscircuit/tscircuit#1081

🤖 Generated with Claude Code

Parse fp_rect and fp_line elements on F.CrtYd/B.CrtYd layers and
convert them to pcb_courtyard_rect circuit-json elements.

- Add FpRect zod schema and type for fp_rect parsing
- Parse fp_rect elements from kicad_mod S-expressions
- Convert fp_rect on CrtYd layers to pcb_courtyard_rect
- Detect rectangle shapes formed by 4 fp_line segments on CrtYd layers
- Add courtyard layers to tscircuit layer mapping
- Add tests for fp_rect courtyard, fp_line courtyard, and both layers

Closes tscircuit/tscircuit#1081

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Feb 27, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
kicad-component-converter Error Error Feb 27, 2026 9:53am

Request Review

- Fix TypeScript compilation error: use stroke normalization pattern
  in fp_rects push instead of passing raw `width` field
- Fix import conventions in courtyard test files: use node:fs/node:path,
  merge duplicate imports from "src"
- Replace hardcoded ternary with convertKicadLayerToTscircuitLayer() in
  courtyard fp_line code path for consistency
- Add debug() logging when skipping non-courtyard fp_rect elements and
  when courtyard lines don't form a recognized rectangle
- Run biome format and biome check --fix across src/ and tests/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make sure kicad component components create courtyards

1 participant