G-code Orca Profile Loader
Stop hand-typing printer JSON — pull your real OrcaSlicer presets into the graph
- profile
- slicer_settings
- bundle_json
- summary
If you've looked at MKRGCodePrinterProfile and thought "I am not retyping my whole OrcaSlicer setup into a JSON box," this is the node for you. It reads real OrcaSlicer presets off disk - the ones you already tuned and trust - and maps them into the pack's MKR_GCODE_PROFILE and MKR_GCODE_SLICER_SETTINGS payloads. Your machine, filament, and process settings come in as-is instead of being re-derived from defaults.
What it reads
Point source_path at a file or folder containing OrcaSlicer preset exports. It understands the four formats Orca actually writes:
.orca_printer- machine presets.orca_filament- filament presets.orca_process- process/print presets.jsonand.zipbundles - including zipped preset packs, which it opens and scans
With recursive on (the default), a folder path scans every subfolder, so pointing it at your Orca user config directory just works.
How the selection works
Orca stores its config as a bunch of separate preset files, and you usually have more than one of each. The node picks one printer, one filament, and one process preset using three match fields:
printer_match,filament_match,process_match- a selector by preset id or name.selection_mode-autograbs the first entry when no selector is given;id_or_name_exactrequires a precise match;substringaccepts partial names.
So printer_match: "Bambu X1" with selection_mode: substring lands on the right machine even if the exact file is Bambu X1 Carbon 0.4 nozzle.orca_printer. If no printer preset matches, you get a generic fallback profile plus a warning in the output - which is the pack's polite way of saying "check your path."
The mapping is real: bed size, nozzle, line width, layer height, temps, speeds, retraction all flow from the Orca JSON into the normalized profile, and the process preset's slicing settings are bundled into the slicer_settings payload that MKRGCodeExternalSlicer consumes.
Outputs
profile(MKR_GCODE_PROFILE) - the mapped printer profile.slicer_settings(MKR_GCODE_SLICER_SETTINGS) - the process/filament config as a settings bundle for the external slicer node.bundle_json- counts of presets found, what got selected, the source path, and warnings. Useful for a Show Text node when the loader picks the wrong filament.summary- one line: how many printers were found and which one won.
The pack's own help notes this is a rewrite of an earlier "Orca Preset" experiment from the old G-code-Studio project, reimplemented as a filesystem loader instead of a browser-local importer.
Typical wiring
MKRGCodeLoadMeshModel → MKRGCodeExternalSlicer, with this node's profile and slicer_settings plugged into the slicer's optional inputs. That's the "use my real Orca config to slice this STL I just loaded" pipeline.
Installing it
It's part of the pack - install once:
# ComfyUI Manager: search "MKRShift Nodes", install, restart.
# or:
cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes
# restart ComfyUI
No extra Python dependencies and no model files. You don't even need OrcaSlicer installed to load its presets - this node is purely a parser. (You do need the actual slicer if you plan to run MKRGCodeExternalSlicer on the result.)
Where people get burned
The most common mistake is pointing source_path at the wrong directory. OrcaSlicer keeps its user config in a per-profile location like ~/.config/OrcaSlicer/user/ on Linux, with the machine/filament/process folders underneath. Point at the folder that contains the .orca_printer/.json files, not at a folder that merely contains another folder that contains them - recursive only helps if the files are nested in a way you actually want. And if bundle_json reports zero printers, you're pointing at the install directory instead of the config directory. The config is what you want; the install is a binary.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| source_path | STRING | — | |
| printer_match | STRING | — | |
| filament_match | STRING | — | |
| process_match | STRING | — | |
| selection_mode | COMBO | auto | 3 options: auto, id_or_name_exact, substring |
| recursive | BOOLEAN | true | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| profile | MKR_GCODE_PROFILE | — |
| slicer_settings | MKR_GCODE_SLICER_SETTINGS | — |
| bundle_json | STRING | — |
| summary | STRING | — |