component
Adom Machine Pins, Fusion Library + Sample Board
Public Made by Adomby adom
One Fusion 360 .lbr with all four Adom press-fit machine pins (working 3D), plus a sample board (2D/3D/silkscreen) ganging all four together. Fully documented and rebuildable.
← Commit history
Review fixes: single lbr with all 4 pins (clean short names), 4-pin animated lead 3D, drop no-silkscreen board + per-pin shots, no em-dashes
6 files changed
+125−151
AdomMachinePins-4pin-animated.glbadded⋯ 1 unchanged line ⋯
AdomMachinePins.lbr+20−20@@ -105,7 +105,7 @@ </packages> <packages3d><package3d name="MachinePinMediumStandard" urn="" wip_urn="urn:adsk.wipprod:fs.file:vf.IbXT030ISmSAFkzwx75Rtg?version=1" locally_modified="yes" type="model"><description>MachinePinMediumStandard</description><packageinstances><packageinstance name="MachinePinMediumStandard"/></packageinstances></package3d><package3d name="MachinePinMediumShort" urn="" wip_urn="urn:adsk.wipprod:fs.file:vf.1-YHegY6RlGs5F7RuYlCmA?version=1" locally_modified="yes" type="model"><description>MachinePinMediumShort</description><packageinstances><packageinstance name="MachinePinMediumShort"/></packageinstances></package3d><package3d name="MachinePinLargeStandard" urn="" wip_urn="urn:adsk.wipprod:fs.file:vf.ReKsBke6RBmV0DXFVfl0UA?version=1" locally_modified="yes" type="model"><description>MachinePinLargeStandard</description><packageinstances><packageinstance name="MachinePinLargeStandard"/></packageinstances></package3d><package3d name="MachinePinLargeShort" urn="" wip_urn="urn:adsk.wipprod:fs.file:vf.QzlhCZQxS1KQro5vx0zgKg?version=1" locally_modified="yes" type="model"><description>MachinePinLargeShort</description><packageinstances><packageinstance name="MachinePinLargeShort"/></packageinstances></package3d></packages3d> <symbols>-<symbol name="MachinePinMediumStandard">+<symbol name="MP-MED-STD"> <wire x1="0.2442" y1="-4.9400" x2="0.2456" y2="-4.6874" width="0.1016" layer="94"/> <wire x1="0.2456" y1="-4.6874" x2="0.2456" y2="-4.4333" width="0.1016" layer="94"/> <wire x1="0.2456" y1="-4.4333" x2="0.2456" y2="-4.1807" width="0.1016" layer="94"/>@@ -188,10 +188,10 @@ <wire x1="-0.2442" y1="-4.9400" x2="0.2442" y2="-4.9400" width="0.1016" layer="94"/> <text x="0" y="10" size="1.27" layer="95" align="bottom-center">>NAME</text> <text x="0" y="-10" size="1.27" layer="96" align="top-center">>VALUE</text>- <pin name="MachinePinMediumStandard" x="5.08" y="0" length="short" direction="pas" rot="R180"/>+ <pin name="MP-MED-STD" x="5.08" y="0" length="short" direction="pas" rot="R180"/> </symbol> -<symbol name="MachinePinMediumShort">+<symbol name="MP-MED-SHT"> <wire x1="0.3176" y1="-4.9400" x2="0.3331" y2="-4.6874" width="0.1016" layer="94"/> <wire x1="0.3331" y1="-4.6874" x2="0.3331" y2="-4.4333" width="0.1016" layer="94"/> <wire x1="0.3331" y1="-4.4333" x2="0.3331" y2="-4.1807" width="0.1016" layer="94"/>@@ -274,10 +274,10 @@ <wire x1="-0.3176" y1="-4.9400" x2="0.3176" y2="-4.9400" width="0.1016" layer="94"/> <text x="0" y="10" size="1.27" layer="95" align="bottom-center">>NAME</text> <text x="0" y="-10" size="1.27" layer="96" align="top-center">>VALUE</text>- <pin name="MachinePinMediumShort" x="5.08" y="0" length="short" direction="pas" rot="R180"/>+ <pin name="MP-MED-SHT" x="5.08" y="0" length="short" direction="pas" rot="R180"/> </symbol> -<symbol name="MachinePinLargeStandard">+<symbol name="MP-LRG-STD"> <wire x1="0.3839" y1="-4.9400" x2="0.4347" y2="-4.6874" width="0.1016" layer="94"/> <wire x1="0.4347" y1="-4.6874" x2="0.4347" y2="-4.4333" width="0.1016" layer="94"/> <wire x1="0.4347" y1="-4.4333" x2="0.4347" y2="-4.1807" width="0.1016" layer="94"/>@@ -360,10 +360,10 @@ <wire x1="-0.3839" y1="-4.9400" x2="0.3839" y2="-4.9400" width="0.1016" layer="94"/> <text x="0" y="10" size="1.27" layer="95" align="bottom-center">>NAME</text> <text x="0" y="-10" size="1.27" layer="96" align="top-center">>VALUE</text>- <pin name="MachinePinLargeStandard" x="5.08" y="0" length="short" direction="pas" rot="R180"/>+ <pin name="MP-LRG-STD" x="5.08" y="0" length="short" direction="pas" rot="R180"/> </symbol> -<symbol name="MachinePinLargeShort">+<symbol name="MP-LRG-SHT"> <wire x1="0.4263" y1="-4.9400" x2="0.4982" y2="-4.6874" width="0.1016" layer="94"/> <wire x1="0.4982" y1="-4.6874" x2="0.4996" y2="-4.4333" width="0.1016" layer="94"/> <wire x1="0.4996" y1="-4.4333" x2="0.4996" y2="-4.1807" width="0.1016" layer="94"/>@@ -446,19 +446,19 @@ <wire x1="-0.4263" y1="-4.9400" x2="0.4263" y2="-4.9400" width="0.1016" layer="94"/> <text x="0" y="10" size="1.27" layer="95" align="bottom-center">>NAME</text> <text x="0" y="-10" size="1.27" layer="96" align="top-center">>VALUE</text>- <pin name="MachinePinLargeShort" x="5.08" y="0" length="short" direction="pas" rot="R180"/>+ <pin name="MP-LRG-SHT" x="5.08" y="0" length="short" direction="pas" rot="R180"/> </symbol> </symbols> <devicesets>-<deviceset name="MachinePinMediumStandard" prefix="MP">+<deviceset name="MP-MED-STD" prefix="MP"> <description></description> <gates>- <gate name="G$1" symbol="MachinePinMediumStandard" x="0" y="0"/>+ <gate name="G$1" symbol="MP-MED-STD" x="0" y="0"/> </gates> <devices> <device name="" package="MachinePinMediumStandard"> <connects>- <connect gate="G$1" pin="MachinePinMediumStandard" pad="1"/>+ <connect gate="G$1" pin="MP-MED-STD" pad="1"/> </connects> <package3dinstances><package3dinstance package3d_urn="urn:adsk.wipprod:fs.file:vf.IbXT030ISmSAFkzwx75Rtg?version=1"/></package3dinstances> <technologies><technology name=""/></technologies>@@ -466,15 +466,15 @@ </devices> </deviceset> -<deviceset name="MachinePinMediumShort" prefix="MP">+<deviceset name="MP-MED-SHT" prefix="MP"> <description></description> <gates>- <gate name="G$1" symbol="MachinePinMediumShort" x="0" y="0"/>+ <gate name="G$1" symbol="MP-MED-SHT" x="0" y="0"/> </gates> <devices> <device name="" package="MachinePinMediumShort"> <connects>- <connect gate="G$1" pin="MachinePinMediumShort" pad="1"/>+ <connect gate="G$1" pin="MP-MED-SHT" pad="1"/> </connects> <package3dinstances><package3dinstance package3d_urn="urn:adsk.wipprod:fs.file:vf.1-YHegY6RlGs5F7RuYlCmA?version=1"/></package3dinstances> <technologies><technology name=""/></technologies>@@ -482,15 +482,15 @@ </devices> </deviceset> -<deviceset name="MachinePinLargeStandard" prefix="MP">+<deviceset name="MP-LRG-STD" prefix="MP"> <description></description> <gates>- <gate name="G$1" symbol="MachinePinLargeStandard" x="0" y="0"/>+ <gate name="G$1" symbol="MP-LRG-STD" x="0" y="0"/> </gates> <devices> <device name="" package="MachinePinLargeStandard"> <connects>- <connect gate="G$1" pin="MachinePinLargeStandard" pad="1"/>+ <connect gate="G$1" pin="MP-LRG-STD" pad="1"/> </connects> <package3dinstances><package3dinstance package3d_urn="urn:adsk.wipprod:fs.file:vf.ReKsBke6RBmV0DXFVfl0UA?version=1"/></package3dinstances> <technologies><technology name=""/></technologies>@@ -498,15 +498,15 @@ </devices> </deviceset> -<deviceset name="MachinePinLargeShort" prefix="MP">+<deviceset name="MP-LRG-SHT" prefix="MP"> <description></description> <gates>- <gate name="G$1" symbol="MachinePinLargeShort" x="0" y="0"/>+ <gate name="G$1" symbol="MP-LRG-SHT" x="0" y="0"/> </gates> <devices> <device name="" package="MachinePinLargeShort"> <connects>- <connect gate="G$1" pin="MachinePinLargeShort" pad="1"/>+ <connect gate="G$1" pin="MP-LRG-SHT" pad="1"/> </connects> <package3dinstances><package3dinstance package3d_urn="urn:adsk.wipprod:fs.file:vf.QzlhCZQxS1KQro5vx0zgKg?version=1"/></package3dinstances> <technologies><technology name=""/></technologies>
README.md+88−113@@ -1,90 +1,76 @@-# Adom Machine Pins — Fusion 360 Library + Sample Board+# Adom Machine Pins, Fusion 360 Library + Sample Board -All four **Adom press-fit machine pins** (Medium/Large × Standard/Short) in one Fusion 360 `.lbr`-with **working 3D components**, plus a **sample board** that gangs all four together — 2D, 3D, and-silkscreen. Everything here was built end-to-end from the AI, driving Fusion **in the background**,-and this page documents the whole process so anyone can rebuild it or just download it.+**One** Fusion 360 `.lbr` containing all four **Adom press-fit machine pins** (Medium/Large,+Standard/Short) with **working 3D components**, plus a **sample board** that gangs all four together in+2D, 3D, and silkscreen. It is a single library (not a library per pin), so you drop it into Fusion once+and place any of the four. Everything here was built by the AI driving Fusion **in the background**, and+this page documents the whole process so you can rebuild it or just download it.  --## What's in this library+## What is in this library | Ref | Pin | Body OD (press-fit) | Drill (plated) | Pad | Annular ring | Height | |---|---|---|---|---|---|---|-| MP1 | Medium-Standard | Ø1.20 mm | Ø1.10 mm | Ø1.60 mm | **0.250 mm** | 10.6 mm |-| MP2 | Medium-Short | Ø1.20 mm | Ø1.10 mm | Ø1.60 mm | **0.250 mm** | 7.8 mm |-| MP3 | Large-Standard | Ø3.60 mm | Ø3.45 mm | Ø5.20 mm | **0.875 mm** | 21.6 mm |-| MP4 | Large-Short | Ø3.60 mm | Ø3.45 mm | Ø5.20 mm | **0.875 mm** | 18.8 mm |+| MP-MED-STD | Medium-Standard | 1.20 mm | 1.10 mm | 1.60 mm | **0.250 mm** | 10.6 mm |+| MP-MED-SHT | Medium-Short | 1.20 mm | 1.10 mm | 1.60 mm | **0.250 mm** | 7.8 mm |+| MP-LRG-STD | Large-Standard | 3.60 mm | 3.45 mm | 5.20 mm | **0.875 mm** | 21.6 mm |+| MP-LRG-SHT | Large-Short | 3.60 mm | 3.45 mm | 5.20 mm | **0.875 mm** | 18.8 mm | -**These are PRESS-FIT** (Mill-Max style): the body OD is deliberately **larger** than the plated-drill (Medium 0.10 mm interference, Large 0.15 mm). The undersized hole is **correct** — do not-"fix" it to a clearance hole. Solder-assisted with 300 µm InstaPCB jet paste on the annular ring.+**These are PRESS-FIT** (Mill-Max style): the body OD is deliberately **larger** than the plated drill+(Medium 0.10 mm interference, Large 0.15 mm). The undersized hole is **correct**, do not "fix" it to a+clearance hole. Solder-assisted with 300 um InstaPCB jet paste on the annular ring. -Each `.lbr` device is a full component: a **round thru-hole footprint** (real drill + annular ring),-a **per-pin-accurate schematic symbol** (silhouette from the actual STEP, so the four look different),-and a **real 3D body** bound from the pin's STEP.+Each device is a full component: a **round thru-hole footprint** (real drill + annular ring), a+**per-pin-accurate schematic symbol** (silhouette from the actual STEP, so the four look different), and+a **real 3D body** bound from the pin's STEP. +## The library: all four pins in ONE `.lbr` -## Screenshots+ -### The library — all four pins, each with a working 3D component--The Fusion Electronics Library editor: the four devicesets in the list, the symbol (center), the-footprint preview (round pad + silk, bottom), and the **real 3D pin** in the lower-right preview-(Package column reads *Mapped*, not *Placeholder*).+The Fusion Electronics Library editor with **AdomMachinePins** open: the four devicesets in one list+(MP-LRG-SHT, MP-LRG-STD, MP-MED-SHT, MP-MED-STD), the schematic symbol (center), the footprint preview+(round pad + silk, bottom), and the **real 3D pin** in the lower-right preview. The Package column reads+**Mapped**, not Placeholder, so the 3D is live for every part. -### Each pin — symbol + footprint in Fusion-| | |-|---|---|-|  |  |-|  |  |+## The sample board: all four ganged together -### The sample board — all four ganged together-| 2D (dimensioned) | 2D with silkscreen |+| 2D, dimensioned | 2D, silkscreen | |---|---| |  |  | -| 3D — all four pins standing | 3D with silkscreen labels |-|---|---|-|  |  |+ -The board is 50 × 50 × 1.6 mm; each pin carries a silkscreen callout of its **name, drill, and-annular ring**.+The board is 50 x 50 x 1.6 mm. Each pin carries a silkscreen callout of its **name, drill, and annular+ring**, and the 3D PCB shows the real pin bodies standing on the FR4. +## Download and use it -## Download / use it--**Fusion 360 library:** [`AdomMachinePins.lbr`](AdomMachinePins.lbr) — open in Fusion via *Electronics-→ Library Manager → Open*, or with the Adom bridge `fusion_open_lbr`. This `.lbr` already carries the-3D bindings (see the [3D section](#the-3d-files-the-important-part) — you may need to re-bind on your-own account).+**Fusion 360 library:** [`AdomMachinePins.lbr`](AdomMachinePins.lbr), one library, all four pins. Open in+Fusion (*Electronics, Library Manager, Open*) or with the Adom bridge `fusion_open_lbr`. It already+carries the 3D bindings; see [the 3D section](#the-3d-files-the-part-that-matters), you may need to+re-bind on your own Autodesk account. **Sample board:** [`AdomPinsBoard.brd`](AdomPinsBoard.brd) (EAGLE/Fusion) and [`AdomPinsBoard.kicad_pcb`](AdomPinsBoard.kicad_pcb) + [`AdomPinsBoard.svg`](AdomPinsBoard.svg) (KiCad). -**Per-pin sources** (in [`sources/`](sources/)): each pin's `.kicad_sym`, `.kicad_mod`, `.step`,-`.glb`, and single-pin `.lbr`.-+**Per-pin sources** (in [`sources/`](sources/)): each pin's `.kicad_sym`, `.kicad_mod`, `.step`, `.glb`,+and single-pin `.lbr` (for building your own merged library). ## Where the originals came from -The canonical KiCad source is **[`adom-inc/adom-kicad-library`](https://github.com/adom-inc/adom-kicad-library/tree/new-v1.1)**-(branch `new-v1.1`): `footprints/*.kicad_mod`, `symbols/*.kicad_sym`, `3dmodels/*.step` for-MachineContact (MC, Large/Medium) and MachinePin (MP, Large/Medium × Standard/Short). Each pin also-has an individual Adom Wiki component page with native symbol / footprint / 3D viewers:+The canonical KiCad source is+**[`adom-inc/adom-kicad-library`](https://github.com/adom-inc/adom-kicad-library/tree/new-v1.1)** (branch+`new-v1.1`): `footprints/*.kicad_mod`, `symbols/*.kicad_sym`, `3dmodels/*.step` for MachineContact (MC,+Large/Medium) and MachinePin (MP, Large/Medium, Standard/Short). Each pin also has an individual Adom+Wiki component page with native symbol, footprint, and 3D viewers: - [Machine Pin Medium Standard](https://wiki.adom.inc/adom/machinepinmediumstandard) - [Machine Pin Medium Short](https://wiki.adom.inc/adom/machinepinmediumshort)⋯ 1 unchanged line ⋯ - [Machine Pin Large Short](https://wiki.adom.inc/adom/machinepinlargeshort) - ## How to rebuild the whole thing ### 1. Generate the four `.lbr` from the KiCad sources (adom-lbr 2.4.0+)@@ -99,34 +85,33 @@ adom-lbr generate \ -o <MPN>.lbr ``` -- `--symbol-art` overrides the shared/generic `kicad_sym` drawing with **this pin's** outline- (the outline-contract `<mpn>-symbol-outline.mm.svg` + its `.json` sidecar, placed 1:1). Without it,- all four symbols look identical.-- 2.4.0 emits a native **round** thru-hole pad, the real **`fp_circle` silk**, and names the pin from- the **pad number** (an empty pin name makes Fusion reject the `.lbr` with *"has errors and cannot- be opened"*). Lint each with `adom-lbr lint`.+- `--symbol-art` overrides the shared/generic `kicad_sym` drawing with **this pin's** outline (the+ outline-contract `<mpn>-symbol-outline.mm.svg` + its `.json` sidecar, placed 1:1). Without it, all four+ symbols look identical.+- 2.4.0 emits a native **round** thru-hole pad, the real **`fp_circle` silk**, and names the pin from the+ **pad number** (an empty pin name makes Fusion reject the `.lbr` with "has errors and cannot be+ opened"). Lint each with `adom-lbr lint`. -Merge the four into one library `.lbr` (one `<layers>` skeleton + concatenated-packages/symbols/devicesets; give each symbol's pin a **unique name** or the lint flags duplicates).+Merge the four into **one** library: one `<layers>` skeleton + concatenated packages/symbols/devicesets.+Give each symbol's pin a **unique name** (or the linter flags duplicates), and give each **deviceset a+short clean name** (MP-MED-STD, not MachinePinMediumStandard), because the deviceset name renders as the+`>NAME` in the symbol and a long name looks terrible. -### 2. Bind the real 3D to each pin+### 2. Bind the real 3D, ONE pin at a time -This is the part that needs care — see the next section. Short version: bind **one pin at a time**,-collect each fresh Hub `wip_urn`, and write them into the library.+See [the 3D section](#the-3d-files-the-part-that-matters). Short version: bind each pin with+`fusion_make_3d_package`, collect each fresh Hub `wip_urn`, and write them into the library. ### 3. Author the sample board (background, no dialogs) Hand-write an EAGLE `.brd`: `<layers>`, a board outline on **layer 20**, the embedded `<library>`-(packages), and `<elements>` placing the four pins. Then open it with `fusion_open_board` — which uses+(packages), and `<elements>` placing the four pins. Open it with `fusion_open_board`, which uses `Document.newDesignFromLocal` to **instantiate the placed parts with zero modal file-dialogs** (do NOT use the dialog-driven EAGLE importer; its Open dialogs steal focus). `fusion_show_3d_board` renders the-3D. Add silkscreen with `<text ... layer="21">` in `<plain>`.--A DRC-clean KiCad `.kicad_pcb` equivalent is also here (rendered via `service-kicad pcb export svg`).-+3D. Add silkscreen with `<text ... layer="21">` in `<plain>`. A DRC-clean KiCad `.kicad_pcb` equivalent+is also here (rendered via `service-kicad pcb export svg`). -## The 3D files — the important part+## The 3D files, the part that matters **The `.lbr`/`.brd` is 2D XML; the 3D lives in the Autodesk Hub.** Fusion's 3D for an electronics component is a **`package3d`** binding that points at a cloud f3d file by **`wip_urn`**. So:@@ -134,71 +119,61 @@ component is a **`package3d`** binding that points at a cloud f3d file by **`wip - In the **library** `.lbr`, each part needs BOTH a library-level `<package3d name=... wip_urn=urn:...>` AND a per-`<device>` `<package3dinstances><package3dinstance package3d_urn="urn:..."/></package3dinstances>` (after `</connects>`). **The per-device instance is what makes the library editor show the real 3D- instead of a "Placeholder"** — the #1 gotcha.+ instead of a "Placeholder".** That is the number one gotcha. - On the **board** `.brd`, embed a `<packages3d>` in the library AND give every `<element>` a- `package3d_urn="<that pin's wip_urn>"`. No urn on the element ⇒ a flat pad instead of a 3D body.+ `package3d_urn="<that pin's wip_urn>"`. No urn on the element means a flat pad instead of a 3D body. -### If you import this `.lbr` and the 3D doesn't show (or shows a flat pad)+### If you import this `.lbr` and the 3D does not show (or shows a flat pad) -The `wip_urn`s in this file are bound to the account that built it — **they may not resolve on yours**.+The `wip_urn`s in this file are bound to the account that built it, so **they may not resolve on yours**. Re-bind on your own account (all background, no dialogs): ```-# per pin, ONE AT A TIME (the batch build times out — see below):+# per pin, ONE AT A TIME (the batch build times out, see below): fusion_make_3d_package {lbrPath:<pin>.lbr, modelPath:<pin>.step, orient:false} # -> returns a fresh wip_urn for that pin ``` Then rewrite the library's `<package3d>`/`<package3dinstances>` (and the board's element-`package3d_urn`s) with your fresh urns and re-open. That's exactly how this library's 3D was made 4/4.+`package3d_urn`s) with your fresh urns and re-open. That is exactly how this library got to 4/4. -Requires an **APS sign-in** (`fusion_aps_signin`, warm SSO — never your password) so the f3d can-upload to your Hub. Free/never-charged (PKCE app + free-endpoint allowlist + monthly cap).-+Requires an **APS sign-in** (`fusion_aps_signin`, warm SSO, never your password) so the f3d can upload to+your Hub. Free and never-charged (PKCE app + free-endpoint allowlist + monthly cap). ## The Fusion-bridge features that made this possible All of this ran from the AI **in the background** (Fusion never had to steal your focus), thanks to recent Adom Desktop Fusion bridge work: -- **Background, no-dialog board import** — `fusion_open_board` (`Document.newDesignFromLocal`)- instantiates a placed `.brd` with **zero modal Open dialogs**. Fusion's native EAGLE importer- (`ImportSCHAndBRDCmd`) pops two file-pickers that foreground Fusion; this route avoids them entirely.-- **`package3d_urn`-on-board** support — real 3D component bodies on an imported board (documented in- the `fusion_new_electronics_from_eagle` verb).-- **Async-survivable long ops** — the cloud Package3D + Hub upload takes minutes, but AD's relay caps- a request at ~60s. `fusion_build_library_3d` now runs **detached + pollable** so it isn't killed- mid-run. (Even so, per-pin `fusion_make_3d_package` proved more reliable than the batch — bind one- at a time.)-- **Universal error-dialog guard** — every open/mutating verb screenshots owned popups and flips- `success:false` on a Fusion "Error" dialog, so a malformed `.lbr` can't be reported as "opened".-- **Notify-before-foreground** — on the rare unavoidable foreground, the bridge fires an AD notify- explaining why (and ribs Fusion for not being AI-native yet).-- **APS integration** — PKCE OAuth with a warm-SSO sign-in, a browser-profile cache (remembers which+- **Background, no-dialog board import.** `fusion_open_board` (`Document.newDesignFromLocal`) instantiates+ a placed `.brd` with **zero modal Open dialogs**. Fusion's native EAGLE importer (`ImportSCHAndBRDCmd`)+ pops two file-pickers that foreground Fusion; this route avoids them entirely.+- **`package3d_urn`-on-board** support, real 3D component bodies on an imported board.+- **Async-survivable long ops.** The cloud Package3D + Hub upload takes minutes, but AD's relay caps a+ request at 60s. `fusion_build_library_3d` now runs **detached + pollable** so it is not killed mid-run.+ (Even so, per-pin `fusion_make_3d_package` proved more reliable than the batch. Bind one at a time.)+- **Universal error-dialog guard.** Every open/mutating verb screenshots owned popups and flips+ `success:false` on a Fusion "Error" dialog, so a malformed `.lbr` cannot be reported as "opened".+- **Notify-before-foreground.** On the rare unavoidable foreground, the bridge fires an AD notify+ explaining why.+- **APS integration.** PKCE OAuth with a warm-SSO sign-in, a browser-profile cache (remembers which browser authed to Autodesk), and a never-charge cap; used to upload the f3d packages.-- **HWND-truncation + parent/child screenshot** fixes so the bridge can see and drive Fusion windows- and owned dialogs in the background.-+- **HWND-truncation + parent/child screenshot** fixes so the bridge can see and drive Fusion windows and+ owned dialogs in the background. ## Skills used to build this -- **[fusion-libraries](https://wiki.adom.inc/adom/fusion-libraries)** — symbol → footprint → `.lbr` →+- **[fusion-libraries](https://wiki.adom.inc/adom/fusion-libraries)**, symbol to footprint to `.lbr` to Fusion, and attaching the real 3D chip.-- **[adom-lbr](https://wiki.adom.inc/adom/adom-lbr)** — the EAGLE `.lbr` generator/linter (round pad,+- **[adom-lbr](https://wiki.adom.inc/adom/adom-lbr)**, the EAGLE `.lbr` generator/linter (round pad, `fp_circle` silk, `--symbol-art`).-- **adom-symbol / adom-footprint / step2glb / adom-chipfit** — symbol art, footprint + paste dots,- STEP→GLB, seat-plane checks.-- **[fusion-aps-signin](https://wiki.adom.inc/adom/fusion-aps-signin)** + **fusion-aps-search** — the- APS sign-in (warm SSO) so the 3D packages can upload to the Hub.-- **fusion-electronics / fusion-driving / adom-desktop-window-capture** — driving Fusion + capturing- its windows and owned dialogs in the background.-- **[adom-machine-pin-fusion-library](https://wiki.adom.inc/adom/adom-machine-pin-fusion-library)** —- the dedicated skill for this exact build (companion to this page).-- **adom-shotlog / pup** — visual logging of every step.-+- **adom-symbol / adom-footprint / step2glb / adom-chipfit**, symbol art, footprint + paste dots,+ STEP to GLB, seat-plane checks.+- **[fusion-aps-signin](https://wiki.adom.inc/adom/fusion-aps-signin)** and **fusion-aps-search**, the APS+ sign-in (warm SSO) so the 3D packages can upload to the Hub.+- **fusion-electronics / fusion-driving / adom-desktop-window-capture**, driving Fusion + capturing its+ windows and owned dialogs in the background.+- The **Skills tab** on this page carries the dedicated build recipe. *Built by the Adom AI, background-driven end to end. Source of truth for the pins: `adom-inc/[email protected]`.*
SKILL.md+13−13@@ -13,13 +13,13 @@ description: > pad, placeholder 3d, scaffold pin, 32mm grid pin, sample board machine pins. --- -# Adom machine-pin Fusion library + board — the full recipe+# Adom machine-pin Fusion library + board, the full recipe Reproducible, background, end-to-end. Source of truth: **`adom-inc/[email protected]`** (`footprints/*.kicad_mod`, `symbols/*.kicad_sym`, `3dmodels/*.step`). Live result + downloads + screenshots: **wiki.adom.inc/adom/adom-machine-pins-fusion-lbr**. -## 0. The pins (all PRESS-FIT — this is the key fact)+## 0. The pins (all PRESS-FIT, this is the key fact) | Pin | Body OD | Drill | Pad | Ring | Interference | |---|---|---|---|---|---|@@ -27,7 +27,7 @@ downloads + screenshots: **wiki.adom.inc/adom/adom-machine-pins-fusion-lbr**. | Large-Standard / -Short | Ø3.60 | Ø3.45 | Ø5.20 | 0.875 | 0.15 mm | The body OD is **larger** than the plated drill on purpose (Mill-Max press-fit, solder-assisted with-300 µm jet paste). The undersized hole is CORRECT — never "fix" it to a clearance hole.+300 µm jet paste). The undersized hole is CORRECT, never "fix" it to a clearance hole. ## 1. Generate the four `.lbr` (adom-lbr 2.4.0+) @@ -40,11 +40,11 @@ adom-lbr generate --sym <MPN>.kicad_sym --fp <MPN>.kicad_mod \ generic kicad_sym drawing so each size's symbol is distinct. adom-symbol makes the outline. - 2.4.0 natively emits a **round** thru-hole pad, the real **`fp_circle` silk**, and names the pin from the **pad number**. ⚠️ An EMPTY pin name (`<pin name="">` + `<connect pin="">`) makes Fusion- reject the `.lbr` with *"has errors and cannot be opened"* — verify `adom-lbr lint` is clean.+ reject the `.lbr` with *"has errors and cannot be opened"*, verify `adom-lbr lint` is clean. - Merge the four into one library: one `<layers>` skeleton + concatenated packages/symbols/devicesets; give each symbol's single pin a UNIQUE name (else `duplicate-pin-name`). -## 2. Bind the real 3D — ONE PIN AT A TIME (do NOT trust the batch)+## 2. Bind the real 3D, ONE PIN AT A TIME (do NOT trust the batch) The batch `fusion_build_library_3d` reliably TIMED OUT / stalled (cluttered Fusion state + the 60s relay cap); a demo board came back with 3/4 pins as flat pads. What WORKS: a **single**@@ -56,10 +56,10 @@ the password) so the f3d uploads to the Hub. ``` for pin in the four: fusion_make_3d_package {lbrPath:<pin>.lbr, modelPath:<pin>.step, orient:false}- -> record wip_urn (orient:false — the STEP is already Z-up; tall pins must not be flattened)+ -> record wip_urn (orient:false, the STEP is already Z-up; tall pins must not be flattened) ``` -## 3. Write the 3D into the library — BOTH places (the #1 gotcha)+## 3. Write the 3D into the library, BOTH places (the #1 gotcha) For each part the `.lbr` needs: 1. a library-level `<package3d name="PKG" urn="" wip_urn="urn:..." locally_modified="yes"@@ -69,13 +69,13 @@ For each part the `.lbr` needs: `<package3dinstances><package3dinstance package3d_urn="urn:..."/></package3dinstances>`. **Both are required.** With only (1), the Fusion library editor shows a **"Placeholder"** 3D, not the-pin. The bridge's `_inject_package3d_bindings` does exactly this (merge-aware/idempotent) — reuse it.+pin. The bridge's `_inject_package3d_bindings` does exactly this (merge-aware/idempotent), reuse it. -## 4. The sample board — background, NO modal dialogs+## 4. The sample board, background, NO modal dialogs Hand-author an EAGLE `.brd` (well-formed XML): `<settings>/<grid>`, the full `<layers>`, a board outline on **layer 20**, an embedded `<library>` with `<packages>` + `<packages3d>` (fresh urns), and-`<elements>` placing the four pins — **each element with `package3d_urn="<that pin's wip_urn>"`** (no+`<elements>` placing the four pins, **each element with `package3d_urn="<that pin's wip_urn>"`** (no urn ⇒ flat pad). Add silkscreen with `<text x y size layer="21">name / drill / ring</text>` in `<plain>`. @@ -84,7 +84,7 @@ Open it in the BACKGROUND: fusion_open_board {filePath:<.brd>} # newDesignFromLocal -> instantiates placed parts, ZERO dialogs fusion_show_3d_board {} # renders the 3D PCB with the real pin bodies ```-⛔ Do NOT use `fusion_new_electronics_from_eagle` / `ImportSCHAndBRDCmd` for a placed board — its two+⛔ Do NOT use `fusion_new_electronics_from_eagle` / `ImportSCHAndBRDCmd` for a placed board, its two native Open dialogs are MODAL and STEAL the user's focus. There is no background way to drive them; `fusion_open_board` is the background route. (A DRC-clean KiCad `.kicad_pcb` equivalent can be rendered headlessly via `service-kicad pcb export svg`.)@@ -100,7 +100,7 @@ element `package3d_urn`s with your fresh urns, and re-open. Same procedure as th - `fusion_open_board` = `Document.newDesignFromLocal` → **no-dialog** placed-board import. - `package3d_urn` on `.brd` elements → real 3D bodies on the board (`fusion_new_electronics_from_eagle` docstring documents it).-- `fusion_build_library_3d` runs **detached + pollable** (survives AD's 60s relay cap) — but prefer+- `fusion_build_library_3d` runs **detached + pollable** (survives AD's 60s relay cap), but prefer per-pin `fusion_make_3d_package`. - Universal error-dialog guard (flips success:false on a Fusion "Error" popup); notify-before- foreground; APS warm-SSO sign-in + browser-profile cache + never-charge cap; HWND/parent-child@@ -110,4 +110,4 @@ element `package3d_urn`s with your fresh urns, and re-open. Same procedure as th - adom-lbr: the empty-pin-name and round-pad fixes landed in 2.4.0; `--symbol-art` restored there too. - 300 µm solder-ball layer standard: a hidden `User.*` layer in every footprint (see the solder-ball-layer standard page); paste.rs computes it on the fly for SMD only today.-- Batch `build_library_3d` reliability on slow/cluttered sessions — per-pin binding is the workaround.+- Batch `build_library_3d` reliability on slow/cluttered sessions, per-pin binding is the workaround.
page.json+4−5@@ -2,8 +2,8 @@ "schema_version": 1, "type": "component", "slug": "adom-machine-pins-fusion-lbr",- "title": "Adom Machine Pins — Fusion Library + Sample Board",- "brief": "All four Adom press-fit machine pins in one Fusion 360 .lbr with working 3D, plus a sample board (2D/3D/silkscreen) ganging all four together. Fully documented + rebuildable.",+ "title": "Adom Machine Pins, Fusion Library + Sample Board",+ "brief": "One Fusion 360 .lbr with all four Adom press-fit machine pins (working 3D), plus a sample board (2D/3D/silkscreen) ganging all four together. Fully documented and rebuildable.", "version": "2.0.0", "tags": ["machine-pin", "fusion", "lbr", "press-fit", "adom-modular", "board", "3d"], "license": "proprietary",@@ -17,11 +17,10 @@ "subcategory": "Machine Pin library", "series": "Machine Pins", "parts": {- "model_3d": "sources/MachinePinLargeStandard.glb",- "step": "sources/MachinePinLargeStandard.step"+ "model_3d": "AdomMachinePins-4pin-animated.glb" }, "specs": {- "pins": "Medium-Standard, Medium-Short, Large-Standard, Large-Short",+ "pins": "MP-MED-STD, MP-MED-SHT, MP-LRG-STD, MP-LRG-SHT", "mount": "press-fit (Mill-Max style)", "medium_body_od_mm": 1.2, "medium_drill_mm": 1.1, "medium_pad_mm": 1.6, "medium_ring_mm": 0.25, "large_body_od_mm": 3.6, "large_drill_mm": 3.45, "large_pad_mm": 5.2, "large_ring_mm": 0.875,
screenshots/library-4pins-clean.pngadded⋯ 1 unchanged line ⋯