Walls are fixed thickness regardless of model size, so small models are
wall-dominated (high material factor) while large models are infill-dominated.
_effective_factor() uses log-linear interpolation:
factor = MATERIAL_FACTOR - log10(volume / 25 cm³) × 0.15
Example curve:
0.5 cm³ → 0.76 1 cm³ → 0.71 10 cm³ → 0.56
26 cm³ → 0.50 100 cm³ → 0.41 500 cm³ → 0.31
MATERIAL_FACTOR env var is now the anchor at 25 cm³ (validated reference).
The card header shows the effective (size-adjusted) factor for the specific job.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The 20% infill assumption ignored walls and solid layers which dominate
most prints. Validated against Bambu Lab Studio for a GF lid:
model volume 26.09 cm³ × 0.50 × 1.24 g/cm³ = 16.2 g (actual: 16.24 g)
16.2 g / 32 g/h × 60 = 30 min (actual: 30.5 min)
New env vars (read at request time, no rebuild needed):
MATERIAL_FACTOR=0.50 fraction of model volume that becomes filament
PRINT_SPEED_G_PER_HOUR=32 matches Bambu Lab at normal quality
Card header now shows active assumptions including speed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>