Large Format FDM
How to adapt the time-based FDM pricing model for large format pellet extrusion, gantry, and SCARA systems, including adjusted constants and a complete algorithm.
Why this process is unique
Large format FDM (pellet extrusion, gantry systems, SCARA robots) differs from desktop FDM in three key ways:
- Nozzle diameter is much larger (2-10mm vs 0.4mm) - faster deposition, lower resolution
- Layer height is proportionally larger (1-5mm) - print times can still be long but fewer layers
- Material is sold by the kg or tonne (pellets), not by the spool - far cheaper per kg
The time-based FDM model still applies, but constants change significantly. Shell layer count is typically 2-3, infill is often 15-25%, and support fraction from the hull gap may need a higher estimate for complex geometries (sparse supports, large overhangs).
Core methodology
Same as standard FDM:
- Shell + infill + support volume split
- Print time = volume ÷ volumetric flow rate, summed by region
- Machine cost = time × cost per hour
- Material cost = mass × cost per kg
Key differences in the constants:
| Parameter | Desktop FDM | Large Format FDM |
|---|---|---|
| Nozzle diameter | 0.4 mm | 5-10 mm |
| Layer height | 0.1-0.3 mm | 2-5 mm |
| Wall speed factor | 0.4-0.6 | 0.5-0.7 |
| Material cost per kg | €20-80 | €3-20 (pellets) |
| Machine cost per hour | €5-15 | €40-150 |
Numerical example
Part: 600 × 400 × 300 mm enclosure panel, volume = 4,800,000 mm³ (hollow walls)
| Parameter | Value |
|---|---|
| Nozzle diameter | 8 mm |
| Layer height | 4 mm |
| Wall count | 2 |
| Base speed | 120 mm/s |
| Wall speed factor | 0.6 |
| Infill (15%) | 0.15 |
| Machine cost per hour | €80 |
| Material cost per kg | €8 (ABS pellets), density 1.04 g/cm³ |
Shell volume: min(4.8M, area × 8 × 2) - area depends on geometry Print time estimate: ~6 hours (large nozzle deposits fast) Machine cost: 6 × 80 = €480 Material cost: ~5 kg × 8 = €40 Unit price: ~€520 + overhead
Complete algorithm
const { material, width, height, length, volume, area, convexHullVolume, infill, precision } = specification
const { quantity } = requisition
// Large format machine — adjust to your system
const MACHINE_BED_L = 2000
const MACHINE_BED_W = 1500
const MACHINE_BED_H = 1000
const NOZZLE_DIAMETER_MM = material.variables['nozzleDiameterMm'] // e.g. 8
const NUMBER_OF_WALLS = 2
const SUPPORT_INFILL = 0.15
const PRINT_TIME_OVERHEAD = 1.25
const layerHeight = precision?.value ?? 4.0
const partInfill = infill?.value ?? 0.15
const shellVolume = Math.min(volume, area * NOZZLE_DIAMETER_MM * NUMBER_OF_WALLS)
const infillVolume = (volume - shellVolume) * partInfill
const hullGap = convexHullVolume - volume
const supportVolume = variable('supportVolume', round(hullGap * 0.15, 0))
const materialDensity = material.variables['materialDensity']
const materialCostPerKg = material.variables['materialCostPerKg']
const totalVolumeMm3 = shellVolume + infillVolume + supportVolume * SUPPORT_INFILL
const massKg = (totalVolumeMm3 / 1_000_000) * materialDensity
const materialCost = round(massKg * materialCostPerKg, 2)
const baseSpeed = material.variables['baseSpeedNozzle']
const wallSpeedFactor = material.variables['wallSpeedFactor']
const infillSpeedFactor = material.variables['infillSpeedFactor']
const supportSpeedFactor = material.variables['supportSpeedFactor']
const machineCostPerHour = material.variables['machineCostPerHour']
const wallTime = shellVolume / (NOZZLE_DIAMETER_MM * layerHeight * baseSpeed * wallSpeedFactor)
const infillTime = infillVolume / (NOZZLE_DIAMETER_MM * layerHeight * baseSpeed * infillSpeedFactor)
const supportTime = (supportVolume * SUPPORT_INFILL) / (NOZZLE_DIAMETER_MM * layerHeight * baseSpeed * supportSpeedFactor)
const shellPenalty = 1 + 0.3 * Math.pow(shellVolume / (shellVolume + infillVolume + 1), 2)
const printTimeHours = variable('printTime', round(
(wallTime + infillTime + supportTime) * PRINT_TIME_OVERHEAD * shellPenalty / 3600, 2
))
const machineCost = round(printTimeHours * machineCostPerHour, 2)
const baseCost = materialCost + machineCost
const unitPrice = variable('unitPrice', round(baseCost, 2))
const oversized = length > MACHINE_BED_L || width > MACHINE_BED_W || height > MACHINE_BED_H
done(unitPrice, printTimeHours, oversized)Material variables: nozzleDiameterMm, materialDensity, materialCostPerKg, baseSpeedNozzle, wallSpeedFactor, infillSpeedFactor, supportSpeedFactor, machineCostPerHour
When to use this
Pellet extrusion systems printing parts larger than ~400mm. Parts are typically structural, prototypes, tooling, moulds, or formwork - where surface finish is secondary to speed and size.
Last updated on
FDM - Filament Extrusion
How to price FDM/FFF parts by splitting geometry into shell, infill, and supports to estimate print time, which is the dominant cost driver.
SLA / DLP / LCM
How to price vat photopolymerisation parts (SLA, DLP, MSLA, LCM) from resin volume and machine time, including the SLA-specific cross-section scaling adjustment.