Synthesis Exporter
August 21, 2025 · View on GitHub
This is an addin for Autodesk® Fusion™ that will export a Mirabuf usable by the Synthesis simulator.
Features
- Materials
- Apperances
- Instances
- Joints
- Static and Dynamic components
- Mesh Quality
- Thumbnail Capture
- Local Save
- Simple Motors
- GZip compression
- Motion Links
- Complex Motors
- Sending compressed file
- File Diffs
Pre-requisites
Protobuf
You can download Protobuf v23.3 here.
Dev Tools
We use VSCode Primarily, download it to interact with our code or use your own at your own risk.
How to Build + Run
- Open
Autodesk Fusion - Select
UTILITIESfrom the top bar - Click
ADD-INSButton - Click
Add-Instab at the top of Scripts and Add-Ins dialog - Press + Button under My Add-Ins
- Navigate to the containing folder for this Addin and click open at bottom - clone-directory/synthesis/exporters/SynthesisFusionAddin
- Synthesis should be an option - select it and click run at the bottom of the dialog
- There should now be a button that says Synthesis in your utilities menu
- If there is no button there may be a problem - see below for checking log file
How to Debug
Debug Non Start
Most of the runtime for the addin is saved under the logs directory in this folder
- Open
logs/synthesis.log- If nothing appears something went very wrong (make a issue on this github)
- If something appears and you cannot solve it feel free to make an issue anyway and include the file
General Debugging
- Open
Autodesk Fusion - Select
UTILITIESfrom the top bar - Click
ADD-INSButton - Click
Add-Instab at the top of Scripts and Add-Ins dialog - Press + Button under My Add-Ins
- Navigate to the containing folder for this Addin and click open at bottom - clone-directory/synthesis/exporters/SynthesisFusionAddin
- Synthesis should be an option - select it and click
Debugat the bottom of the dialog- This is in a dropdown with the Run Button
- This should open VSCode - Now run with
FN+5- Now you may add break points or debug at will
How to Package
Packaging is mainly for compressing the files into a smaller footprint
Contact us for information on how to use the packaging script to obfuscate all the files using pyminifier.
How to Format
We format using a Python formatter called black in conjunction with
isort.
- Install by
pip3 install black && pip3 install isortorpip install black && pip install isort - Use
isort .followed byblack .to format all relevant exporter python files.- or, alternatively, run
python ./tools/format.pyto do this for you!
- or, alternatively, run
Note: black will always ignore files in the proto/proto_out folder since google formats those
Docstring standard
This standard is inconsistently applied, and that's ok
def foo(bar: fizz="flower") -> Result[walrus, None]:
"""
Turns a fizz into a walrus
Parameters:
bar - The fizz to be transformed (default = "flower") ; fizz standards are subject to change, old fizzes may no longer be valid
Returns:
Success - She new walrus
Failure - None if the summoning fails ; the cause of failure will be printed, not returned
Notes:
- Only works as expected if the bar arg isn't a palindrome or an anagram of coffee. Otherwise unexpected (but still valid) walruses may be returned
- Please do not name your fizz "rizz" either, it hurts the walrus's feelings
TODO: Consult witch about inconsistent alchemical methods
"""
# More alchemical fizz -> walrus code
some_walrus = bar + "_coffee"
return some_walrus
Note that not this much detail is necessary when writing function documentation, notes, defaults, and a differentiation between sucess and failure aren't always necessary.
Where to list potential causes of failure?
It depends on how many you can list
- 1: In the failure return case
- 2-3: In the notes section
- 4+: In a dedicated "potential causes of failure section" between the "returns" and "notes" sections
Additionally, printing the error instead of returning it is bad practice