loobric-fusion
Loobric client for Autodesk Fusion tool libraries. File-based: it reads and
writes Fusion's .tools export (a zip wrapping a single tools.json) or the
bare tools.json, and syncs it bidirectionally with a
Loobric server — no Fusion add-in required, so it runs
anywhere the file does (including a Linux host with Fusion in a VM).
What syncs
Import (file → server). Every cutting tool becomes a ToolInstanceRecord:
- The whole tool dict rides verbatim in
clients.fusion360.data.tool— expressions, post-process, holder, start-values all survive losslessly. - The well-understood facts are asserted canonically with provenance
asserted:fusion360: name,geometry.shape(from the Fusion type), and the ISO-13399-coded dimensions DC/OAL/LCF/SFDM/NOF, each stamped with the tool's own unit system (mm/in). Unmapped codes are honestly absent. - Cutting data presets (
start-values.presets) are translated into the ratified normal form and contributed through the preset door:v_c→vc(m/min or ft/min by the tool's units),f_z→fz(mm or in),v_f_plunge/v_f→ the vertical-feed ratio, the material statement verbatim, coolant/ramp-angle/guid inextras. Raw RPM and feeds are never persisted — they are derivations, not source data. A preset below the server's floor (no material statement, or no engineering values — e.g. a probe's approach feeds, or Fusion's all-zero defaults) stays in the client section, counted, never guessed.
Export (server → file). Each record regenerates from its verbatim client
copy; canonical values win only where they actually differ (parallel
expressions entries are updated in step so Fusion doesn't recompute the old
number). Other origins' preset recommendations — a manufacturer's, FreeCAD's,
an agent's — are materialized as native Fusion presets named
<origin>: <label>, with RPM and feed computed from the tool's own
diameter and flute count. Re-importing an exported file never forks another
origin's recommendation back as a fusion360 one; editing one in Fusion
does fork it into your own — changed numbers are your recipe.
export --all additionally synthesizes best-effort Fusion tools from records
other clients created (experimental — smoke-test the import in Fusion).
Usage
pip install loobric-fusion
export LOOBRIC_BASE_URL=https://api.loobric.com
export LOOBRIC_API_KEY=<a cam-preset key: read+sync+assert>
loobric-fusion doctor # check server, key, state
loobric-fusion import MyLibrary.tools # Fusion -> Loobric
loobric-fusion import MyLibrary.tools --dry-run
loobric-fusion export FromLoobric.tools # Loobric -> Fusion
loobric-fusion export FromLoobric.tools --all
In Fusion: CAM → Tool Library → right-click a library → Export to produce
the .tools file; Import to bring one back. Identity is the tool guid
(the server holds it as client_item_id; the local guid → record map lives
in ~/.config/loobric/fusion-state.json), so repeat imports update instead
of duplicating and an unchanged library is a no-op.
Development
python -m pytest tests/
Pure translation lives in mapping.py/presetsync.py (no network, no
Fusion); the one dependency is the stdlib-only loobric client library from
loobric-cli — client verbs are
added there first. See loobric-server's docs/HOWTO_BUILD_A_CLIENT.md for
the architecture this client follows.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file loobric_fusion-0.1.0.tar.gz.
File metadata
- Download URL: loobric_fusion-0.1.0.tar.gz
- Upload date:
- Size: 31.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d31ca24cf4587dfacb7435e69e044f4d6dfab9bb348e15b3f4641f3f0c9f0fc
|
|
| MD5 |
b7785cb459c3e5b4d4f7b8c7537e2152
|
|
| BLAKE2b-256 |
ae51146db83555d42cf3146cd8b8e1900b351bd5bff61d746d46b90565866447
|
Provenance
The following attestation bundles were made for loobric_fusion-0.1.0.tar.gz:
Publisher:
publish.yml on loobric/loobric-clients
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
loobric_fusion-0.1.0.tar.gz -
Subject digest:
8d31ca24cf4587dfacb7435e69e044f4d6dfab9bb348e15b3f4641f3f0c9f0fc - Sigstore transparency entry: 2499480572
- Sigstore integration time:
-
Permalink:
loobric/loobric-clients@19865b9dd956c18f6e64b0e8b51a0c9b3d996d52 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/loobric
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19865b9dd956c18f6e64b0e8b51a0c9b3d996d52 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file loobric_fusion-0.1.0-py3-none-any.whl.
File metadata
- Download URL: loobric_fusion-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf944d6285985c1c5b43283b2f93fb26c4ed7401fb24f79337ba2e3fe7954693
|
|
| MD5 |
23b16212d1accd181a1f2b92ff11f3c7
|
|
| BLAKE2b-256 |
69247efddd4a48e9199c1d66c0100e5a01d17435527442e9567a9c35e57e39df
|
Provenance
The following attestation bundles were made for loobric_fusion-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on loobric/loobric-clients
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
loobric_fusion-0.1.0-py3-none-any.whl -
Subject digest:
cf944d6285985c1c5b43283b2f93fb26c4ed7401fb24f79337ba2e3fe7954693 - Sigstore transparency entry: 2499480578
- Sigstore integration time:
-
Permalink:
loobric/loobric-clients@19865b9dd956c18f6e64b0e8b51a0c9b3d996d52 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/loobric
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@19865b9dd956c18f6e64b0e8b51a0c9b3d996d52 -
Trigger Event:
workflow_dispatch
-
Statement type: