Skip to content

OrcaSlicer

OrcaSlicer is the slicing engine PrintStudio uses to convert uploaded STL/3MF files into printer-ready G-code. The slicing step runs as a BullMQ job in the slicing queue.

When a job enters the SLICED queue stage, the slicing worker:

  1. Downloads the STL/3MF file from storage
  2. Resolves the slicer profile for the job’s SKU + quality tier
  3. Spawns OrcaSlicer as a CLI subprocess
  4. Uploads the generated G-code to storage
  5. Advances the job to QUEUED
VALIDATED job
slicing worker
│ OrcaSlicer CLI
│ --load-settings {profile}
│ --export-gcode {output}
G-code stored → job status: QUEUED

OrcaSlicer is included in the ecosystem Docker Compose. For local development, install it manually:

Terminal window
# macOS
brew install --cask orcaslicer
# Linux (AppImage)
wget https://github.com/SoftFever/OrcaSlicer/releases/latest/download/OrcaSlicer-linux.AppImage
chmod +x OrcaSlicer-linux.AppImage
# Set the path in .env
ORCASLICER_BINARY=/Applications/OrcaSlicer.app/Contents/MacOS/OrcaSlicer

PrintStudio ships with slicer profiles for common materials and quality tiers in packages/integrations/slicers/profiles/:

profiles/
fdm/
pla-draft.json
pla-standard.json
pla-fine.json
petg-standard.json
abs-standard.json
tpu-standard.json
resin/
standard-resin.json
engineering-resin.json

Profiles are JSON files in OrcaSlicer’s native format. You can export profiles from OrcaSlicer’s UI and drop them in this directory.

Each SKU specifies a slicerProfile key that maps to a profile file:

{
"id": "sku-pla-functional-part",
"slicerProfile": "fdm/pla-standard",
"qualityTiers": {
"draft": { "slicerProfile": "fdm/pla-draft" },
"fine": { "slicerProfile": "fdm/pla-fine" }
}
}

The slicing worker resolves the correct profile at runtime based on the job’s quality tier.

Terminal window
ORCASLICER_BINARY=/usr/local/bin/orcaslicer
ORCASLICER_PROFILES_DIR=./packages/integrations/slicers/profiles
SLICER_TIMEOUT_MS=300000 # 5 minutes max per job

Slicing times out — Increase SLICER_TIMEOUT_MS for complex models. The default 5-minute limit handles most parts up to ~500MB STL.

“Profile not found” — Check that the slicerProfile key on the SKU matches a file in ORCASLICER_PROFILES_DIR.

OrcaSlicer crashes — Run the CLI command manually to see the full error output:

Terminal window
$ORCASLICER_BINARY \
--load-settings ./packages/integrations/slicers/profiles/fdm/pla-standard.json \
--export-gcode ./output.gcode \
./input.stl