| from pathlib import Path | |
| import pandas as pd | |
| from minires import minires | |
| # ==== Edit these numbers for your context ==== | |
| RESIN_COST_PER_GRAM = 0.06 # in your currency, e.g. 0.06 = €0.06/gram | |
| OVERHEAD_PER_MINI = 1.50 # fixed overhead per miniature (packaging, time, etc.) | |
| INPUT_CSV = Path("stl_features.csv") | |
| OUTPUT_CSV = Path("mini_pricing.csv") | |
| # ============================================= | |
| def main() -> None: | |
| if not INPUT_CSV.exists(): | |
| raise SystemExit(f"Input CSV not found: {INPUT_CSV}. " | |
| "Run stl-scanner.py first.") | |
| # Load STL features produced by stl-scanner.py | |
| df = pd.read_csv(INPUT_CSV) | |
| # Create MiniRes ensemble model | |
| model = minires(verbose=0) | |
| # Predict resin usage in grams | |
| grams = model.predict(df) | |
| df["predicted_grams"] = grams | |
| df["resin_cost"] = df["predicted_grams"] * RESIN_COST_PER_GRAM | |
| df["overhead"] = OVERHEAD_PER_MINI | |
| df["total_cost"] = df["resin_cost"] + df["overhead"] | |
| df.to_csv(OUTPUT_CSV, index=False) | |
| print(f"Wrote pricing table to {OUTPUT_CSV.resolve()}") | |
| if __name__ == "__main__": | |
| main() |