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 importFUE5You 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.jsonfile 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/*




