CLI written in Python to create SVG images from Factorio base data that you can then draw on a pen plotter.
pip3 install drawscape-factorio
- Requires python 3.8+
- I'm using with python 3.12 in development and production
drawscape-factorio create --json exported-entities.json
Additional Params
--theme [default] --color [main, black, blueprint, matrix, easter] --debug-grid (helpful for theme development)
Include the modules
from drawscape_factorio import create as createFactorio from drawscape_factorio import importFUE5
You are responsible for parsing the input file and then saving the output as an SVG file.
# Load the JSON file coming from the FUE5 MOD with open('/path/to/exported-entities.json, 'r') as file: json_data = json.load(file) # Parse the JSON data data = importFUE5(json_data) ## Basic result = create(data) # Basic With Settings result = create(data, { 'theme_name': 'default', 'color_scheme': 'black', 'show_layers': ['assets', 'belts', 'walls', 'rails', 'electrical', 'spaceship'], 'colors': { 'background': '#000000', 'assets': '#ffffff' } }) # Save the SVG file with open(output_file_name, 'w') as f: f.write(result['svg_string'])
Currently using a Factorio MOD called FUE5-Exporter
to export all entites on a map in JSON format.
https://github.com/FUE5BASE/FUE5-Exporter
- Install the MOD via the Factorio GUI. Search for
FUE5
- Use MOD to "select" area of the map you want to export. Try to "frame" your seletion to only export the area you want to render.
- Find the
exported-entities.json
file inside your Factorio Application Data:
- Mac (
~/Library/Application Support/factorio/script-output
) - Windows (
%APPDATA%/Factorio/script-output
)
- Copy/Paste they JSON file somewhere else so you can work with it. It will get overwritten if you leave it there.
The drawscape-factorio
CLI supports different themes for rendering the Factorio base. Each theme is a Python class that extends the ParentTheme
class. The ParentTheme
class provides the basic structure and functionality for rendering the base, while the child themes (e.g., DefaultTheme
) define the specific colors and styles for each entity in the base.
A child theme can extend and of the render_
function to create new shapes and designs.
Theme Requirements:
- Must define a THEME_NAME, THEME_SLUG, and THEME_VERSION
- Must define a COLOR_SCHEMES dictionary with a 'main' key
Easiest way to get started it to clone the default_theme.py
and start making your edits.
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
conda env update --file environment.yml --prune conda activate drawscape_factorio
Install for live local dev
pip3 install -e .
PyPi API saved in ~/.pypirc for auto-authentication
python setup.py clean --all rm -rf dist/* python setup.py sdist bdist_wheel twine upload dist/*