name: fusion-update-libraries description: Update component libraries in a Fusion 360 Electronics PCB design, preserving silkscreen customizations and syncing the 3D board view. Use when the user says "update libraries", "update components", "update from library", "refresh library", "library update", "update machine pins", "update contacts", "sync 3d board", "push to 3d pcb", "update 3d preview", or "library out of date".
Fusion Update Libraries
Update component library footprints/packages in a Fusion 360 Electronics PCB design while preserving silkscreen customizations, then sync the 2D layout to the 3D board view.
Prerequisite: adom-desktop must be connected (adom-desktop ping). The design must be open in the 2D PCB Editor workspace.
Overview
Library updates in Fusion's Electronics workspace pull the latest footprint geometry from cloud libraries into the active board. However, they have two side effects that must be handled:
Silkscreen text re-appears ā Names/values layers (tNames/bNames layers 25/26, tValues/bValues layers 27/28) that were intentionally deleted during board design get re-added by the library update. These must be identified and removed.
3D board view is stale ā Fusion no longer auto-syncs 2Dā3D. After updating libraries, you must manually push the 2D layout to the 3D PCB view before saving or exporting.
Step-by-Step Workflow
Step 1: Verify workspace state
adom-desktop fusion_get_app_state '{}' 2>&1 | python3 -c "
import sys,json
data = json.load(sys.stdin)
output = json.loads(data.get('output','{}'))
d = output.get('data',{})
print(f'Active: {d.get(\"activeDocument\")}, Workspace: {d.get(\"activeWorkspace\")}, Electronics: {d.get(\"isElectronics\")}')
"
Must be in PCB Editor workspace with isElectronics: True. If not:
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
Step 2: Capture pre-update silkscreen state
Before updating, capture the current silkscreen text so we can detect what gets re-added.
Screenshot the silkscreen layers:
# Show only silkscreen layers, hide everything else
adom-desktop fusion_electron_run '{"command":"DISPLAY NONE; DISPLAY 21 22 25 26 27 28; WINDOW FIT"}'
sleep 1
adom-desktop desktop_screenshot_window '{"hwnd":<fusion_hwnd>}'
Export board info to get component text state:
adom-desktop fusion_board_info '{}' 2>&1
This returns component placements with names/values. Save this data to compare after the update.
Key EAGLE layers for silkscreen:
| Layer | Name | Content |
|---|---|---|
| 21 | tPlace | Top silkscreen (outlines, markers) |
| 22 | bPlace | Bottom silkscreen (outlines, markers) |
| 25 | tNames | Top component reference designators |
| 26 | bNames | Bottom component reference designators |
| 27 | tValues | Top component values |
| 28 | bValues | Bottom component values |
Step 3: Run the library update
adom-desktop fusion_execute_text_command '{"command":"Commands.Start Electron::UpdateDesignFromAllLibraries"}'
This updates all components from their linked cloud libraries. Wait 5-10 seconds for it to complete.
Alternative ā update from a specific library only:
adom-desktop fusion_execute_text_command '{"command":"Commands.Start Electron::UpdateDesignFromLibrary"}'
This opens a dialog to select which library to update from.
Step 4: Check for re-added silkscreen text
After the update, compare the silkscreen state. Library updates commonly re-add text on layers 25-28 (tNames, bNames, tValues, bValues) that was intentionally deleted.
Screenshot the silkscreen layers again:
adom-desktop fusion_electron_run '{"command":"DISPLAY NONE; DISPLAY 21 22 25 26 27 28; WINDOW FIT"}'
sleep 1
adom-desktop desktop_screenshot_window '{"hwnd":<fusion_hwnd>}'
Compare before/after screenshots. Look for text labels that appeared after the update. Common culprits:
- Component names (
>NAME) appearing on tNames/bNames - Component values (
>VALUE) appearing on tValues/bValues - Package outlines changing size on tPlace/bPlace
To delete specific re-added text elements, use EAGLE DELETE command targeting the layer:
# Delete a specific text element by selecting it
# First, identify the text position from board_info or visual inspection
# Then use DELETE command pointed at those coordinates
adom-desktop fusion_electron_run '{"command":"DELETE (<x> <y>)"}'
Bulk approach ā smash and delete names/values:
If all component names/values on the board should be hidden (common for molecules where silkscreen is manually curated):
# SMASH separates name/value text from the component so they can be individually deleted
# Then delete the text on the names/values layers
adom-desktop fusion_electron_run '{"command":"DISPLAY NONE; DISPLAY 25 26 27 28"}'
# Group-select all visible text, then delete
adom-desktop fusion_electron_run '{"command":"GROUP ALL; DELETE (>0 0)"}'
CAUTION: Only delete text that was NOT present before the update. Compare screenshots carefully. Some designs intentionally keep certain reference designators visible.
Step 5: Restore normal layer display
# Show standard PCB editing layers
adom-desktop fusion_electron_run '{"command":"DISPLAY NONE; DISPLAY 1 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 41 42 43 44 45 46 51 52; WINDOW FIT"}'
Step 6: Push 2D layout to 3D board view
CRITICAL ā Fusion no longer auto-syncs 2Dā3D. You must manually push the updated 2D layout to the 3D PCB view before saving or exporting.
adom-desktop fusion_execute_text_command '{"command":"Commands.Start Electron::Pcb3DViewAdvanced"}'
This is the "Push to 3D PCB" command. It opens the 3D PCB view and syncs the current 2D board state into it. Wait 5-10 seconds for the sync to complete.
After the push, Fusion will be in the 3D PCB workspace. You can verify the 3D view looks correct:
adom-desktop desktop_screenshot_window '{"hwnd":<fusion_hwnd>}'
Step 7: Save
Return to the 2D board editor, then save:
# Switch back to 2D board
adom-desktop fusion_electron_run '{"command":"EDIT .brd"}'
sleep 2
# Save to cloud
adom-desktop fusion_execute_text_command '{"command":"Commands.Start PLM360SaveCommand"}'
# Wait for Save dialog, then confirm
sleep 5
# Find Save dialog HWND and press Enter
SAVE_HWND=$(adom-desktop fusion_window_info '{}' 2>&1 | python3 -c "
import sys,json
data = json.load(sys.stdin)
output = json.loads(data.get('output','{}'))
for d in output.get('dialogs',[]):
if d.get('title') == 'Save':
print(d['hwnd'])
break
")
adom-desktop fusion_send_key "{\"key\":\"enter\",\"hwnd\":$SAVE_HWND}"
Wait for the title bar to show the incremented version number without an asterisk.
Step 8: Export (optional)
If exporting after update, use the caching bug workaround from the fusion-export-for-hydrogen skill:
- Close all project tabs:
Commands.Start CloseDocumentCommand(repeat for each tab) - Reopen the
.fprjproject file - Switch to 2D board:
EDIT .brd - Run Export for Hydrogen:
Commands.Start Adom_AdomHelperJoe_export_for_hydrogen
See the fusion-export-for-hydrogen skill for full export details.
Quick Reference
| Action | Command |
|---|---|
| Switch to board | fusion_electron_run '{"command":"EDIT .brd"}' |
| Show silkscreen only | fusion_electron_run '{"command":"DISPLAY NONE; DISPLAY 21 22 25 26 27 28; WINDOW FIT"}' |
| Update all libraries | Commands.Start Electron::UpdateDesignFromAllLibraries |
| Update one library | Commands.Start Electron::UpdateDesignFromLibrary |
| Push 2Dā3D | Commands.Start Electron::Pcb3DViewAdvanced |
| Save to cloud | Commands.Start PLM360SaveCommand |
| Close document | Commands.Start CloseDocumentCommand |
| Show all layers | fusion_electron_run '{"command":"DISPLAY ALL; WINDOW FIT"}' |
| Get board info | fusion_board_info '{}' |
Important Notes
- Always capture silkscreen state BEFORE updating. Library updates are not easily reversible for individual text elements. If you miss something, you may need to undo the entire update.
- The 2Dā3D push is now mandatory. Fusion removed automatic sync. Forgetting this step means the 3D view (and F3D/USDZ exports) will show outdated geometry.
- Focus stealing warning: The "Push to 3D PCB" command switches Fusion to the 3D workspace, which steals desktop focus. Warn the user.
- Undo is available if the library update causes unexpected changes:
Electron::Undoor Ctrl+Z.