Aligning, distributing and mirroring

The nine-button block in the left panel covers three separate jobs: packing the selected screens against one edge, spacing them out evenly, and mirroring the layout of a free-form screen. Buttons switch on according to how much is selected, so the block almost always looks partly greyed out — that is its working state, not a fault.

The button grid

The block is a 3×3 grid. "Collect to the centre" sits in the middle, the four edges flank it, mirroring and distribution take the corners. The gap field with its slider sits underneath.

ButtonWhat it doesEnabled with
⇤ ⇥ ⤒ ⤓ — left, right, top, bottom edgePacks the selected screens together towards that edge2 or more selected
⛶ — collect to the centrePulls the selection towards the centre of its own bounding box on both axes2 or more selected
Distribute horizontally and verticallyLeaves the end screens in place and gives the rest equal spacing3 or more selected
⇋ ⇵ — mirror horizontally and verticallyFlips the cabinet layout inside a single screenone free-form screen selected
the align block: the 3×3 grid and the gap field below it
Screenshot: the align block: the 3×3 grid and the gap field below it

The "3 or more" threshold on distribution is not arbitrary: there is nothing to distribute between two screens — there is exactly one gap, and it is already whatever it is.

Aligning works per row, not to a single line

This is the key thing about the four edge buttons: they do not put every screen on one line. The screens are first split into independent groups — screens that overlap on the perpendicular axis end up in the same group (overlap in height for left and right, in width for top and bottom). Each group is handled on its own and knows nothing about its neighbours.

Inside a group the screens form a chain: the one nearest the target edge stays put as the anchor, and each next one butts up against the previous. So "align left" does not move the selection's own left boundary — it closes the gaps by pulling the screens leftwards.

Example: two rows of two screens

Four 2000×1500 mm screens in two rows — the top one at y = 0, the bottom at y = 3000, with a gap between the screens in each row:

ScreenRowX beforeX after "align left"
Atop00 — its row's anchor, does not move
Btop35002000 — butted up against A
Cbottom8000 — its row's anchor, pulled to the outer left edge
Dbottom42002000 — butted up against C

Note C: it moved from 800 to 0 because it is the leftmost in its own row and travels to the selection's outer boundary. The rows did not mix — B never tried to queue up behind C, even though they were side by side on X.

If every selected screen overlaps in height they form ONE group and end up in a single horizontal chain, packed tight. That is expected, but it looks surprising if you were after alignment to a line — check that the screens really do sit in rows.

The gap

The field under the grid sets the distance between neighbours in the chain, in millimetres. It takes 0 to 100, the slider steps by 10, and the number can be typed in — where the two disagree, the number wins.

OperationUses the gap
The four edge buttonsYes — screens are placed that far apart
Collect to the centreYes
Distribute horizontally and verticallyNo — the spacing there is computed
Mirror horizontally and verticallyNo — the screen does not move

In the same two-row example a 500 mm gap puts B at 2500 rather than 2000 — exactly A's width plus the gap.

Collect to the centre

The middle button pulls the selection towards the centre of its own bounding box, horizontally first and then vertically. It has two safeguards: a screen never crosses the selection's centre line, and never travels backwards from where it already stood. Pressing it again therefore changes nothing, and screens do not slip through one another.

Even distribution

The two corner buttons space the screens evenly, the way graphics editors do it. The end screens stay where they are, everything between them gets equal intervals, and the screens keep their own order along that axis.

ScreenX beforeX after "distribute horizontally"
A00 — an end screen, does not move
B26004500 — landed exactly in the middle
C90009000 — an end screen, does not move

The gap has no effect here: the interval comes from the free space between the end screens and the combined width of the ones in between.

Mirroring a layout

The two double-arrow buttons behave unlike the rest: they act on one selected screen and only switch on for a free-form screen. A plain rectangular screen has nothing to mirror — a symmetric grid looks identical afterwards — so the buttons stay greyed out.

Mirroring rearranges the cabinets within the screen's own bounding box: the screen itself does not move, does not change size and keeps its place in the project. Cabinet numbers stay as they were — these are the same physical cabinets, just in different places.

  • ⇋ horizontally — the layout is flipped left to right;
  • ⇵ vertically — top to bottom.

The typical use is a symmetric pair: build a staircase in free-form mode, duplicate the screen with Ctrl+D and mirror the copy. That gives you the opposite wing without assembling it again.

Inside free-form mode itself the align block is fully unavailable — the whole left panel is inert while you edit the layout. Mirror a CUSTOM screen on the canvas, after leaving cabinet editing.

A few more things

  • Every operation in the block is recorded in history: Ctrl+Z restores the previous arrangement in one step.
  • To select several screens, drag a marquee across empty canvas or Shift+click — see "Working on the canvas".
  • Alignment uses the screen's visible footprint, so a rotated screen counts as the rectangle it actually occupies.
  • There is no such block on a phone: it works on several selected screens, and no touch gesture exists for a marquee — see "The mobile version".