skill
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.
← Commit history
fusion-lane: propose export_3d, import_design, edit_pours (#29, agreed by kicad-lane); Fusion's partial equivalents
2 files changed
+138
tools/equivalents/fusion360.json+15@@ -549,5 +549,20 @@ "fusion_export_cpl", "partial", "the Component Placement List CSV in mm, side all, top or bottom; JLCPCB's own CPL columns come from fusion_jlcpcb_order (cpl-jlcpcb.csv). No ascii or gerber format, inch units, smdOnly or excludeDnp filter"+ ],+ "export_3d": [+ "fusion_export_cloud_file",+ "partial",+ "the board's 3D PCB design in stl, iges, sat or f3d (obj, 3mf, fbx and usdz through fusion_export_obj, fusion_export_3mf, fusion_export_fbx, fusion_export_usdz; a web glb through fusion_export_optimized_glb); vrml and ply are not offered"+ ],+ "import_design": [+ "fusion_new_electronics_from_eagle",+ "partial",+ "format eagle only: an EAGLE .sch and its .brd into a new Fusion electronics design with the parts instantiated (Fusion's own import, run in the background)"+ ],+ "edit_pours": [+ "fusion_change_pours",+ "partial",+ "each pour's minimum width (EAGLE's pen width) and clearance (isolate), refilled and read back; thermals, rank and net are not changed yet" ] }
tools/proposed/fusion-lane.json+123@@ -304,5 +304,128 @@ "agreedBy": [ "altium-lane" ]+ },+ {+ "name": "export_3d",+ "tier": "native",+ "summary": "Export the board's 3D model in a mesh or CAD format other than STEP (export_step has STEP), through the tool's own exporter, with an optional web-optimized glb. format is an open list; each bridge answers the ones its tool writes.",+ "input": {+ "filePath": "the board (optional; default the open board)",+ "format": "the file format, an open list (stl, obj, glb, 3mf, iges, vrml, ply, brep, xao, u3d, ...); required",+ "outputPath": "the file to write",+ "components": "bool, default true: parts' 3D models too, not only the bare board",+ "web": "bool (glb only): optimized for a web viewer (merged meshes, compressed)"+ },+ "output": {+ "path": "the file written",+ "format": "string",+ "bytes": "int",+ "components": "bool"+ },+ "hint": "One call per format. A format the tool cannot write is refused by name with not_supported, never faked through another format.",+ "pitfalls": [+ "Mesh formats are triangulated: use export_step for mechanical CAD that needs exact surfaces."+ ],+ "related": [+ "export_step",+ "render_board_3d",+ "bodies"+ ],+ "example": {+ "format": "glb",+ "outputPath": "C:/out/board.glb",+ "web": true+ },+ "longRunning": false,+ "timeoutSeconds": 300,+ "proposedBy": "fusion-lane",+ "since": "0.28.1",+ "agreedBy": [+ "standard-lane",+ "kicad-lane"+ ]+ },+ {+ "name": "import_design",+ "tier": "native",+ "summary": "Bring a design from another tool into a NEW native design with the parts instantiated: an EAGLE .sch with its paired .brd, a KiCad project, or an Altium project, through the tool's own importer.",+ "input": {+ "format": "the source tool, an open list (eagle, kicad, altium, pads, cadstar, fabmaster, pcad, ...); required",+ "filePath": "the schematic or project file (required)",+ "boardPath": "the paired board file, when the format keeps it separate",+ "name": "the new design's name"+ },+ "output": {+ "design": "the new design or project",+ "parts": "int",+ "nets": "int",+ "warnings": "[string]: what the importer could not bring over"+ },+ "hint": "The import makes a new design and never changes the source files. Check the result with schematic_review and cross_check.",+ "pitfalls": [+ "A format the tool has no importer for is refused by name with not_supported.",+ "A tool whose command-line importer reads only the board (KiCad's kicad-cli pcb import) says that the schematic was not imported and how to bring it."+ ],+ "related": [+ "import_kicad",+ "cross_check",+ "schematic_review"+ ],+ "example": {+ "format": "eagle",+ "filePath": "C:/proj/board.sch",+ "boardPath": "C:/proj/board.brd"+ },+ "longRunning": true,+ "timeoutSeconds": 600,+ "proposedBy": "fusion-lane",+ "since": "0.28.1",+ "agreedBy": [+ "standard-lane",+ "kicad-lane"+ ]+ },+ {+ "name": "edit_pours",+ "tier": "native",+ "summary": "Change existing pours in place without redrawing them: clearance, minimum width, thermal relief (on/off, spoke width, gap), priority or rank, the net, and whether islands are kept. The copper is refilled and read back.",+ "input": {+ "pours": "[{id or net+layer, clearanceMm?, minWidthMm?, thermals?: {on, spokeMm, gapMm}, priority?, net?, keepIslands?}] (required)",+ "expectedRevision": "string",+ "dryRun": "bool"+ },+ "output": {+ "edited": "[{id, before, after}]",+ "pourState": "the pours after refill, as pour_state answers",+ "revision": "string",+ "mutated": "bool"+ },+ "hint": "pour_state lists the pours and their ids first. One undo step; a pour that refills to nothing is reported, not hidden.",+ "pitfalls": [+ "Changing the net of a pour reconnects copper: run_drc afterwards."+ ],+ "related": [+ "pour_state",+ "apply_pours",+ "remove_pours",+ "repour"+ ],+ "example": {+ "pours": [+ {+ "net": "GND",+ "layer": "B.Cu",+ "clearanceMm": 0.3+ }+ ]+ },+ "longRunning": false,+ "timeoutSeconds": 120,+ "proposedBy": "fusion-lane",+ "since": "0.28.1",+ "agreedBy": [+ "standard-lane",+ "kicad-lane"+ ] } ]