Nodes/MKRShift_Nodes/G-code Orca Profile Loader
ComfyUI Node

G-code Orca Profile Loader

Stop hand-typing printer JSON — pull your real OrcaSlicer presets into the graph

By criskb·Created 7 months ago·Updated 5 months ago· 0
G-code Orca Profile Loader
    • profile
    • slicer_settings
    • bundle_json
    • summary
    source_path
    printer_match
    filament_match
    process_match
    selection_modeauto
    recursivetrue

    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
    • .json and .zip bundles - 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 - auto grabs the first entry when no selector is given; id_or_name_exact requires a precise match; substring accepts 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

    MKRGCodeLoadMeshModelMKRGCodeExternalSlicer, 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.

    CategoryMKRShift Nodes/G-code/Printer

    Inputs (6)

    NameTypeDefaultDescription
    source_pathSTRING
    printer_matchSTRING
    filament_matchSTRING
    process_matchSTRING
    selection_modeCOMBOauto3 options: auto, id_or_name_exact, substring
    recursiveBOOLEANtrue

    Outputs (4)

    NameTypeDescription
    profileMKR_GCODE_PROFILE
    slicer_settingsMKR_GCODE_SLICER_SETTINGS
    bundle_jsonSTRING
    summarySTRING