app
adom-desktop-altium-bridge
Public Unreviewedby barrett-land
Adom Desktop bridge for Altium Designer — build and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob, by driving Altium via DelphiScript.
← Commit history
Publish 0.0.48
11 files changed
+54−18
README.md+1−1@@ -11,7 +11,7 @@ verbs. ```bash adom-wiki pkg install barrett-land/adom-desktop-altium-bridge # the skill, in the container-adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.47/altium-bridge-manifest.json"}'+adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.48/altium-bridge-manifest.json"}' adom-desktop --ai-thread "<your thread>" altium_ping '{}' ```
SKILL.md+1−1@@ -12,7 +12,7 @@ forwards work into the running GUI as DelphiScript via `X2.EXE`. ## Install ```bash-adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.47/altium-bridge-manifest.json"}'+adom-desktop bridge_install '{"manifestUrl":"https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.48/altium-bridge-manifest.json"}' adom-desktop --ai-thread "<your thread>" altium_ping '{}' # -> {"altiumInstalled": true, "version": "..."} ```
altium-bridge-manifest.json+3−3@@ -1,3 +1,3 @@-{ "manifest_version": 1, "name": "altium", "version": "0.0.47",- "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.47/altium-bridge-v0.0.47.zip",- "sha256": "0a1d213e2a45319507d2c68aa572abeb6d5b1045b93d21815eed57e7d2e37ae7", "size": 41686, "released_at": "2026-08-12T17:19:37Z" }+{ "manifest_version": 1, "name": "altium", "version": "0.0.48",+ "url": "https://wiki.adom.inc/download/barrett-land/adom-desktop-altium-bridge/0.0.48/altium-bridge-v0.0.48.zip",+ "sha256": "f2fd005dc9efa0715751cedb00193982ef6d562046438674d8382a06bb341792", "size": 42219, "released_at": "2026-08-12T17:28:59Z" }
altium-bridge-v0.0.48.zipadded⋯ 1 unchanged line ⋯
bridge-src/BRIDGE_VERSION+1−1@@ -1 +1 @@-0.0.47+0.0.48
bridge-src/__pycache__/server.cpython-312.pyc⋯ 1 unchanged line ⋯
bridge-src/addin/AdomAltium/AdomAltium.pas+34−2@@ -1465,12 +1465,13 @@ end; procedure CmdSetTextStyle; var SchPath, CompRef, SavedStr : String;- FontId, Colr, PinColr, nTxt, nCmp, nPin : Integer;+ FontId, Colr, PinColr, BodyColr, nTxt, nCmp, nPin, nBody : Integer; Lib : ISch_Lib; Cmp : ISch_Component; It : ISch_Iterator; P : ISch_Parameter; Pin : ISch_Pin;+ G : ISch_GraphicalObject; names : TStringList; i : Integer; SavedOK : Boolean;@@ -1481,13 +1482,15 @@ begin Colr := StrToIntDef(Req.Values['color'], 8388608); { Altium draws pins BLACK (0) by default, not the navy used for parameter text. } PinColr := StrToIntDef(Req.Values['pincolor'], 0);+ { Altium draws symbol bodies BLUE; KiCad's maroon imports as 132. -1 = leave alone. }+ BodyColr := StrToIntDef(Req.Values['bodycolor'], 16711680); if SchPath = '' then begin RespErr('missing schlib'); Exit; end; GStage := 'open schlib'; Lib := OpenSchLibDoc(SchPath); if Lib = nil then begin RespErr('could not open: ' + SchPath); Exit; end; - nTxt := 0; nCmp := 0; nPin := 0;+ nTxt := 0; nCmp := 0; nPin := 0; nBody := 0; names := TStringList.Create; try GStage := 'collect components';@@ -1573,6 +1576,33 @@ begin finally Cmp.SchIterator_Destroy(It); end;++ { Symbol body outline. KiCad draws passives in MAROON (#840000, which+ arrives as Altium colour 132); Altium's own passives are drawn in pure+ BLUE (16711680 = $FF0000 in BGR = RGB(0,0,255)). Measured on a hand-made+ part: 8 polylines at 16711680. Without this an imported symbol is+ instantly distinguishable from every other symbol on the sheet.+ Pass bodycolor=-1 to leave graphics untouched, for a symbol whose+ colours are deliberate (an LED triangle, a polarity mark). }+ if BodyColr >= 0 then+ begin+ GStage := 'restyle symbol body';+ It := Cmp.SchIterator_Create;+ It.AddFilter_ObjectSet(MkSet(eRectangle, ePolyline, ePolygon, eEllipse,+ eArc, eLine, eRoundRectangle, eBezier,+ eEllipticalArc, ePie));+ try+ G := It.FirstSchObject;+ while G <> nil do+ begin+ G.Color := BodyColr;+ Inc(nBody);+ G := It.NextSchObject;+ end;+ finally+ Cmp.SchIterator_Destroy(It);+ end;+ end; end; end; finally@@ -1588,6 +1618,8 @@ begin ', "pins": ' + IntToStr(nPin) + ', "fontId": ' + IntToStr(FontId) + ', "color": ' + IntToStr(Colr) + ', "pinColor": ' + IntToStr(PinColr) ++ ', "bodyPrimitives": ' + IntToStr(nBody) ++ ', "bodyColor": ' + IntToStr(BodyColr) + ', "saved": ' + SavedStr); end;
bridge-src/bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "altium", "displayName": "Altium Bridge",- "version": "0.0.47",+ "version": "0.0.48", "description": "Drives Altium Designer from a container: build, clone and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob. Pairs with the container-side altium-jlc orchestrator (adom-jlcpcb + chip-fetcher).", "homepage": "https://wiki.adom.inc/adom/adom-desktop-altium-bridge", "author": "Adom Inc.",
bridge-src/server.py+1−1@@ -186,7 +186,7 @@ def handle_set_text_style(args: dict) -> dict: Pin name/number fonts follow the document default and pins are set BLACK (pincolor=0), which is Altium's own pin colour rather than the navy used for parameter text. component='' or '*' restyles every component in the library."""- keys = ("schlib", "component", "fontid", "color", "pincolor")+ keys = ("schlib", "component", "fontid", "color", "pincolor", "bodycolor") return addin_call("set_text_style", {k: args.get(k) for k in keys}, timeout=args.get("timeout", 180))
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-altium-bridge",- "version": "0.0.47",+ "version": "0.0.48", "type": "app", "description": "Adom Desktop bridge for Altium Designer: file-based symbol/footprint/IntLib authoring with LCSC/JLCPCB part numbers, Gerber/BOM/CPL batch output, and an in-process .NET extension adding parameterized headless verbs - STEP export with hole and copper options, and KiCad import with no wizard.", "tags": [
page.json+11−7@@ -1,8 +1,8 @@ { "slug": "adom-desktop-altium-bridge",- "version": "0.0.47",+ "version": "0.0.48", "type": "app",- "description": "Adom Desktop bridge for Altium Designer \u2014 build and edit file-based symbol/footprint/Integrated libraries with LCSC/JLCPCB part numbers attached, and generate batch outputs (STEP, PDF, Gerber, BOM, CPL) from an OutJob, by driving Altium via DelphiScript.",+ "description": "Adom Desktop bridge for Altium Designer: file-based symbol/footprint/IntLib authoring with LCSC/JLCPCB part numbers, Gerber/BOM/CPL batch output, and an in-process .NET extension adding parameterized headless verbs - STEP export with hole and copper options, and KiCad import with no wizard.", "tags": [ "app", "adom-desktop",@@ -18,6 +18,7 @@ }, "needs_sudo": false, "hero": {+ "type": "image", "path": "docs/hero.png" }, "author": {@@ -25,13 +26,16 @@ "email": "[email protected]" }, "discovery_triggers": [- "add a part to my altium library", "drive altium from claude", "altium bridge",- "export step from altium",+ "export step from altium headless",+ "add a part to my altium library",+ "altium extension",+ "install altium extension",+ "altium step export", "run an altium outjob",- "build an altium footprint",- "altium symbol library"+ "import kicad into altium",+ "altium kicad importer" ], "discovery_pitch": "Use when the user wants Claude to author or edit Altium libraries, or to generate STEP/PDF/Gerber/BOM/CPL from an Altium board on their Windows machine.", "sample_prompts": [@@ -48,4 +52,4 @@ "prompt": "Is the Altium bridge connected and what version is it?" } ]-}+}