On-site developer tooling for the Altium binary formats. Everything here is for manual,
local use only — none of it is part of the automated test suite, and none of it runs in
CI. (CI verifies Altium-readability through the independent pyaltiumlib oracle in
tests/integration/.)
| Path | What it is | Needs Altium? |
|---|---|---|
Verify-Libraries.ps1 |
Launch Altium to confirm a .PcbLib/.SchLib opens cleanly |
Yes |
Generate-Samples.ps1 |
Launch Altium to author the sample libraries | Yes |
Resolve-AltiumExe.ps1 |
Shared helper: read ALTIUM_EXE from the repo-root .env.local |
— |
altium/ |
The DelphiScript automation the launchers run | Yes |
samples/ |
Altium-authored sample libraries (ground truth for the tests) | No |
The launchers do not auto-discover Altium, because multiple versions may be installed and
the wrong one could be picked. Copy the repo-root .env.local.example
to .env.local (gitignored, per-machine) and set the path to your X2.EXE:
ALTIUM_EXE=C:\Program Files\Altium\AD24\X2.EXEOr pass -AltiumExe <path> to either launcher to override.
DelphiScript that drives a real, locally-installed Altium Designer (developed against AD24)
through Altium's RunScript CLI. Because it needs the GUI application and a licence, it
cannot run in CI.
| Path | Role |
|---|---|
altium/verify/ |
AltiumVerify.pas — opens each library and reports PASS/FAIL (run by Verify-Libraries.ps1) |
altium/generate/ |
GenerateSamples.pas — authors the sample libraries (run by Generate-Samples.ps1) |
The RunScript launch and the file-based request/response bridge are adapted from
coffeenmusic/altium-mcp (MIT).
Altium-authored reference libraries, generated on-site by Generate-Samples.ps1 and committed
as binaries (like AltiumSharp's TestData) so CI can read them without Altium. They are the
ground truth the reader and round-trip tests validate against. See
samples/README.md.
Building the sample set is iterative: generate → read back with the Rust tests → extend the authoring script's primitive coverage → regenerate. The
samples/folder is empty until the first set lands.
Working on the DelphiScript automation in altium/? Altium's official scripting docs:
- DelphiScript language guide
— the language reference for the
.passcripts. - Scripting Examples Reference — worked examples (creating PCB/Schematic objects, saving documents, etc.).
- Scripting API Objects
— the
IPCB_*/ISch_*interface reference (note: last revised for an older AD version).