Extract resources from Autodesk Fusion Electronics .f3z project files
Project description
FusionExtractor
A Python library for extracting resources from Autodesk Fusion Electronics .f3z project files.
Overview
.f3z files are ZIP archives that embed multiple nested archives containing schematic (.sch), PCB (.brd), and preview image data. FusionExtractor unpacks these without any third-party dependencies.
Installation
pip install fusionextractor # stdlib only
pip install "fusionextractor[zstd]" # adds Zstandard support for 3D model previews
Examples
A sample Fusion Electronics project is included in examples/IOMOD-AD5593R_v2_0.f3z for
use by automatic tests and for you to use when trying out the library.
To run examples/extract.py, open a terminal in the library folder and type:
pip install -e ".[zstd]"
python examples/extract.py examples/IOMOD-AD5593R-v2_0.f3z
This will create a new folder called output in the current directory, and extract various
assets from the sample project into it. Check the source of extract.py to see the
options it uses relating to output filenames, etc.
Usage
from fusionextractor import FusionProject
with FusionProject("design.f3z") as proj:
# Read the design name from embedded metadata
print(proj.design_name)
# Get raw bytes
sch_bytes = proj.get_schematic() # Eagle/KiCad .sch file
brd_bytes = proj.get_board() # Eagle/KiCad .brd file
previews = proj.get_previews() # list[PreviewImage]
# Extract to disk
proj.extract_schematic("output/") # writes original filename into output/
proj.extract_board("output/my_board.brd") # writes to exact path
proj.extract_previews("output/previews/") # writes all preview PNGs
Destination path behaviour
extract_schematic and extract_board accept an optional dest argument:
dest value |
Result |
|---|---|
None (default) |
Written to the current directory, original filename preserved |
A directory path or path ending with / |
Original filename preserved inside that directory |
| A full file path (with extension) | Written to that exact path |
Preview images
get_previews and extract_previews return images from all four nested archives:
small.png— thumbnail present in every nested archive (schematic, board, project, 3D model)- Large PNG renders — present in the project (
.fprj) and 3D model (.f3d) archives only
Pass include_large_images=False to retrieve thumbnails only.
for preview in proj.get_previews(include_large_images=False):
print(preview.source, len(preview.data), "bytes")
# e.g. "schematic 4821 bytes"
PreviewImage fields:
| Field | Type | Description |
|---|---|---|
source |
str |
Archive the image came from ("schematic", "board", "project", "3d_model") |
path |
str |
Path of the image inside the nested archive |
data |
bytes |
Raw PNG bytes |
Extracted preview files are named {source}__{original_filename} to avoid collisions when multiple archives contain a small.png.
API reference
class FusionProject:
path: str | Path # path to the .f3z file
design_name: str # property; from embedded metadata
def get_schematic() -> bytes
def get_board() -> bytes
def get_previews(*, include_large_images: bool = True) -> list[PreviewImage]
def extract_schematic(dest=None) -> Path
def extract_board(dest=None) -> Path
def extract_previews(dest=None, *, include_large_images: bool = True) -> list[Path]
Exceptions
| Exception | Raised when |
|---|---|
FileNotFoundError |
The .f3z file path does not exist |
FusionExtractorError |
The file is not a valid ZIP/f3z archive |
FileNotFoundInArchiveError |
A required entry is missing from inside the archive |
Both custom exceptions are subclasses of FusionExtractorError and are importable from the package root:
from fusionextractor import FusionExtractorError, FileNotFoundInArchiveError
Requirements
Python 3.9+. No required third-party dependencies.
The .f3d archive (3D model) uses Zstandard compression, which Python's stdlib zipfile does not support. Without the optional extra, 3D model previews are silently skipped. Install .[zstd] to enable them.
Project details
Release history Release notifications | RSS feed
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 fusionextractor-1.0.0.tar.gz.
File metadata
- Download URL: fusionextractor-1.0.0.tar.gz
- Upload date:
- Size: 2.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e65e20fe09446fb95c570bff5e05f6b8b8f0026cc6f3e01b0168a364799ba48
|
|
| MD5 |
24674ff1fd306b4d227aebdf3fce5d15
|
|
| BLAKE2b-256 |
605c407431a6a3ce2a7148b6700c5712aaab4efef4c52bdc8e363e7ef34c81b5
|
File details
Details for the file fusionextractor-1.0.0-py3-none-any.whl.
File metadata
- Download URL: fusionextractor-1.0.0-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e6ed56ca8644c4e553328bb90cb13db96b66a37fba33c882c885dd37ce17e65
|
|
| MD5 |
8f6c78fb04874dec0b5f6e65b6b3e90c
|
|
| BLAKE2b-256 |
1968a05472bc6f45cb7717feba738cb3c6448016e6aa3c3c404722cab1f71332
|