Adom Library
Public Made by Adomby adom
adom-lbr — the EDA library translator. Bring a component in from any supported EDA tool and convert it to any other (KiCad ⇄ Altium ⇄ EAGLE/Fusion) through one canonical adom-lbr JSON — symbol + footp
name: adom-lbr-fusion-export description: > Export a KiCad part to a Fusion 360 library (.lbr) with a REAL footprint and a 3D body — and avoid the four traps that bite. Companion to the adom-lbr app. Use when generating/importing an EAGLE .lbr for Fusion 360 (or Altium/OrCAD), attaching a 3D model to a Fusion package, or debugging a wrong footprint / a gray 3D placeholder / a rejected URN. Trigger words: fusion library export, fusion 360 library, lbr for fusion, eagle lbr, .lbr footprint, lbr 3d model, package3d, package3dinstance, wip_urn, fusion cloud urn, adsk.wipprod fs.file, bind 3d, create3dpackage, lbr placeholder footprint, lbr footprint wrong, fusion gray placeholder, fusion no components, altium lbr, orcad lbr.
adom-lbr — Fusion 360 library export
How to turn a KiCad part into a Fusion 360 library that places correctly — with
the real footprint and a 3D body. The same .lbr also imports into Altium
and OrCAD. This skill is the focused field guide; the adom-lbr app is the
tool. Read this before exporting an .lbr you'll fabricate or hand to Fusion.
The one-liner
adom-lbr generate --sym part.kicad_sym --fp part.kicad_mod --model part.step -o part.lbr
# ^^^^ real footprint ^^^^^^^ 3D handoff sidecar
Then the Fusion bridge attaches the 3D (it can't be baked into the file).
The four traps (this is why the skill exists)
No
--fp→ a 2-column PLACEHOLDER, not the real footprint. Without the.kicad_mod, every pad is dumped into two columns. A 4-sided LQFP comes out as a domino. Always pass--fpfor anything you'll fabricate. The tool now prints a HINT when you forget — heed it.3D is a Fusion-side ATTACH, not a flat-file write. A 3D body only renders once Fusion brings the model into a session. So the
.lbrstays 2D and the bridge does: open.lbr(library active) →Electron.Create3DPackage→ importmodel.path→ orient →Package3DStop(FINISH) → Save. That step both binds and renders.--modeljust emits the sidecar that points the bridge at the model + package.Self-hosted models use
wip_urn, NOTurn:adsk.eagle:package. That eagle form is for MANAGED (library.io) parts only. A model you upload yourself links by the versioned file URN with an emptyurn:<package3d name="P" urn="" wip_urn="urn:adsk.wipprod:fs.file:vf.<id>?version=N" locally_modified="yes" type="model">…</package3d> <!-- device: --> <package3dinstance package3d_urn="urn:adsk.wipprod:fs.file:vf.<id>?version=N"/>Never put a
dm.lineageURN in the.lbr. Fusion pins the versionedfs.file:vf …?version=N.dm.lineageis the stable cross-version id — keep it only as sidecar provenance.adom-lbr bind-3drefuses adm.lineageURN.
Bonus: a pre-written wip_urn shows a gray placeholder on a cold open until
the model is brought into a session — so bind-3d is a fast-path for known-synced
models, never a substitute for the bridge attach.
The flow (who does what)
| Step | Who | Command / action |
|---|---|---|
Generate 2D .lbr + sidecar |
adom-lbr | generate --sym … --fp … --model part.step |
| Attach 3D (binds and renders) | Fusion bridge | Create3DPackage → import → orient → FINISH → Save |
| Report the minted URN | Fusion bridge | fusion_aps_file_info {query:"<package>"} → fs.file:vf…?version=N |
| Record URN back (provenance) | adom-lbr | bind-3d --record-only --sidecar part.fusion3d.json --wip-urn <that> |
(Optional) bake binding into .lbr |
adom-lbr | bind-3d --lbr part.lbr --wip-urn <that> |
The in-Fusion library is the runtime source of truth; the sidecar is adom-lbr-owned bookkeeping (idempotency + provenance).
Footprint mapping facts
- KiCad is Y-down, EAGLE is Y-up → Y is negated.
- The KiCad pad angle maps directly to EAGLE
rot=(KiCad 90 →R90), matching Fusion's own export — top/bottom QFP/SOIC pads getrot="R90". - Silkscreen outline comes from the footprint body (
F.SilkS→F.Fab→ pad extents), matched per-layer.
Drawing the chip outline on the symbol — --symbol-art
If adom-symbol gave a 3D outline (<mpn>-3d-outline-*.svg), draw it on the symbol:
adom-lbr generate --sym P.kicad_sym --fp P.kicad_mod --symbol-art P-3d-outline-bold.svg -o P.lbr
- Transcribes the outline's polylines → EAGLE
<wire>s on layer 94, Y negated, centred + scaled to ~0.38× the body (matches adom-symbol). Tune with--symbol-art-scale. One.lbrcarries it into Fusion/Altium/OrCAD. - Pitfall — heavy art:
-blueprint≈ 3000 wires / ~300 KB; the tool prints a WARN telling you to use a lighter-bold/-thinoutline. Heed it. - Standing rule: match adom-symbol's outline as closely as possible on every
export.
.lbrdone; KiCad.kicad_sym+ future native exporters are TODO (../../docs/ROADMAP.md).
Quick triage
| Symptom | Fix |
|---|---|
| Footprint is two columns / a domino | regenerate with --fp part.kicad_mod |
| Fusion: "No Components" | adom-lbr lint part.lbr → fix the reported code |
| 3D body is a gray placeholder | let the bridge attach it (Create3DPackage → FINISH) |
bind-3d rejected the URN |
self-uploaded → --wip-urn (fs.file:vf…?version=N); managed → --urn |
| 3D offset / wrong pin 1 | run chipfit; set placement in the sidecar before FINISH |
| Chip drawing on symbol too big/small | --symbol-art-scale <frac> (default 0.38) |
.lbr huge / symbol editor laggy |
use a lighter outline (-bold/-thin) or drop --symbol-art |
Human walkthrough + screenshots: README.md next to this skill (and the deeper dive in docs/fusion-export.md). This is a sub-skill of the adom-lbr app — it installs and surfaces with it.
---
name: adom-lbr-fusion-export
description: >
Export a KiCad part to a Fusion 360 library (.lbr) with a REAL footprint and a
3D body — and avoid the four traps that bite. Companion to the adom-lbr app.
Use when generating/importing an EAGLE .lbr for Fusion 360 (or Altium/OrCAD),
attaching a 3D model to a Fusion package, or debugging a wrong footprint / a
gray 3D placeholder / a rejected URN. Trigger words: fusion library export,
fusion 360 library, lbr for fusion, eagle lbr, .lbr footprint, lbr 3d model,
package3d, package3dinstance, wip_urn, fusion cloud urn, adsk.wipprod fs.file,
bind 3d, create3dpackage, lbr placeholder footprint, lbr footprint wrong,
fusion gray placeholder, fusion no components, altium lbr, orcad lbr.
---
# adom-lbr — Fusion 360 library export
How to turn a KiCad part into a Fusion 360 library that places correctly — with
the real footprint and a 3D body. The same `.lbr` also imports into **Altium**
and **OrCAD**. This skill is the focused field guide; the `adom-lbr` app is the
tool. Read this before exporting an `.lbr` you'll fabricate or hand to Fusion.
## The one-liner
```bash
adom-lbr generate --sym part.kicad_sym --fp part.kicad_mod --model part.step -o part.lbr
# ^^^^ real footprint ^^^^^^^ 3D handoff sidecar
```
Then the **Fusion bridge attaches the 3D** (it can't be baked into the file).
## The four traps (this is why the skill exists)
1. **No `--fp` → a 2-column PLACEHOLDER, not the real footprint.** Without the
`.kicad_mod`, every pad is dumped into two columns. A 4-sided LQFP comes out
as a domino. **Always pass `--fp` for anything you'll fabricate.** The tool now
prints a HINT when you forget — heed it.
2. **3D is a Fusion-side ATTACH, not a flat-file write.** A 3D body only renders
once Fusion brings the model into a session. So the `.lbr` stays 2D and the
**bridge** does: open `.lbr` (library active) → `Electron.Create3DPackage` →
import `model.path` → orient → `Package3DStop` (**FINISH**) → Save. That step
both binds *and* renders. `--model` just emits the sidecar that points the
bridge at the model + package.
3. **Self-hosted models use `wip_urn`, NOT `urn:adsk.eagle:package`.** That eagle
form is for MANAGED (library.io) parts only. A model you upload yourself links
by the **versioned file URN** with an empty `urn`:
```xml
<package3d name="P" urn="" wip_urn="urn:adsk.wipprod:fs.file:vf.<id>?version=N"
locally_modified="yes" type="model">…</package3d>
<!-- device: --> <package3dinstance package3d_urn="urn:adsk.wipprod:fs.file:vf.<id>?version=N"/>
```
4. **Never put a `dm.lineage` URN in the `.lbr`.** Fusion pins the *versioned*
`fs.file:vf …?version=N`. `dm.lineage` is the stable cross-version id — keep it
only as sidecar provenance. `adom-lbr bind-3d` refuses a `dm.lineage` URN.
Bonus: a pre-written `wip_urn` shows a **gray placeholder** on a cold open until
the model is brought into a session — so `bind-3d` is a fast-path for known-synced
models, never a substitute for the bridge attach.
## The flow (who does what)
| Step | Who | Command / action |
|---|---|---|
| Generate 2D `.lbr` + sidecar | adom-lbr | `generate --sym … --fp … --model part.step` |
| Attach 3D (binds **and** renders) | Fusion bridge | Create3DPackage → import → orient → FINISH → Save |
| Report the minted URN | Fusion bridge | `fusion_aps_file_info {query:"<package>"}` → `fs.file:vf…?version=N` |
| Record URN back (provenance) | adom-lbr | `bind-3d --record-only --sidecar part.fusion3d.json --wip-urn <that>` |
| (Optional) bake binding into `.lbr` | adom-lbr | `bind-3d --lbr part.lbr --wip-urn <that>` |
The **in-Fusion library is the runtime source of truth**; the sidecar is
adom-lbr-owned bookkeeping (idempotency + provenance).
## Footprint mapping facts
- KiCad is Y-down, EAGLE is Y-up → **Y is negated**.
- The KiCad pad angle maps **directly** to EAGLE `rot=` (KiCad 90 → `R90`),
matching Fusion's own export — top/bottom QFP/SOIC pads get `rot="R90"`.
- Silkscreen outline comes from the footprint body (`F.SilkS` → `F.Fab` → pad
extents), matched per-layer.
## Drawing the chip outline on the symbol — `--symbol-art`
If adom-symbol gave a 3D outline (`<mpn>-3d-outline-*.svg`), draw it on the symbol:
```bash
adom-lbr generate --sym P.kicad_sym --fp P.kicad_mod --symbol-art P-3d-outline-bold.svg -o P.lbr
```
- Transcribes the outline's polylines → EAGLE `<wire>`s on layer 94, Y negated,
centred + scaled to ~0.38× the body (matches adom-symbol). Tune with
`--symbol-art-scale`. One `.lbr` carries it into Fusion/Altium/OrCAD.
- **Pitfall — heavy art:** `-blueprint` ≈ 3000 wires / ~300 KB; the tool prints a
WARN telling you to use a lighter `-bold`/`-thin` outline. Heed it.
- **Standing rule:** match adom-symbol's outline as closely as possible on every
export. `.lbr` done; KiCad `.kicad_sym` + future native exporters are TODO
([../../docs/ROADMAP.md](../../docs/ROADMAP.md)).
## Quick triage
| Symptom | Fix |
|---|---|
| Footprint is two columns / a domino | regenerate **with `--fp part.kicad_mod`** |
| Fusion: "No Components" | `adom-lbr lint part.lbr` → fix the reported code |
| 3D body is a gray placeholder | let the bridge attach it (Create3DPackage → FINISH) |
| `bind-3d` rejected the URN | self-uploaded → `--wip-urn` (`fs.file:vf…?version=N`); managed → `--urn` |
| 3D offset / wrong pin 1 | run chipfit; set `placement` in the sidecar before FINISH |
| Chip drawing on symbol too big/small | `--symbol-art-scale <frac>` (default 0.38) |
| `.lbr` huge / symbol editor laggy | use a lighter outline (`-bold`/`-thin`) or drop `--symbol-art` |
Human walkthrough + screenshots: **[README.md](README.md)** next to this skill
(and the deeper dive in [docs/fusion-export.md](../../docs/fusion-export.md)). This
is a sub-skill of the **[adom-lbr](https://wiki.adom.inc/adom/adom-lbr)** app — it
installs and surfaces with it.