1.8 KiB
1.8 KiB
STL Print Estimator
Command line and optional web tool to estimate filament usage and print time for STL files using configurable printer settings.
Quick start (CLI)
python estimator.py --config printer-config.json --output-format csv --out estimates.csv
Defaults:
- Reads all
.stlfiles in the current directory (non-recursive). - Writes
estimates.csvorestimates.jsonif--outis not provided.
Web interface
pip install -r requirements.txt
python estimator.py --serve --port 5000 --config printer-config.json --output-format csv
Open http://localhost:5000, upload a single STL or a ZIP containing multiple STLs, choose CSV or JSON, and optionally tick “Provide download” to get the generated file.
Configuration
Printer settings live in a JSON file (default printer-config.json):
{
"layer_height_mm": 0.2,
"nozzle_diameter_mm": 0.4,
"perimeter_count": 2,
"top_layers": 4,
"bottom_layers": 4,
"infill_density": 0.25,
"perimeter_speed_mm_s": 40.0,
"infill_speed_mm_s": 60.0,
"travel_speed_mm_s": 120.0,
"filament_diameter_mm": 1.75,
"filament_density_g_cm3": 1.24,
"travel_factor": 0.1
}
Adjust values to match your machine and material. travel_factor is the fraction of extrusion distance added as travel moves for the time estimate.
Notes on estimates
- Volume and surface area are computed directly from the STL triangles (binary or ASCII).
- Shell volume is approximated from surface area and perimeter thickness; infill volume is scaled by
infill_density. - Print time is a heuristic using perimeter/infill/travel speeds; real slicer output will differ.
Examples
- JSON output:
python estimator.py -f json -o result.json - Use a custom config:
python estimator.py -c my-printer.json - Serve on a different port:
python estimator.py --serve --port 8080