Nodes/ComfyUI-DrawThingsWrapper/Draw Things Txt2Img Pipeline
ComfyUI Node

Draw Things Txt2Img Pipeline

Build an editable Draw Things config instead of firing it

By JosephThomasParker·Created 2 years ago·Updated about a year ago· 53
Draw Things Txt2Img Pipeline
    • pipeline
    modelflux_1_dev_q8p.ckpt
    prompt
    seed42
    width512
    height512
    guidance_scale3.50
    samplerEuler A Trailing
    steps20

    This is the "advanced mode" version of the basic Draw Things txt2img node. Same inputs - model, prompt, size, sampler, steps - but with one big difference: it does not generate an image. Instead of calling the Draw Things app, it builds a settings blob (a "pipeline") and hands that out so you can modify it before anything runs. You pair it with DrawThingsGenerateFromPipeline, which is the node that actually fires the render.

    Why would you want the extra step? Because the middle is where the power is. Once you have a pipeline dict, you can pass it through DrawThingsPipelineAddLora, DrawThingsPipelineAddControl, or DrawThingsPipelineAddCustom to stack LoRAs, add ControlNets, or set Draw Things API fields the basic nodes don't expose - all from inside ComfyUI, without touching the app. The plain DrawThingsTxt2Img node fuses "build config" and "generate" together, so there's no seam to inject those extras. This node opens that seam.

    If you just want a straight text-to-image render with no mid-graph tweaking, don't bother with this - use the basic DrawThingsTxt2Img node and save yourself two connections.

    How it works

    The node collects your inputs into a Python dict of Draw Things parameters and outputs that dict, full stop. No network call, no image. That dict is the same shape the basic node would have POSTed to the Draw Things API - it's just paused mid-flight so you can edit it. The generation happens later, when DrawThingsGenerateFromPipeline receives the (possibly modified) dict and sends it to Draw Things on port 7860.

    The inputs and outputs that matter

    The inputs mirror the basic txt2img node:

    • model - a string that must match the Draw Things model filename exactly, e.g. the default flux_1_dev_q8p.ckpt (Flux.1 [dev], Q8). Use Draw Things' "..." → Copy configuration, paste it, and copy the exact name - guessing here is the #1 cause of a dead run.
    • prompt, seed (42), steps (20), guidance_scale (3.5).
    • width / height - both default 512; raise them for Flux.
    • sampler - enum of 17 Draw Things samplers, default Euler A Trailing.

    The single output is pipeline (dict) - feed it into an Add-Lora/Add-Control/Add-Custom node, or straight into DrawThingsGenerateFromPipeline if you've nothing to add.

    How to install it

    Same pack as the rest of the Draw Things nodes. In Draw Things, open Advanced and enable API Server (HTTP, Port 7860, localhost). Then install the pack via ComfyUI Manager (search ComfyUI-DrawThingsWrapper) or by hand:

    cd ComfyUI/custom_nodes
    git clone https://github.com/JosephThomasParker/ComfyUI-DrawThingsWrapper
    cd ComfyUI-DrawThingsWrapper
    pip install -r requirements.txt
    

    then restart ComfyUI.

    Common issues & troubleshooting

    Nothing renders. Expected - this node doesn't render. Its output is a dict, not an image. You need DrawThingsGenerateFromPipeline downstream to actually generate. If you forgot it, that's your bug.

    Model name mismatch. As with every node in this pack, model is a literal Draw Things filename. Copy configuration → paste → use that string verbatim.

    Your added LoRA/control isn't showing up. Make sure the Add-node sits between this node and DrawThingsGenerateFromPipeline in the chain - the pipeline dict has to flow through it. A modifier that isn't wired inline does nothing.

    Graph won't re-run. ComfyUI only re-executes on a changed node input; edits made in the Draw Things app won't trigger it. Change the seed or any field to force a fresh pass.

    CategoryDrawThingsWrapper

    Inputs (8)

    NameTypeDefaultDescription
    modelSTRINGflux_1_dev_q8p.ckpt
    promptSTRING
    seedINT42
    widthINT512
    heightINT512
    guidance_scaleFLOAT3.50
    samplerCOMBOEuler A Trailing17 options: UniPC, DPM++ 2M Karras, Euler a, DPM++ SDE Karras, PLMS, DDIM, +11
    stepsINT20

    Outputs (1)

    NameTypeDescription
    pipelinedict