Skip to main content

Drawscape Factorio

Project description

image

Drawing a Factorio Base with a Pen Plotter

CLI written in Python to create SVG images from Factorio base data that you can then draw on a pen plotter.

Demos

Installation

pip3 install drawscape-factorio
  • Requires python 3.8+
  • I'm using with python 3.12 in development and production

CLI Usage

drawscape-factorio create --json exported-entities.json

Additional Params

--theme [default]
--color [main, black, blueprint, matrix, easter]
--debug-grid (helpful for theme development)

Code Usage

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': { 'bg': '#000000', 'assets': '#ffffff' }
})

# Save the SVG file
with open(output_file_name, 'w') as f:
    f.write(result['svg_string'])

Exporting Map Data (exported-entities.json)

Currently using a Factorio MOD called FUE5-Exporter to export all entites on a map in JSON format.

https://github.com/FUE5BASE/FUE5-Exporter

  1. Install the MOD via the Factorio GUI. Search for FUE5
  2. 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.
  3. Find the exported-entities.json file inside your Factorio Application Data:
  • Mac (~/Library/Application Support/factorio/script-output)
  • Windows (%APPDATA%/Factorio/script-output)
  1. Copy/Paste they JSON file somewhere else so you can work with it. It will get overwritten if you leave it there.

Themes

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.

Examples

IMG_6588 IMG_6620
IMG_6635 IMG_6576
IMG_6635 IMG_6635

Development

conda env update --file environment.yml --prune  
conda activate drawscape_factorio

Install for live local dev

pip3 install -e .

Distribution Cheat Sheet

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drawscape_factorio-0.15.21.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drawscape_factorio-0.15.21-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file drawscape_factorio-0.15.21.tar.gz.

File metadata

  • Download URL: drawscape_factorio-0.15.21.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for drawscape_factorio-0.15.21.tar.gz
Algorithm Hash digest
SHA256 34fd93dd0c80e1d4c8a0e5873a460a958cb73cf73eccc993ca71dc47d681d88b
MD5 614908260d08afca7d7a70c40dacd96b
BLAKE2b-256 1ac0852f983b23c6489a326aa6cac3f67d94ad3f1bebb8cfd310af28b0ffaed1

See more details on using hashes here.

File details

Details for the file drawscape_factorio-0.15.21-py3-none-any.whl.

File metadata

File hashes

Hashes for drawscape_factorio-0.15.21-py3-none-any.whl
Algorithm Hash digest
SHA256 05e1387b94c954a83db6c53fd3acf32bf012a3383f88ef8aa61b34c7fe59edb8
MD5 ee02874bf522470fb31d88262f94c8f1
BLAKE2b-256 0aebab86284ff7e3230645d7c1f2a808599f6695ba7033358830f2d3c6c9828d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page