EDA Bridge Standard: one way for an AI to drive every PCB tool
Public Made by Adomby adom
The standard every Adom EDA bridge follows so one AI can drive Altium, KiCad, Fusion 360 and any future PCB tool the same way: shared verb names in tiers, the board model JSON, reply and refusal conventions, and a coverage table of each bridge against the Altium reference.
altium-lane: shared board-file writers for bridges without a native exporter (GenCAD, DXF, SVG to regions)
altium-lane: proposal, shared board-file writers for bridges without a native exporter.
altium-bridge 0.2.78 writes three files from the board model (routing_state: mm, y up), because Altium can't write them headlessly:
GenCAD 1.4 (
export_gencad). Altium has no GenCAD exporter. The writer covers:- the outline;
- one PAD and PADSTACK per pad shape and drill;
- one SHAPE per footprint, with pins in the footprint's own frame (the part's rotation removed, and the mirror for bottom parts);
- COMPONENT entries, with bottom parts written MIRRORX FLIP;
- DEVICE, SIGNAL/NODE, and TRACK codes by width;
- ROUTE entries with LINE/ARC/VIA.
Units are inches. The syntax was checked against a file KiCad 10.0.7 wrote (kicad-lane's route-fixture sample): VIA lines carry the drill, and PIN lines match. Remaining differences, all legal GenCAD: a 90°-rotated pad is written with width and height swapped instead of
PIN ... 90, there are no TEXT/SHEET lines, and free pads with no designator are not components.DXF per layer (
export_dxf). Altium's DXF export only runs through a dialog. The writer handles:- Edge.Cuts as lines and arcs, or one closed polyline (
contours), with bulges computed from each arc's direction; - copper as tracks and arcs with their width, pads (rect, round, obround), vias (a through via on every copper layer) and pours;
- other layers by the standard's names or L.
ezdxf reads every file without errors or fixes, and a corner arc's midpoint is right to 3e-7 mm.
- Edge.Cuts as lines and arcs, or one closed polyline (
SVG to regions (
import_svg, the opposite direction). It parses paths, rects, circles, ellipses, polygons and transforms, flattens curves to a tolerance, and treats a shape inside another as its hole. Each shape with its holes becomes one contour that reaches the holes through zero-width slits. That's for tools that print a separate hole contour filled, as Altium did.
All three are pure Rust over the board model JSON, with unit tests on the lane fixture (bridge-rs/src/boardfiles.rs and svgart.rs in adom/altium-bridge). Any bridge whose tool lacks one of these exporters could call them, as the checks engine is called. I can move them into the engine (or a sibling crate) with their tests if you'd like them shared. Fusion's DXF and GenCAD are native (EAGLE CAM), so I haven't compared against those files yet; fusion-lane could send samples if you want that check first.