Today's TTRPG mini figures are too dainty. Make those STL thicker.
This tool is designed to apply a thickening algorithm to 3D models stored in STL (Stereolithography) format. The primary goal is to preserve the overall shape of the model while thickening thin parts (e.g., limbs, fingers) to improve structural integrity, especially for tabletop miniatures.
The tool focuses on simple geometric modification of STL models, making it ideal for 3D models used in tabletop games.
- STL File Input/Output: Load 3D models in STL format, apply thickening, and save the modified model back in STL format.
- Thickening Algorithm: Increases the thickness of 3D models without altering their fundamental shape.
- Command-Line Interface (CLI): Easy-to-use terminal-based interface for interacting with the tool.
To get started, you need Python 3.10 or higher installed on your system.
-
Clone the repository:
git clone https://github.com/tomwillis608/thickening-tool.git cd thickening-tool -
Set up a virtual environment (optional but recommended):
pip install uv uv venv source .venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
uv sync
-
Install CLI Locally: Run the following command to install the package in editable mode:
uv run thicker-stl
Once the tool is installed, you can use the command-line interface to process STL files.
thicker-stl --input input.stl --output output.stl --offset 0.1To thicken a cylinder model, run the following command:
thicker-stl --input cylinder.stl --output thickened_cylinder.stl --offset 1Where:
--input: Path to the input STL file.--output: Path where the thickened STL file will be saved.--offset: Amount to thicken, in the units of the STL file.
/docs
/adrs # Architectural Decision Records
/thicker
/domain # Business logic for thickening models
/infrastructure # File I/O and external integrations
/tests
/unit_tests # Unit tests for the thickening algorithm
/data # Test STL files and test data
/utils # Helper utilities for testing (e.g., generating test STL files)
main.py # Entry point for the CLI tool
requirements.txt # List of dependencies
README.md # Project documentation
To run the tests:
pytestThe project uses ruff for linting and code quality checks. To run linting, use:
ruff .- STL File Format: We chose to use the STL file format for simplicity and wide support.
- Refer to the ADR 001 for more details.
Contributions are welcome! If you have ideas for improving the tool or fixing issues, feel free to open a pull request.
This project is licensed under the MIT License - see the LICENSE file for details.