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.
How It Works
Section titled “How It Works”When a job enters the SLICED queue stage, the slicing worker:
- Downloads the STL/3MF file from storage
- Resolves the slicer profile for the job’s SKU + quality tier
- Spawns OrcaSlicer as a CLI subprocess
- Uploads the generated G-code to storage
- Advances the job to
QUEUED
VALIDATED job │ ▼slicing worker │ OrcaSlicer CLI │ --load-settings {profile} │ --export-gcode {output} ▼G-code stored → job status: QUEUEDInstallation
Section titled “Installation”OrcaSlicer is included in the ecosystem Docker Compose. For local development, install it manually:
# macOSbrew install --cask orcaslicer
# Linux (AppImage)wget https://github.com/SoftFever/OrcaSlicer/releases/latest/download/OrcaSlicer-linux.AppImagechmod +x OrcaSlicer-linux.AppImage
# Set the path in .envORCASLICER_BINARY=/Applications/OrcaSlicer.app/Contents/MacOS/OrcaSlicerSlicer Profiles
Section titled “Slicer Profiles”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.jsonProfiles are JSON files in OrcaSlicer’s native format. You can export profiles from OrcaSlicer’s UI and drop them in this directory.
Mapping SKUs to Profiles
Section titled “Mapping SKUs to Profiles”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.
Environment Variables
Section titled “Environment Variables”ORCASLICER_BINARY=/usr/local/bin/orcaslicerORCASLICER_PROFILES_DIR=./packages/integrations/slicers/profilesSLICER_TIMEOUT_MS=300000 # 5 minutes max per jobTroubleshooting
Section titled “Troubleshooting”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:
$ORCASLICER_BINARY \ --load-settings ./packages/integrations/slicers/profiles/fdm/pla-standard.json \ --export-gcode ./output.gcode \ ./input.stl