Select several openings and space them evenly

Shift-click a row of openings, drag them together, then grab a joint between them to set equal gaps — with the pinned end determined by which joint you grabbed.

What it is

Group selection and layout on one wall: an atomic group move preserving relative offsets, Figma-style even distribution driven by handles that sit in the gaps, and quarter/half/three-quarter alignment buttons.

Also called: multi select · distribute · tidy spacing · equal gaps · align quarter half

See it
Select several openings and space them evenly
New lead 3
Marlin Hoover
$40k
Delia Yoder
$45k
Contacted 4
Sutter Kline
$53k
Ronan Petsch
$59k
Ivy Brubaker
$68k
Estimate 3
Ivy Brubaker
$67k
Gideon Alt
$47k
Sold 4
Marlin Hoover
$40k
Delia Yoder
$70k
Sutter Kline
$47k
Four windows selected on a sidewall with distribute joints between them and thin accent lines marking each equal gap. Sample data — no customer information appears here.
How it works
  1. 1clampGroupDelta() computes one shared delta clamped against wall ends and every unselected neighbour, direction-aware so the group stops at a blocker rather than teleporting past it.
  2. 2Group moves resolve absolutely against a snapshot taken at pointer-down, so fast pointermoves cannot stack deltas onto stale state.
  3. 3distributeOpenings() sets equal gaps, clamped between the required clearance and what fits, landing on the 3in grid.
  4. 4gapAnchorForJoint() picks the pin: the leftmost joint pins the right end, the rightmost joint pins the left end, a middle joint holds the row's centre.
  5. 5Vertical group movement applies to windows only — doors stay grounded.
  6. 6The result is verified against unselected openings and rejected outright rather than producing a violation.
Why we built it

Moving several openings at once computed each step as a nudge against whatever the screen had last drawn and then added it to newer positions, so a fast drag stacked its own corrections and walked windows off the end of the wall into negative offsets. Multi-select now resolves every position absolutely, against the state the drag started from. Select a row of windows, align them or distribute them evenly, and they land where they are shown.

The problem
  • Even spacing done by arithmetic on offsets.
  • Group moves that drift or overshoot under fast dragging.
Sound familiar?
What you get
A row of openings spaces evenly in one drag.
The group stops at blockers instead of jumping past them.
Quarter/half alignment is one button.

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →