XYZ ConflictValidator And Switch
Keeping row/column/page values from colliding in an XYZ grid
- global_val
- row
- column
- pages
- output
Building an XYZ comparison grid - rows sweep one parameter, columns sweep another, pages maybe sweep a third - sounds simple until you hit the actual wiring problem: a seed sweep wants an INT, a CFG sweep wants a FLOAT, a checkpoint-name sweep wants a STRING, and only one of those axes is supposed to be "active" at any given step of the loop. Handle that badly and you either need a separate node per axis-type combination, or your graph tries to shove a string into a float socket and falls over. This node exists specifically to make that not your problem. Its own description says it plainly: it enforces that only one active parameter exists per execution step, and automatically casts the current grid value - row, column, or page - to whatever Int, Float, or String the target actually needs.
It sits in the same corner of this pack as the nodes the README explicitly credits to qq-nodes-comfyui (kenjiqq) - the accumulator that assembles the finished grid, the loop helpers driving it - sharing the same XYZ_GRID_CONTROL scaffolding. Think of it as the traffic cop for that system: whichever axis this particular instance is watching, it reads the current position for that axis and hands back one correctly-typed value, while every axis that isn't currently sweeping falls through to a safe default instead of leaving downstream nodes with nothing.
The inputs and outputs that matter
Two required fields, three optional ones:
output_type- an enum:STRING,INT,FLOAT, or*. This tells the node what to cast the active value to before it comes out. Match it to whatever you're actually driving downstream -INTfor a seed input,FLOATfor a CFG or denoise value,STRINGfor a checkpoint or LoRA name, or*to pass the value through untouched.global_val- the fallback value used when none of this node's row/column/page inputs is the one actively sweeping this step. It's what guarantees the output is always something valid rather than empty.row,column,pages(all optional) - wire in whichever axis this instance is meant to watch. Per the node's own design, only one of these is meant to be "hot" - carrying the live value - at a time; the rest sit idle.
The single output is output, cast per output_type - wire it into whatever parameter this axis actually controls (a KSampler's seed, a sampler's CFG, a checkpoint loader's filename input, and so on).
How to install it
Through ComfyUI Manager, search "DemonAlone-nodes-ComfyUI." By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/DemonAlone/SimpeStringGenerator_ComfyUI
then restart. The clone URL is the pack's original name, SimpeStringGenerator_ComfyUI; it presents as "DemonAlone-nodes-ComfyUI" everywhere else - same repository. No models, nothing heavy to fetch.
Common issues & troubleshooting
Doesn't do anything meaningful on its own. This node is built to be one piece of a larger XYZ sweep, reading position data that has to come from somewhere upstream in this pack's own grid-control system (paired with MyXYGridAccumulator and the loop that's actually iterating). Dropping it into a workflow with nothing feeding row/column/pages just leaves you with global_val passed through every time.
A downstream connection gets rejected. If the node it's feeding refuses the wire, check output_type - leaving it on * skips casting entirely, which works for a passthrough target but not for a socket that specifically wants an INT or FLOAT. Set it to match the target explicitly.
Don't mix this with another pack's XYZ system. Because ComfyUI's grid-plotting is entirely community-built and every implementation invented its own control types, this node's row/column/page values are meaningless to qq-nodes-comfyui's or Efficiency Nodes' equivalents. Stick to one XYZ lineage per workflow.
No community trail. This pack has essentially no footprint outside its own repository, so there's no thread to search if something's off - the source is short and worth reading directly.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| output_type | COMBO | 4 options: STRING, INT, FLOAT, * | |
| global_val | * | — | |
| rowopt | * | — | |
| columnopt | * | — | |
| pagesopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | — |