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()