← Commit history

regenerate after fusion-lane (reference/fusion360-1.12.8.json, public: KiCad's core and app proposals, 8 partial): Fusion 134 of 236

Colby Knox ·3186358d10 ·13d ago ·parent 3575e9f
4 files changed +74−33
README.md+4−4
@@ -57,12 +57,12 @@ verb by verb: [docs/coverage.md](docs/coverage.md). <!-- coverage:start (tools/generate.py writes this) --> | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---|-| **core** | 93 | 90 | 89 | 54 |-| **native** | 46 | 43 | 41 | 24 |+| **core** | 93 | 90 | 89 | 61 |+| **native** | 46 | 43 | 41 | 27 | | **checks** | 37 | 33 | 24 | 9 |-| **app** | 60 | 60 | 25 | 36 |+| **app** | 60 | 60 | 25 | 37 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 226 | 179 | 123 |+| standard (all but platform) | 236 | 226 | 179 | 134 | <!-- coverage:end -->  The **checks** tier is where the other bridges are furthest behind, and it is the cheapest to close: those verbs are
docs/coverage.md+16−16
@@ -1,17 +1,17 @@ # Coverage: every standard verb on each bridge -Altium bridge 0.2.77 (the reference), KiCad bridge 1.0.67, Fusion 360 bridge 1.12.7. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*.+Altium bridge 0.2.77 (the reference), KiCad bridge 1.0.67, Fusion 360 bridge 1.12.8. 54 verbs came from other bridges' proposals (tools/proposed/); they are marked *proposed*. `exact` is the same job under the same or an equivalent name; `partial` does part of it or does it differently (`verbs/coverage.json` names what in `note`); `unsupported` answers `not_supported` for the whole job and is not counted; blank is missing. Generated by `tools/generate.py` from `verbs/coverage.json`; do not edit by hand.  | Tier | Verbs | Altium | KiCad | Fusion 360 | |---|---|---|---|---|-| **core** | 93 | 90 | 89 | 54 |-| **native** | 46 | 43 | 41 | 24 |+| **core** | 93 | 90 | 89 | 61 |+| **native** | 46 | 43 | 41 | 27 | | **checks** | 37 | 33 | 24 | 9 |-| **app** | 60 | 60 | 25 | 36 |+| **app** | 60 | 60 | 25 | 37 | | **platform** | 19 | 19 | 0 | 0 |-| standard (all but platform) | 236 | 226 | 179 | 123 |+| standard (all but platform) | 236 | 226 | 179 | 134 |  ## core @@ -33,16 +33,16 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `component_pins` | Every pad of one board component with its net, position, layer, size and hole. | `altium_component_pins` | `kicad_component_pins` | `fusion_component_pins` | | `copper_layers` | Every copper layer Altium can address on the current board (top, mid 1-30, planes 1-16, bottom) with names and visibility. | `altium_copper_layers` | `kicad_copper_layers` | `fusion_copper_layers` | | `copy_footprint` | Duplicate a footprint inside the current PcbLib under a new name (every primitive replicated). | `altium_copy_footprint` | `kicad_copy_footprint` |  |-| `copy_routing` *proposed* | Copy the tracks and vias inside a box to an offset, remapping nets by pairing parts (a designator map or pattern), so a repeated channel gets the same... | `altium_copy_routing` | `kicad_copy_routing` |  |+| `copy_routing` *proposed* | Copy the tracks and vias inside a box to an offset, remapping nets by pairing parts (a designator map or pattern), so a repeated channel gets the same... | `altium_copy_routing` | `kicad_copy_routing` | `fusion_copy_routing` | | `create_footprint` | Create one footprint from a pad list in a PcbLib (the library is created and saved if the path does not exist) and return a proof frame. | `altium_create_footprint` | `kicad_create_footprint` |  | | `create_symbol` | Create one rectangular symbol from a pin list in a SchLib (the library is created and saved if the path does not exist) and return a proof frame. | `altium_create_symbol` | `kicad_create_symbol` |  | | `doc_params` | Read or set a sheet's document parameters: the title block (Title, DocumentNumber, Revision, DrawnBy, Author, CompanyName, ...). | `altium_doc_params` | `kicad_doc_params` (partial) |  |-| `edit_footprint` *proposed* | Edit a library footprint in place: change, delete, add or renumber pads; add, replace or delete graphics on a layer; set its description, tags and... |  | `kicad_fp_edit` |  |+| `edit_footprint` *proposed* | Edit a library footprint in place: change, delete, add or renumber pads; add, replace or delete graphics on a layer; set its description, tags and... |  | `kicad_fp_edit` | `fusion_edit_footprint` (partial) | | `edit_parts` *proposed* | Edit placed parts: value, designator, any field (add, change, remove), do-not-populate, exclusion from the BOM or position files, mounting type and the... | `altium_edit_parts` | `kicad_edit_parts` | `fusion_edit_parts` (partial) | | `find_symbol` | Find symbols (or footprints with kind:'footprint') by part of their name across libraries: the given ones, or every installed .SchLib/.PcbLib. | `altium_find_symbol` | `kicad_find_symbol` |  | | `footprint_primitives` | Geometry dump of one PLACED component: its tracks, arcs, pads (with solder and paste mask expansion in um) and texts in mils with layer ids; other primitive... | `altium_footprint_primitives` | `kicad_footprint_graphics` (partial) |  | | `generate_body` *proposed* | Make a part's 3D body from its package family and its datasheet dimensions (chip, SOIC, QFN, QFP, BGA, SOT-23, DFN, MELF, electrolytic can, crystal, pin... |  |  | `fusion_generate_body` |-| `import_svg` *proposed* | Import SVG artwork (a logo, a label) as filled polygons on a silkscreen, copper, mask or user layer, at a position and size; curves flattened, holes kept.... |  | `kicad_import_svg` |  |+| `import_svg` *proposed* | Import SVG artwork (a logo, a label) as filled polygons on a silkscreen, copper, mask or user layer, at a position and size; curves flattened, holes kept.... |  | `kicad_import_svg` | `fusion_import_svg` (partial) | | `layer_stack` | The CURRENT board's stack-up: copper layers in order with copper thickness and the dielectric under each (height, constant, material), and the total... | `altium_layer_stack` | `kicad_layer_stack` | `fusion_board_stackup` | | `layers` | The current board's layer set with ids, names, kind and whether each is displayed. | `altium_layers` | `kicad_layers` | `fusion_layers` | | `layers_in_use` | Which layers of the current board actually carry primitives: copper layers with copper (densest first) and every layer with anything on it. | `altium_layers_in_use` | `kicad_layers_in_use` | `fusion_layers_in_use` |@@ -57,9 +57,9 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `place_on_sch` | Place one symbol, or a ';' list of symbols, from the open SchLib on ONE new sheet (sheet sized FROM the measured parts: 500 mil gaps, 600 mil margins, A4... | `altium_place_on_sch` | `kicad_place_on_sch` |  | | `place_vias` | Place vias (through, top to bottom). One undo step, read back. | `altium_place_vias` | `kicad_add_via` | `fusion_place_vias` | | `plate_vias` | Make every drilled pad in a PcbLib a plated MULTI-LAYER pad (all footprints, or footprintName). adom-lbr writes heatsink vias as pads with a hole; Altium... | `altium_plate_vias` |  |  |-| `project_create` *proposed* | Create a new project folder with a project file, an empty schematic and an empty board (2 to 32 copper layers), with a title and text variables. | `altium_project_create` | `kicad_project_create` |  |-| `project_info` *proposed* | A project at a glance: name, files with sizes and dates, the sheet tree, the board (layers, parts, nets, size), text variables, net classes, last change,... | `altium_project_info` | `kicad_project_info` |  |-| `project_rename` *proposed* | Rename a project: the project file, the root sheet, the board and the tool's side files, with the references inside them updated. Refused while the tool has... | `altium_project_rename` | `kicad_project_rename` |  |+| `project_create` *proposed* | Create a new project folder with a project file, an empty schematic and an empty board (2 to 32 copper layers), with a title and text variables. | `altium_project_create` | `kicad_project_create` | `fusion_project_create` (partial) |+| `project_info` *proposed* | A project at a glance: name, files with sizes and dates, the sheet tree, the board (layers, parts, nets, size), text variables, net classes, last change,... | `altium_project_info` | `kicad_project_info` | `fusion_project_info` (partial) |+| `project_rename` *proposed* | Rename a project: the project file, the root sheet, the board and the tool's side files, with the references inside them updated. Refused while the tool has... | `altium_project_rename` | `kicad_project_rename` | `fusion_project_rename` (partial) | | `read_board` | ONE round trip: components, nets, layers, copper, rules, occupancy, outline. | `altium_read_board` | `kicad_board_summary` (partial) | `fusion_board_info / fusion_get_design_info` (partial) | | `read_footprint` *proposed* | Every detail of one library footprint: pads (number, type, shape, position, size, drill, layers), the layers it uses, its courtyard box, graphics per layer,... | `altium_read_footprint` | `kicad_read_footprint` | `fusion_read_footprint` | | `read_rules` | Every design rule on the current board, flat, disabled ones included: name, kind ordinal, enabled, priority, both scope expressions, comment, and Altium's... | `altium_read_rules` | `kicad_list_design_rules` | `fusion_read_rules` |@@ -101,7 +101,7 @@ Read and edit the design. Every bridge provides these: they are how an AI sees a | `sch_text` *proposed* | Add free text to a sheet (a note, a title, a design comment) with size, angle, justification, bold and italic. Text has no electrical meaning. One undo step. | `altium_sch_text` | `kicad_sch_text` | `fusion_sch_text` | | `sch_trace_point` *proposed* | Everything electrically connected at a point on a sheet: the wires, labels, pins, junctions, sheet pins and no-connect markers there, and for each net they... | `altium_sch_trace_point` | `kicad_sch_trace_point` | `fusion_sch_trace_point` | | `schematic_data` | Components on a schematic sheet (filePath, else the CURRENT sheet) with their pins (number, name, electrical type), position and orientation. designator... | `altium_schematic_data` | `kicad_sch_components` (partial) |  |-| `set_layer_count` *proposed* | Set the board's copper layer count (2, 4, 6 or 8): the layer table and the stack-up, keeping the board thickness. | `altium_set_layer_count` | `kicad_set_layer_count` |  |+| `set_layer_count` *proposed* | Set the board's copper layer count (2, 4, 6 or 8): the layer table and the stack-up, keeping the board thickness. | `altium_set_layer_count` | `kicad_set_layer_count` | `fusion_set_layer_count` | | `set_models` | Replace every footprint model on a SchLib component with ONE PCBLIB model (set_params footprint and add_models APPEND, which is how a symbol ends up with two). | `altium_set_models` | `kicad_footprint_models` (partial) |  | | `set_outline` | Reshape the current board's outline (a rectangle with rounded corners, or a polygon). One undo step. | `altium_set_outline` | `kicad_board_outline` | `fusion_set_outline` | | `set_params` | Set parameters on a SchLib component, optionally its comment, and optionally link a footprint by name. | `altium_set_params` | `kicad_set_params` |  |@@ -127,7 +127,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `cleanup_libs` | Remove the factory-default stray every fresh library carries: Component_1 from the current SchLib and an empty (no pads) PCBComponent_1 from the current PcbLib. | `altium_cleanup_libs` |  |  | | `compile` | Compile a project and return Altium's Messages panel (ERC + connectivity) with counts by class. With no path it compiles Altium's bundled example project. | `altium_compile` | `kicad_compile` |  | | `component_classes` | List, make or remove component classes on the board, each optionally with a room: a placement area that keeps its parts together (fitted around the parts or... | `altium_component_classes` |  |  |-| `create_part_project` *proposed* | Generate a small real project (schematic and board) around one library part, so the part can be shown and tested in every view: schematic, 2D board and 3D... | `altium_create_part_project` | `kicad_make_part_project` (partial) |  |+| `create_part_project` *proposed* | Generate a small real project (schematic and board) around one library part, so the part can be shown and tested in every view: schematic, 2D board and 3D... | `altium_create_part_project` | `kicad_make_part_project` (partial) | `fusion_make_test_project` (partial) | | `diff_pairs` | Differential pairs on the current board: list them, define one from two nets (replacing a pair of that name), or remove one. Altium's differential-pair... | `altium_diff_pairs` | `kicad_diff_pairs` (partial) |  | | `export_bom` | Bill of materials export: altium_run_outjob with the assembly OutJob and the 'Folder Structure' medium as defaults. | `altium_export_bom` | `kicad_export_bom_csv` (partial) | `fusion_export_bom / fusion_board_bom` | | `export_dxf` *proposed* | Export chosen board layers to DXF, one file per layer (the outline, panel drawings, stencils, enclosure work). |  | `kicad_export_dxf` | `fusion_export_dxf` |@@ -135,7 +135,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `export_gerber` | Gerber/drill export: altium_run_outjob with the fabrication OutJob and the 'Folder Structure' medium as defaults. | `altium_export_gerber` | `kicad_export_gerber` | `fusion_export_gerbers` | | `export_ipc2581` *proposed* | Export the board as IPC-2581: one XML file with copper, drill, stack-up, netlist and BOM, through the tool's own exporter. | `altium_export_ipc2581` | `kicad_export_ipc2581` | `fusion_export_ipc2581` (partial) | | `export_ipc356` *proposed* | Export the IPC-D-356 netlist of the board, for bare-board electrical test (flying probe or bed of nails). |  | `kicad_export_ipc356` | `fusion_export_ipc356` |-| `export_library_part` *proposed* | Export one library part into its own small library files: a symbol library with only its symbol, a footprint library with only its footprint, and its 3D... | `altium_export_library_part` | `kicad_export_part` (partial) |  |+| `export_library_part` *proposed* | Export one library part into its own small library files: a symbol library with only its symbol, a footprint library with only its footprint, and its 3D... | `altium_export_library_part` | `kicad_export_part` (partial) | `fusion_export_library_part` (partial) | | `export_manufacturing` | A project's manufacturing set in one call: Gerbers, NC drill, pick and place (CSV, mm) and the BOM, from an OutJob the bridge writes beside the project... | `altium_export_manufacturing` | `kicad_export_gerber / kicad_export_pos` (partial) | `fusion_export_gerbers / fusion_export_cpl / fusion_export_bom` (partial) | | `export_odb` *proposed* | Export the board as ODB++ (copper, drill, stack-up, netlist and parts in one archive) through the tool's own exporter. | `altium_export_odb` | `kicad_export_odb` | `fusion_export_odb` | | `export_pdf` | Every sheet of a project as one PDF, plus on request the board's composite print, Altium's assembly drawings (top and bottom, designators on the parts) and... | `altium_export_pdf` | `kicad_export_pdf` |  |@@ -148,7 +148,7 @@ Wraps the EDA tool's own feature (its DRC, ERC, Gerbers, pours, Update PCB). Eve | `panelize` | Step and repeat a board into a manufacturing panel: a new .PcbDoc holding Altium's own embedded board array of the board (rows x cols), with rails, the... | `altium_panelize` | `kicad_panelize` (partial) |  | | `pcb_report` | Numbers instead of pixels: for a PcbLib, every footprint's pads, pad bounding box, primitive census and 3D bodies; for a board, outline, components with... | `altium_pcb_report` | `kicad_errors` (partial) |  | | `pour_state` | Every polygon pour with the copper it actually poured: filled area per pour and per layer, and the pours that poured nothing. | `altium_pour_state` | `kicad_zone_state` | `fusion_pour_state` |-| `project_snapshot` *proposed* | A dated copy of the project's documents into <project>/snapshots/<stamp>[-label]/, with PDFs of the schematic and the board made by the tool. | `altium_project_snapshot` | `kicad_project_snapshot` |  |+| `project_snapshot` *proposed* | A dated copy of the project's documents into <project>/snapshots/<stamp>[-label]/, with PDFs of the schematic and the board made by the tool. | `altium_project_snapshot` | `kicad_project_snapshot` | `fusion_project_snapshot` (partial) | | `remove_pours` | Delete polygon pours by net (and layer), or all of them, and the pour keepouts (cutouts) apply_pours made. Tracks and vias are untouched. | `altium_remove_pours` | `kicad_remove_zone` | `fusion_remove_pours` | | `render_board_3d` *proposed* | Render a 3D picture of the board from one side to an image file, through the tool's own renderer, without opening a window. | `altium_render_board_3d` | `kicad_render_board_3d` | `fusion_render_board_3d` | | `render_board_layers` *proposed* | Render chosen board layers to an image file without opening a window: a preset view (copper, silkscreen, solder mask, paste, outline, drill, assembly or... | `altium_render_board_layers` | `kicad_export_svg` (partial) | `fusion_export_board_image` (partial) |@@ -227,7 +227,7 @@ Driving the application itself (launch, licence, dialogs, windows, views). Each | `close_all_documents` *proposed* | Close every open document without a save dialog. Unsaved work is never lost by default: a document with unsaved changes stays open and is listed, unless... | `altium_close_all_documents` |  | `fusion_close_all_documents` | | `close_document` | Close ONE open document by path through its document handle. Never saves. | `altium_close_document` |  | `fusion_close_document` | | `connect_workspace` | Open Altium's workspace picker (the 'Not Connected' menu) and return a screenshot with a coordMap. The list is a custom control with no UIA children, so the... | `altium_connect_workspace` |  |  |-| `cross_probe` *proposed* | From a schematic part to the board part linked to it, and back, by designator, the schematic symbol's id or its sheet path; optionally select them in the tool. | `altium_cross_probe` | `kicad_cross_probe` |  |+| `cross_probe` *proposed* | From a schematic part to the board part linked to it, and back, by designator, the schematic symbol's id or its sheet path; optionally select them in the tool. | `altium_cross_probe` | `kicad_cross_probe` | `fusion_cross_probe` | | `demo` | The tour. Default: one background beat per call with a screenshot. live:true = the narrated FOREGROUND show: ab caption + document + in-bridge camera... | `altium_demo` | `kicad_demo` | `fusion_demo` | | `describe` | This list - the bridge's verbs and schemas for ab's Verbs tab. | `altium_describe` | `kicad_describe` | `fusion_describe` | | `diagnostics` | Bridge-side facts for a bug report: environment variables, every Altium install found, Altium's windows, the agent status block and the cache directory. | `altium_diagnostics` | `kicad_diagnostics` |  |
verbs/coverage.json+53−12
@@ -7,7 +7,7 @@  "proposed": 54,  "compared": {   "kicad": "1.0.67",-  "fusion360": "1.12.7"+  "fusion360": "1.12.8"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",@@ -253,7 +253,10 @@     "verb": "kicad_copy_routing",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_copy_routing",+    "match": "exact"+   }   },   {    "name": "create_footprint",@@ -307,7 +310,11 @@     "verb": "kicad_fp_edit",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_edit_footprint",+    "match": "partial",+    "note": "models refused (3D packages are cloud links); an EAGLE package has no tags or attributes, so metadata is the description only"+   }   },   {    "name": "edit_parts",@@ -375,7 +382,11 @@     "verb": "kicad_import_svg",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_import_svg",+    "match": "partial",+    "note": "silkscreen, mask, paste and documentation layers; filled shapes are drawn as rectangles row by row, since Fusion's POLYGON asks for a signal name in a modal; copper and net refused"+   }   },   {    "name": "layer_stack",@@ -606,7 +617,11 @@     "verb": "kicad_project_create",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_project_create",+    "match": "partial",+    "note": "2, 4, 6 or 8 copper layers; fabRules recorded only; the design opens unsaved (fusion_save_to_cloud saves it)"+   }   },   {    "name": "project_info",@@ -620,7 +635,11 @@     "verb": "kicad_project_info",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_project_info",+    "match": "partial",+    "note": "the design must be open; Fusion has no text variables"+   }   },   {    "name": "project_rename",@@ -634,7 +653,11 @@     "verb": "kicad_project_rename",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_project_rename",+    "match": "partial",+    "note": "a design kept as EAGLE files; a Fusion cloud design is renamed in its data panel"+   }   },   {    "name": "read_board",@@ -1317,7 +1340,10 @@     "verb": "kicad_set_layer_count",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_set_layer_count",+    "match": "exact"+   }   },   {    "name": "set_models",@@ -1589,7 +1615,11 @@     "verb": "kicad_make_part_project",     "match": "partial"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_make_test_project",+    "match": "partial",+    "note": "the part on a small board in a new, unsaved design; libraryPath is required; Fusion names and places the design, so projectName, outputDir and overwrite do not apply"+   }   },   {    "name": "diff_pairs",@@ -1712,7 +1742,11 @@     "verb": "kicad_export_part",     "match": "partial"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_export_library_part",+    "match": "partial",+    "note": "one .lbr holds the symbol and the footprint (a Fusion library keeps them together); no model file: 3D packages are cloud items, listed by URN"+   }   },   {    "name": "export_manufacturing",@@ -1916,7 +1950,11 @@     "verb": "kicad_project_snapshot",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_project_snapshot",+    "match": "partial",+    "note": "a Fusion design is cloud files, not a folder: the snapshot goes to outputDir (default Documents/Adom Snapshots/<design>)"+   }   },   {    "name": "remove_pours",@@ -2814,7 +2852,10 @@     "verb": "kicad_cross_probe",     "match": "exact"    },-   "fusion360": null+   "fusion360": {+    "verb": "fusion_cross_probe",+    "match": "exact"+   }   },   {    "name": "demo",
verbs/standard.json+1−1
@@ -7,7 +7,7 @@  "proposed": 54,  "compared": {   "kicad": "1.0.67",-  "fusion360": "1.12.7"+  "fusion360": "1.12.8"  },  "tiers": {   "core": "Read and edit the design. Every bridge provides these: they are how an AI sees and changes a board.",