← Commit history

kicad-lane: the seven accepted verbs from #29, and KiCad's answers for place_parts, edit_tracks, extensions and physical_properties

Colby Knox ·cd059d5684 ·8d ago ·parent 762e85a
2 files changed +301
tools/equivalents/kicad.json+20
@@ -88,6 +88,11 @@   "exact",   "a library footprint (.kicad_mod); kicad_edit_footprint is another job: it edits footprints placed on a board (fields, attributes, lock)"  ],+ "edit_tracks": [+  "modify_track",+  "partial",+  "the standard's tracks list is KiCad's changes list; the verb under the standard's name is coming"+ ],  "ensure_licensed": [   "readiness",   "partial",@@ -102,6 +107,11 @@   "unsupported",   "KiCad needs no extension installed inside it: its IPC API is built in (kicad_readiness reports ipcApi), so there is nothing to install, ping or keep a receipt for"  ],+ "extensions": [+  "pcm_list / pcm_install / pcm_uninstall",+  "partial",+  "three verbs for KiCad's Plugin and Content Manager; one verb under the standard's name is coming"+ ],  "import_part": [   "install_footprint + install_symbol",   "partial",@@ -155,10 +165,20 @@   "errors",   "partial"  ],+ "physical_properties": [+  "physical_properties",+  "unsupported",+  "KiCad has no materials or masses on a part"+ ],  "place_on_pcb": [   "place_footprint / add_footprint",   "exact"  ],+ "place_parts": [+  "add_footprint",+  "partial",+  "one footprint or one row per call, not a parts list; the verb under the standard's name is coming"+ ],  "place_vias": [   "add_via",   "exact"
tools/proposed/kicad-lane.json+281
@@ -2305,5 +2305,286 @@    "standard-lane",    "fusion-lane"   ]+ },+ {+  "name": "sch_no_connect",+  "tier": "core",+  "summary": "Put a no-connect marker on a sheet, at a point or on a pin, or remove one by its sch_items id. One undo step.",+  "input": {+   "sheet": "path to the schematic sheet file (required)",+   "at": "[x, y] mm: a point",+   "points": "[[x, y]] mm: several points",+   "pin": "designator.pin, e.g. U1.12",+   "pins": "[designator.pin]",+   "id": "a marker's id from sch_items (with remove)",+   "remove": "bool, default false: remove the marker at id or at",+   "dryRun": "bool, default false: answer the plan and change nothing",+   "save": "bool, default true: save the sheet after the edit"+  },+  "output": {+   "added": "[{id, at}]",+   "removed": "[id]",+   "failed": "[{item, error}]",+   "saved": "bool"+  },+  "hint": "Use it for a pin left open on purpose, so the ERC stops reporting it. sch_items {kinds:[noConnects]} lists the markers with their ids.",+  "pitfalls": [+   "A bridge whose tool has no such marker answers not_supported, with the reason (Fusion's schematic has none)."+  ],+  "related": [+   "sch_items",+   "sch_connect",+   "run_erc"+  ],+  "example": {+   "sheet": "C:/proj/board.kicad_sch",+   "pin": "U1.12"+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane"+  ]+ },+ {+  "name": "sch_label",+  "tier": "core",+  "summary": "Put a net label on an existing wire at a point, or delete one. sch_connect labels a pin through a new stub, and sch_edit_label changes labels that already exist.",+  "input": {+   "sheet": "path to the schematic sheet file (required)",+   "text": "the net name (required to add)",+   "at": "[x, y] mm: a point on the wire",+   "kind": "local|global|hierarchical, default local",+   "rotation": "0|90|180|270, default 0",+   "remove": "bool, default false: delete the label named by id, or by text with at",+   "id": "a label's id from sch_items (with remove)",+   "dryRun": "bool, default false: answer the plan and change nothing",+   "save": "bool, default true: save the sheet after the edit"+  },+  "output": {+   "label": "{id, text, kind, at, rotation} when added",+   "removed": "[id]",+   "saved": "bool"+  },+  "hint": "The label names the net of the wire it touches: check with sch_trace_point at the same point, or netlist.",+  "pitfalls": [+   "A label placed where no wire runs connects nothing, and is reported by the ERC, not by this verb."+  ],+  "related": [+   "sch_connect",+   "sch_edit_label",+   "sch_items",+   "sch_trace_point"+  ],+  "example": {+   "sheet": "C:/proj/board.kicad_sch",+   "text": "VIN",+   "at": [+    63.5,+    54.61+   ]+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane",+   "fusion-lane"+  ]+ },+ {+  "name": "sch_wire",+  "tier": "core",+  "summary": "Draw a wire through given points on a sheet, in the same units as the other sch_* wiring verbs. One undo step.",+  "input": {+   "sheet": "path to the schematic sheet file (required)",+   "points": "[[x, y], ...] mm, two or more (required)",+   "junctions": "bool, default true: add a junction where the wire ends on another wire",+   "dryRun": "bool, default false: answer the plan and change nothing",+   "save": "bool, default true: save the sheet after the edit"+  },+  "output": {+   "wires": "[{id, from, to}] one per segment",+   "junctionsAdded": "[{id, at}]",+   "saved": "bool"+  },+  "hint": "For wiring between points that aren't pins, such as a bus of stubs or a route around a part. sch_connect_pins draws between two pins and works out the path.",+  "pitfalls": [+   "Points that are not on the sheet's grid may not reach a pin: read the pin's position first with sch_pins."+  ],+  "related": [+   "sch_connect_pins",+   "sch_split_wire",+   "sch_delete_wire",+   "sch_items"+  ],+  "example": {+   "sheet": "C:/proj/board.kicad_sch",+   "points": [+    [+     50.8,+     54.61+    ],+    [+     76.2,+     54.61+    ]+   ]+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane"+  ]+ },+ {+  "name": "place_parts",+  "tier": "core",+  "summary": "Put footprints from a library onto the current board, each with its position, rotation and side, and read them back. One undo step.",+  "input": {+   "filePath": "the board (default the current one)",+   "parts": "[{library, footprint, ref?, value?, x, y, rotation?: 0, side?: top|bottom, nets?: {pad: net}}] mm and degrees (required)",+   "dryRun": "bool, default false: answer the plan and change nothing",+   "expectedRevision": "optional: refused with stale_board if the board changed"+  },+  "output": {+   "results": "[ok|err:...] per part",+   "placed": "[{ref, x, y, rotation, side}]",+   "revision": "string"+  },+  "hint": "For parts with no sheet behind them: mounting hardware, test points, or a board built without a schematic. A taken designator is refused and the next free one is named.",+  "pitfalls": [+   "On a board with a schematic, parts normally arrive through update_pcb: a part placed here is on no sheet, and the next update_pcb lists it in removeParts.",+   "Fusion's linked board is partial: only a standalone board takes a direct add."+  ],+  "related": [+   "update_pcb",+   "move_parts",+   "remove_parts",+   "routing_state"+  ],+  "example": {+   "parts": [+    {+     "library": "Resistor_SMD",+     "footprint": "R_0603_1608Metric",+     "ref": "R12",+     "x": 120.0,+     "y": 95.0+    }+   ]+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane"+  ]+ },+ {+  "name": "edit_tracks",+  "tier": "native",+  "summary": "Change given tracks by the handle routing_state returns: width, layer and ends. One undo step, read back.",+  "input": {+   "filePath": "the board (default the current one)",+   "tracks": "[{id, width?, layer?, start?: [x, y], end?: [x, y]}] mm; id is the track's handle from routing_state (required)",+   "dryRun": "bool, default false: answer the plan and change nothing",+   "expectedRevision": "optional: refused with stale_board if the board changed"+  },+  "output": {+   "results": "[ok|err:...] per track",+   "changes": "[{id, before, after}]",+   "verified": "bool: every change read back",+   "revision": "string"+  },+  "hint": "set_track_width works by net or class; this works on the tracks you name, for one neck or one layer swap. A track that moves off its pad is refused or shows in routing_drc, depending on the bridge.",+  "pitfalls": [+   "Changing a track's layer does not add the vias its ends now need: check with routing_drc."+  ],+  "related": [+   "routing_state",+   "set_track_width",+   "remove_items",+   "routing_drc"+  ],+  "example": {+   "tracks": [+    {+     "id": "<handle>",+     "width": 0.5+    }+   ]+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane"+  ]+ },+ {+  "name": "model_check",+  "tier": "checks",+  "summary": "Per part: is there a 3D model, where is it, is the file found, and does it hold geometry. For a library footprint or a whole board. Read only.",+  "input": {+   "filePath": "a board: every part on it",+   "library": "a footprint library (with footprint)",+   "footprint": "one footprint's name",+   "limit": "int, default 50: parts reported on a board"+  },+  "output": {+   "parts": "[{name, models: [{path, location: embedded|file|cloud, found: bool, hasGeometry: bool}], issues: [string]}]",+   "checked": "int",+   "ok": "bool: every part has a model that is found and holds geometry"+  },+  "hint": "Run it before a 3D export or a fab handoff. Whether the body sits in the right place stays with bodies: this verb only says the model is there and usable.",+  "pitfalls": [+   "A bridge whose models live in the cloud reports found as whether the reference resolves."+  ],+  "related": [+   "bodies",+   "lint_library",+   "export_3d"+  ],+  "example": {+   "filePath": "C:/proj/board.kicad_pcb"+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane"+  ]+ },+ {+  "name": "extensions",+  "tier": "app",+  "summary": "The tool's own plugins and add-ons: list what is installed, install one, remove one. Not install_extension, which is the bridge's own helper inside the tool.",+  "input": {+   "action": "list|install|remove, default list",+   "id": "the package's identifier (install, remove)",+   "source": "a repository URL or a local package file (install)",+   "version": "optional (install)",+   "checkUpdates": "bool, default true (list)"+  },+  "output": {+   "extensions": "[{id, name, version, kind, updateAvailable?, latestVersion?}]",+   "count": "int",+   "installed": "{id, version} after install",+   "removed": "id after remove"+  },+  "hint": "Read the list before installing, and restart the tool if the reply says the plugin loads at startup.",+  "pitfalls": [+   "Altium and Fusion list, and refuse install and remove by name: their pages can't be driven."+  ],+  "related": [+   "install_extension",+   "extension_ping",+   "state"+  ],+  "example": {+   "action": "list"+  },+  "proposedBy": "kicad-lane",+  "since": "0.30.15",+  "agreedBy": [+   "altium-lane"+  ]  } ]