Distribute(X, [Lefts/Rights/Centers/Marks/Gaps, [First/Last/pcb_crosshair, First/Last/pcb_crosshair[, Gridless]]])

Distribute(Y, [Tops/Bottoms/Centers/Marks/Gaps, [First/Last/pcb_crosshair, First/Last/pcb_crosshair[, Gridless]]])

As with align, plus:

Arguments:

Gaps | Make gaps even rather than spreading points evenly.
First, Last, pcb_crosshair | Two arguments specifying both ends of the distribution, they can't both be the same.

Defaults are Marks, First, Last

Distributed objects always retain the same relative order they had before they were distributed.

For non-subcircuit objects: using Marks is not recommended, using Gridless is recommended.