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/*