fusion-export-for-hydrogen
Public Made by Adomby adom
Export a Fusion 360 Electronics design for Hydrogen — orchestrates AdomBridge fusion_* primitives to produce silkscreen PNGs, board/schematic source (.fbrd/.fsch), and 3D models (.usdz/.step/.f3d); pu
name: fusion-export-for-hydrogen description: Export Fusion 360 Electronics projects for Hydrogen — orchestrates existing AdomBridge primitives to produce BRD, SCH, F3D, STEP, USDZ, and silkscreen PNGs. Also covers Kitchen Sink export (adds Gerbers, BOM, CPL). Use when the user says "export for hydrogen", "export kitchen sink", "fusion export", "hydrogen export", "export brd sch f3d", "export gerbers bom cpl", "export molecule", "fusion export all files", "export usdz", or "export step".
Fusion Export for Hydrogen
Export Fusion 360 Electronics designs for the Hydrogen viewer and manufacturing by orchestrating AdomBridge CLI primitives from the container.
Prerequisite: adom-desktop must be connected (adom-desktop ping) and Fusion must be running with the design open.
Architecture
The export is orchestrated from the container using existing adom-desktop fusion_* primitives. No custom add-in commands or HelperJoe buttons are needed — each step calls a standard AdomBridge verb.
Container (skill orchestration)
│
├── fusion_export_eagle_source → BRD file
├── fusion_export_eagle_source → SCH file (after switching to schematic)
├── fusion_show_3d_board → switch to 3D view
├── fusion_export_f3d → Fusion archive
├── fusion_export_step → STEP 3D model
├── fusion_export_usdz → AR/Hydrogen 3D model
├── fusion_take_silkscreen_screenshot → top silkscreen PNG
├── fusion_take_silkscreen_screenshot → bottom silkscreen PNG
└── pull_file → copy all files to container
Export for Hydrogen — Step by Step
Step 0: Open the board + verify state
Open the .fbrd board file DIRECTLY — never the bare name or the .fprj. A Fusion
electronics file that links to multiple designs (most "FRAME MOL" boards) pops a native
"Select Electronics Design File" picker when you open the project/bare name. That picker
is a CEF/Chromium modal that cannot be driven headlessly (keyboard doesn't reach its list;
screen-coord clicks are unreliable on multi-monitor/HiDPI). Targeting the .fbrd skips it
entirely and lands straight in PCB Editor (live-confirmed):
adom-desktop fusion_open_cloud_file '{"projectName":"Main","folderPath":"Molecules/COSMIIC","fileName":"PG4 FRAME MOL","fileExtension":"fbrd","recovery":"discard"}'
# → doc opens in PCB Editor, NO picker. (Omitting fileExtension may hit the multi-design picker.)
Then verify:
adom-desktop fusion_get_app_state '{}'
Ensure: Fusion running, activeWorkspace is PCB Editor, isElectronics: true.
If a "Select Electronics Design File" dialog DID appear (e.g. a .fbrd that itself links to
multiple designs), it can't be resolved headlessly today — pick on the desktop, or fall back to
CDP into the CEF dialog. fusion_window_info / the bridge's blockingDialogs will name it.
If already open but not in PCB Editor:
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
Step 1: Export BRD
adom-desktop fusion_export_eagle_source '{"outputPath":"C:/tmp/export/<name>.brd","format":"brd"}'
Step 2: Export SCH
Switch to schematic, then export:
adom-desktop fusion_electron_run '{"command":"EDIT .s1"}'
sleep 2
adom-desktop fusion_export_eagle_source '{"outputPath":"C:/tmp/export/<name>.sch","format":"sch"}'
Switch back to board after:
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
Step 3: Switch to 3D view
adom-desktop fusion_show_3d_board '{}'
Wait for workspace to switch (5-10s). Verify:
adom-desktop fusion_get_app_state '{}'
# Expected: activeWorkspace: "Design" or "3D PCB"
Step 4: Export F3D
adom-desktop fusion_export_f3d '{"outputPath":"C:/tmp/export/<name>.f3d"}'
Step 5: Export STEP
adom-desktop fusion_export_step '{"outputPath":"C:/tmp/export/<name>.step"}'
Step 6: Export USDZ
adom-desktop fusion_export_usdz '{"outputPath":"C:/tmp/export/<name>.usdz"}'
Step 7: Capture silkscreen PNGs
adom-desktop fusion_take_silkscreen_screenshot '{"outputPath":"C:/tmp/export/<name>_silkscreen_top.png","layer":"top"}'
adom-desktop fusion_take_silkscreen_screenshot '{"outputPath":"C:/tmp/export/<name>_silkscreen_bottom.png","layer":"bottom"}'
These produce 2048x2048 transparent-background PNGs. Requires the 3D Design view (done in Step 3). Each capture takes ~3s (includes 1s render sleep).
Step 8: Pull files to container
adom-desktop pull_file '{"filePaths":["C:/tmp/export/<name>.brd","C:/tmp/export/<name>.sch","C:/tmp/export/<name>.f3d","C:/tmp/export/<name>.step","C:/tmp/export/<name>.usdz","C:/tmp/export/<name>_silkscreen_top.png","C:/tmp/export/<name>_silkscreen_bottom.png"],"saveTo":"/tmp/export"}'
Output files
| File | Format | Description |
|---|---|---|
<name>.brd |
EAGLE board | PCB layout |
<name>.sch |
EAGLE schematic | Circuit schematic |
<name>.f3d |
Fusion archive | Full parametric 3D model |
<name>.step |
STEP | CAD interchange 3D model |
<name>.usdz |
USDZ | AR/Hydrogen 3D viewer |
<name>_silkscreen_top.png |
PNG | Top silkscreen render (transparent bg) |
<name>_silkscreen_bottom.png |
PNG | Bottom silkscreen render (transparent bg) |
Kitchen Sink Export
For manufacturing files in addition to the Hydrogen export, add these steps after Step 7:
Gerbers
Switch back to 2D board first:
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
sleep 3
adom-desktop fusion_export_gerbers '{"outputPath":"C:/tmp/export/gerbers.zip"}'
BOM
adom-desktop fusion_export_bom '{"outputPath":"C:/tmp/export/bom.csv"}'
CPL
adom-desktop fusion_export_cpl '{"outputPath":"C:/tmp/export/cpl.csv"}'
Saving Designs
The cloud save command:
adom-desktop fusion_execute_text_command '{"command":"Commands.Start PLM360SaveCommand"}'
This opens a Save dialog. Find and confirm it:
# Wait for dialog
sleep 5
# Press Enter to confirm (finds Save dialog automatically)
adom-desktop fusion_send_key '{"key":"enter"}'
Caching Bug Workaround
After saving, exports may produce stale files. Workaround:
- Close all project tabs:
adom-desktop fusion_close_document '{"save":false}'(repeat) - Reopen the board (
.fbrd, NOT.fprj— the project file triggers the multi-design picker):adom-desktop fusion_open_cloud_file '{"projectName":"Main","fileName":"<name>","fileExtension":"fbrd","folderPath":"<path>"}' - Switch to board view if needed:
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}' - Run the export steps above
After Export — Publish
Once all files are in the user's local Downloads folder, ask the user whether they want to publish. Two destinations:
Publish to the Adom Wiki — adom-wiki pkg publish (canonical, new wiki = wiki.adom.inc)
The wiki is the source of truth. A molecule is a wiki component package: a directory
with a package.json + the exported source files. adom-wiki pkg publish auto-converts STEP→GLB
(live step2glb service), runs the pre-publish lint, generates the page, and creates a release.
(The old adom-wiki page publish / asset upload CLI targeted wiki-v1 and is retired — do
not use it for the new wiki.)
1. Stage the package dir — the pulled export files + a package.json. Do NOT include a
page.json (the server generates a correct one; a stale/foreign one silently overrides
ownership — see gotchas):
cd /tmp/export/<name> # holds <name>.step/.f3d/.fbrd/.fsch/.usdz, *_gerbers.zip, bom.csv, cpl.csv, board PNGs, README.md
cat > package.json <<'JSON'
{
"slug": "<molecule-slug>",
"version": "1.0.0",
"type": "component",
"description": "<at least 20 chars describing the molecule>",
"tags": ["molecule", "<org-or-family>", "<function>"],
"dependencies": {},
"license": "MIT",
"component": { "mpn": "<name>", "manufacturer": "", "category": "other" }
}
JSON
2. Publish (owner = your account, or an org you belong to via --org). This is where STEP→GLB runs:
adom-wiki pkg publish --org <org> --yes
# → "Converting <name>.step → <name>.glb via step2glb..." then "Published <org>/<slug>@<version>"
3. Set visibility explicitly (the --public/--private flag is only honored on first publish):
adom-wiki page visibility <slug> public # or: private
Gotchas (hard-won):
- Include a
.step— that's what triggers GLB generation; without it the 3D viewer is blank. (has_3d_model/model_3d_pathget set automatically once the.glbis produced.) - Never push a stale/foreign
page.json. On the new wiki it's authoritative fororg_id/author/visibility/versionand overrides--org/--privateon reindex (onlyowneris protected). Omit it. If a page's org binding drifts, repair it:curl -X POST https://wiki.adom.inc/api/v1/pages/<slug>/transfer -H "Authorization: Bearer $(cat /var/run/adom/api-key)" -H "Content-Type: application/json" -d '{"org":"<org>"}' - Ownership ≠ visibility.
--org Xmakes any member of org X an editor (regardless of public/private);publicjust means anyone can view. To make a molecule editable by a team, publish/transfer under their org. - Lint warns "no
.kicad_sym/.kicad_mod" for Fusion designs — expected, non-blocking. - Manage/delete:
adom-wiki pkg info <owner>/<slug>,adom-wiki repo delete <slug> --owner <o> --confirm(soft, reversible viaadom-wiki repo undelete).
Publish to Hydrogen (live project use)
Hydrogen is where molecules are used in actual projects. Uses the adom-molecule CLI (published by John, v0.1.0).
# Install if not present
which adom-molecule || (gh release download --repo adom-inc/adom-molecule --pattern 'adom-molecule' --output /tmp/adom-molecule-bin && sudo mv /tmp/adom-molecule-bin /usr/local/bin/adom-molecule && sudo chmod +x /usr/local/bin/adom-molecule)
# Upload to a user's Hydrogen account
adom-molecule create --name "<molecule-name>" --owner <username> \
--usdz <name>.usdz --f3d <name>.f3d --brd <name>.brd
The molecule becomes available at https://hydrogen.adom.inc/<username>/molecules/<name> and auto-queues 3D optimization (USDZ→GLB via Blender pipeline).
Suggested prompt after export
After the export completes, tell the user:
"All files exported to
<folder>. Would you like me to:
- Publish to the Adom Wiki — creates a molecule reference page with pin map, BOM, and assets
- Upload to Hydrogen — makes it available in your Hydrogen projects at
hydrogen.adom.inc/<user>/molecules/<name>- Both
- Skip — just keep the files locally"
Important Notes
- Focus stealing: Steps 3 and 7 switch Fusion workspaces, which steals desktop focus. Warn the user.
- 3D view required for Steps 4-7. If
fusion_show_3d_boardfails, the user may need to run "Push to 3D PCB" manually from the Design tab. - Silkscreen capture requires the 3D Design view, not PCB Editor. Always do Steps 4-7 after Step 3.
- pull_file from Google Drive paths may produce empty files. Use shell_execute + base64 as a workaround if the output folder is on Google Drive.
- Shell execute needs approval on the Adom Desktop app for each new script.
- adom-molecule CLI is at
adom-inc/adom-molecule(Rust, published by John). Install via GitHub release.
---
name: fusion-export-for-hydrogen
description: Export Fusion 360 Electronics projects for Hydrogen — orchestrates existing AdomBridge primitives to produce BRD, SCH, F3D, STEP, USDZ, and silkscreen PNGs. Also covers Kitchen Sink export (adds Gerbers, BOM, CPL). Use when the user says "export for hydrogen", "export kitchen sink", "fusion export", "hydrogen export", "export brd sch f3d", "export gerbers bom cpl", "export molecule", "fusion export all files", "export usdz", or "export step".
---
# Fusion Export for Hydrogen
Export Fusion 360 Electronics designs for the Hydrogen viewer and manufacturing by orchestrating AdomBridge CLI primitives from the container.
**Prerequisite:** `adom-desktop` must be connected (`adom-desktop ping`) and Fusion must be running with the design open.
## Architecture
The export is **orchestrated from the container** using existing `adom-desktop fusion_*` primitives. No custom add-in commands or HelperJoe buttons are needed — each step calls a standard AdomBridge verb.
```
Container (skill orchestration)
│
├── fusion_export_eagle_source → BRD file
├── fusion_export_eagle_source → SCH file (after switching to schematic)
├── fusion_show_3d_board → switch to 3D view
├── fusion_export_f3d → Fusion archive
├── fusion_export_step → STEP 3D model
├── fusion_export_usdz → AR/Hydrogen 3D model
├── fusion_take_silkscreen_screenshot → top silkscreen PNG
├── fusion_take_silkscreen_screenshot → bottom silkscreen PNG
└── pull_file → copy all files to container
```
## Export for Hydrogen — Step by Step
### Step 0: Open the board + verify state
**Open the `.fbrd` board file DIRECTLY — never the bare name or the `.fprj`.** A Fusion
electronics file that links to multiple designs (most "FRAME MOL" boards) pops a native
**"Select Electronics Design File" picker** when you open the project/bare name. That picker
is a **CEF/Chromium modal that cannot be driven headlessly** (keyboard doesn't reach its list;
screen-coord clicks are unreliable on multi-monitor/HiDPI). Targeting the `.fbrd` skips it
entirely and lands straight in PCB Editor (live-confirmed):
```bash
adom-desktop fusion_open_cloud_file '{"projectName":"Main","folderPath":"Molecules/COSMIIC","fileName":"PG4 FRAME MOL","fileExtension":"fbrd","recovery":"discard"}'
# → doc opens in PCB Editor, NO picker. (Omitting fileExtension may hit the multi-design picker.)
```
Then verify:
```bash
adom-desktop fusion_get_app_state '{}'
```
Ensure: Fusion running, `activeWorkspace` is `PCB Editor`, `isElectronics: true`.
If a "Select Electronics Design File" dialog DID appear (e.g. a `.fbrd` that itself links to
multiple designs), it can't be resolved headlessly today — pick on the desktop, or fall back to
CDP into the CEF dialog. `fusion_window_info` / the bridge's `blockingDialogs` will name it.
If already open but not in PCB Editor:
```bash
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
```
### Step 1: Export BRD
```bash
adom-desktop fusion_export_eagle_source '{"outputPath":"C:/tmp/export/<name>.brd","format":"brd"}'
```
### Step 2: Export SCH
Switch to schematic, then export:
```bash
adom-desktop fusion_electron_run '{"command":"EDIT .s1"}'
sleep 2
adom-desktop fusion_export_eagle_source '{"outputPath":"C:/tmp/export/<name>.sch","format":"sch"}'
```
Switch back to board after:
```bash
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
```
### Step 3: Switch to 3D view
```bash
adom-desktop fusion_show_3d_board '{}'
```
Wait for workspace to switch (5-10s). Verify:
```bash
adom-desktop fusion_get_app_state '{}'
# Expected: activeWorkspace: "Design" or "3D PCB"
```
### Step 4: Export F3D
```bash
adom-desktop fusion_export_f3d '{"outputPath":"C:/tmp/export/<name>.f3d"}'
```
### Step 5: Export STEP
```bash
adom-desktop fusion_export_step '{"outputPath":"C:/tmp/export/<name>.step"}'
```
### Step 6: Export USDZ
```bash
adom-desktop fusion_export_usdz '{"outputPath":"C:/tmp/export/<name>.usdz"}'
```
### Step 7: Capture silkscreen PNGs
```bash
adom-desktop fusion_take_silkscreen_screenshot '{"outputPath":"C:/tmp/export/<name>_silkscreen_top.png","layer":"top"}'
adom-desktop fusion_take_silkscreen_screenshot '{"outputPath":"C:/tmp/export/<name>_silkscreen_bottom.png","layer":"bottom"}'
```
These produce 2048x2048 transparent-background PNGs. Requires the 3D Design view (done in Step 3). Each capture takes ~3s (includes 1s render sleep).
### Step 8: Pull files to container
```bash
adom-desktop pull_file '{"filePaths":["C:/tmp/export/<name>.brd","C:/tmp/export/<name>.sch","C:/tmp/export/<name>.f3d","C:/tmp/export/<name>.step","C:/tmp/export/<name>.usdz","C:/tmp/export/<name>_silkscreen_top.png","C:/tmp/export/<name>_silkscreen_bottom.png"],"saveTo":"/tmp/export"}'
```
### Output files
| File | Format | Description |
|------|--------|-------------|
| `<name>.brd` | EAGLE board | PCB layout |
| `<name>.sch` | EAGLE schematic | Circuit schematic |
| `<name>.f3d` | Fusion archive | Full parametric 3D model |
| `<name>.step` | STEP | CAD interchange 3D model |
| `<name>.usdz` | USDZ | AR/Hydrogen 3D viewer |
| `<name>_silkscreen_top.png` | PNG | Top silkscreen render (transparent bg) |
| `<name>_silkscreen_bottom.png` | PNG | Bottom silkscreen render (transparent bg) |
## Kitchen Sink Export
For manufacturing files in addition to the Hydrogen export, add these steps after Step 7:
### Gerbers
Switch back to 2D board first:
```bash
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
sleep 3
adom-desktop fusion_export_gerbers '{"outputPath":"C:/tmp/export/gerbers.zip"}'
```
### BOM
```bash
adom-desktop fusion_export_bom '{"outputPath":"C:/tmp/export/bom.csv"}'
```
### CPL
```bash
adom-desktop fusion_export_cpl '{"outputPath":"C:/tmp/export/cpl.csv"}'
```
## Saving Designs
The cloud save command:
```bash
adom-desktop fusion_execute_text_command '{"command":"Commands.Start PLM360SaveCommand"}'
```
This opens a Save dialog. Find and confirm it:
```bash
# Wait for dialog
sleep 5
# Press Enter to confirm (finds Save dialog automatically)
adom-desktop fusion_send_key '{"key":"enter"}'
```
## Caching Bug Workaround
After saving, exports may produce stale files. Workaround:
1. Close all project tabs: `adom-desktop fusion_close_document '{"save":false}'` (repeat)
2. Reopen the **board** (`.fbrd`, NOT `.fprj` — the project file triggers the multi-design picker): `adom-desktop fusion_open_cloud_file '{"projectName":"Main","fileName":"<name>","fileExtension":"fbrd","folderPath":"<path>"}'`
3. Switch to board view if needed: `adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'`
4. Run the export steps above
## After Export — Publish
Once all files are in the user's local Downloads folder, **ask the user** whether they want to publish. Two destinations:
### Publish to the Adom Wiki — `adom-wiki pkg publish` (canonical, new wiki = wiki.adom.inc)
The wiki is the source of truth. A molecule is a wiki **`component` package**: a directory
with a `package.json` + the exported source files. `adom-wiki pkg publish` **auto-converts STEP→GLB**
(live step2glb service), runs the pre-publish lint, generates the page, and creates a release.
(The old `adom-wiki page publish` / `asset upload` CLI targeted **wiki-v1** and is retired — do
not use it for the new wiki.)
**1. Stage the package dir** — the pulled export files + a `package.json`. **Do NOT include a
`page.json`** (the server generates a correct one; a stale/foreign one silently overrides
ownership — see gotchas):
```bash
cd /tmp/export/<name> # holds <name>.step/.f3d/.fbrd/.fsch/.usdz, *_gerbers.zip, bom.csv, cpl.csv, board PNGs, README.md
cat > package.json <<'JSON'
{
"slug": "<molecule-slug>",
"version": "1.0.0",
"type": "component",
"description": "<at least 20 chars describing the molecule>",
"tags": ["molecule", "<org-or-family>", "<function>"],
"dependencies": {},
"license": "MIT",
"component": { "mpn": "<name>", "manufacturer": "", "category": "other" }
}
JSON
```
**2. Publish** (owner = your account, or an org you belong to via `--org`). This is where STEP→GLB runs:
```bash
adom-wiki pkg publish --org <org> --yes
# → "Converting <name>.step → <name>.glb via step2glb..." then "Published <org>/<slug>@<version>"
```
**3. Set visibility explicitly** (the `--public`/`--private` flag is only honored on first publish):
```bash
adom-wiki page visibility <slug> public # or: private
```
**Gotchas (hard-won):**
- **Include a `.step`** — that's what triggers GLB generation; without it the 3D viewer is blank. (`has_3d_model` / `model_3d_path` get set automatically once the `.glb` is produced.)
- **Never push a stale/foreign `page.json`.** On the new wiki it's authoritative for `org_id`/`author`/`visibility`/`version` and **overrides `--org`/`--private` on reindex** (only `owner` is protected). Omit it. If a page's org binding drifts, repair it:
```bash
curl -X POST https://wiki.adom.inc/api/v1/pages/<slug>/transfer -H "Authorization: Bearer $(cat /var/run/adom/api-key)" -H "Content-Type: application/json" -d '{"org":"<org>"}'
```
- **Ownership ≠ visibility.** `--org X` makes any member of org **X** an editor (regardless of public/private); `public` just means anyone can *view*. To make a molecule editable by a team, publish/transfer under their org.
- Lint warns "no `.kicad_sym`/`.kicad_mod`" for Fusion designs — expected, non-blocking.
- Manage/delete: `adom-wiki pkg info <owner>/<slug>`, `adom-wiki repo delete <slug> --owner <o> --confirm` (soft, reversible via `adom-wiki repo undelete`).
### Publish to Hydrogen (live project use)
Hydrogen is where molecules are used in actual projects. Uses the `adom-molecule` CLI (published by John, v0.1.0).
```bash
# Install if not present
which adom-molecule || (gh release download --repo adom-inc/adom-molecule --pattern 'adom-molecule' --output /tmp/adom-molecule-bin && sudo mv /tmp/adom-molecule-bin /usr/local/bin/adom-molecule && sudo chmod +x /usr/local/bin/adom-molecule)
# Upload to a user's Hydrogen account
adom-molecule create --name "<molecule-name>" --owner <username> \
--usdz <name>.usdz --f3d <name>.f3d --brd <name>.brd
```
The molecule becomes available at `https://hydrogen.adom.inc/<username>/molecules/<name>` and auto-queues 3D optimization (USDZ→GLB via Blender pipeline).
### Suggested prompt after export
After the export completes, tell the user:
> "All files exported to `<folder>`. Would you like me to:
> 1. **Publish to the Adom Wiki** — creates a molecule reference page with pin map, BOM, and assets
> 2. **Upload to Hydrogen** — makes it available in your Hydrogen projects at `hydrogen.adom.inc/<user>/molecules/<name>`
> 3. **Both**
> 4. **Skip** — just keep the files locally"
## Important Notes
- **Focus stealing:** Steps 3 and 7 switch Fusion workspaces, which steals desktop focus. Warn the user.
- **3D view required for Steps 4-7.** If `fusion_show_3d_board` fails, the user may need to run "Push to 3D PCB" manually from the Design tab.
- **Silkscreen capture** requires the 3D Design view, not PCB Editor. Always do Steps 4-7 after Step 3.
- **pull_file from Google Drive paths** may produce empty files. Use shell_execute + base64 as a workaround if the output folder is on Google Drive.
- **Shell execute needs approval** on the Adom Desktop app for each new script.
- **adom-molecule CLI** is at `adom-inc/adom-molecule` (Rust, published by John). Install via GitHub release.