Выравнивание, распределение и зеркалирование

Блок из девяти кнопок в левой панели решает три разные задачи: собрать выделенные экраны вплотную к одному краю, разложить их с равными промежутками и отразить раскладку экрана произвольной формы. Кнопки включаются по количеству выделенного, поэтому блок почти всегда выглядит частично погашенным — это рабочее состояние, а не ошибка.

Сетка кнопок

Блок устроен как сетка 3×3. В центре — «собрать в центр композиции», по сторонам от него — четыре края, по углам — зеркалирование и распределение. Под сеткой стоит поле зазора с ползунком.

КнопкаЧто делаетАктивна при
⇤ ⇥ ⤒ ⤓ — по левому, правому, верхнему, нижнему краюСдвигает выделенные экраны друг к другу в сторону указанного краявыделено 2 и более
⛶ — собрать в центр композицииСтягивает выделенные экраны к центру их общего габарита по обеим осямвыделено 2 и более
Равномерно по горизонтали и по вертикалиОставляет крайние экраны на месте, остальным задаёт равные промежуткивыделено 3 и более
⇋ ⇵ — отразить по горизонтали и вертикалиЗеркалит раскладку кабинетов внутри одного экранавыделен один экран произвольной формы
блок выравнивания: сетка 3×3 и поле зазора под ней
Скриншот: блок выравнивания: сетка 3×3 и поле зазора под ней

Порог «3 и более» у распределения не произволен: между двумя экранами распределять нечего — промежуток там ровно один, и он уже такой, какой есть.

Выравнивание работает по рядам, а не по общей линии

Это главное, что стоит понять про четыре кнопки краёв: они не ставят все экраны на одну линию. Экраны сначала разбиваются на независимые группы — в одну группу попадают те, что перекрываются по перпендикулярной оси (для выравнивания влево и вправо это перекрытие по высоте, для верха и низа — по ширине). Каждая группа обрабатывается отдельно и ничего не знает о соседних.

Внутри группы экраны выстраиваются в цепочку: ближайший к нужному краю остаётся на месте и служит опорой, а каждый следующий встаёт вплотную к предыдущему. Поэтому кнопка «по левому краю» не двигает левую границу выделения — она закрывает щели между экранами, подтягивая их влево.

Пример: два ряда по два экрана

Четыре экрана 2000×1500 мм стоят двумя рядами — верхний на y = 0, нижний на y = 3000, внутри каждого ряда между экранами щель:

ЭкранРядX доX после «по левому краю»
Aверхний00 — опора своего ряда, не двигается
Bверхний35002000 — встал вплотную к A
Cнижний8000 — опора своего ряда, подтянулся к общему левому краю
Dнижний42002000 — встал вплотную к C

Обратите внимание на C: он сдвинулся с 800 на 0, потому что в своём ряду он крайний слева и едет к внешней границе выделения. Ряды при этом не смешались — B не пытался встать в затылок к C, хотя по X они были рядом.

Если все выделенные экраны перекрываются по высоте, они образуют ОДНУ группу и выстроятся в одну горизонтальную цепочку вплотную друг к другу. Это ожидаемо, но выглядит неожиданно, если вы рассчитывали на выравнивание по линии — проверьте, действительно ли экраны стоят рядами.

Зазор

Поле под сеткой задаёт расстояние между соседними экранами в цепочке, в миллиметрах. Значение от 0 до 100, ползунок ходит шагом 10, число можно ввести вручную — при расхождении главным считается именно число.

ОперацияУчитывает зазор
Четыре кнопки краёвДа — экраны встают через заданное расстояние
Собрать в центр композицииДа
Равномерно по горизонтали и вертикалиНет — промежутки там вычисляются сами
Отразить по горизонтали и вертикалиНет — экран не двигается

В том же примере с двумя рядами зазор 500 мм ставит B не на 2000, а на 2500 — ровно ширина A плюс зазор.

Собрать в центр композиции

Кнопка в середине сетки стягивает выделенные экраны к центру их общего габарита — сначала по горизонтали, потом по вертикали. У неё два предохранителя: экран никогда не пересекает центральную линию выделения и никогда не уезжает назад относительно того места, где стоял. Поэтому повторное нажатие уже ничего не меняет, а экраны не «проскакивают» друг сквозь друга.

Равномерное распределение

Две угловые кнопки раскладывают экраны с одинаковыми промежутками — так же, как это делают графические редакторы. Крайние экраны остаются на своих местах, а всё, что между ними, получает равные интервалы; собственный порядок экранов по оси сохраняется.

ЭкранX доX после «равномерно по горизонтали»
A00 — крайний, не двигается
B26004500 — встал ровно посередине
C90009000 — крайний, не двигается

Зазор на эту операцию не влияет: промежуток вычисляется из свободного места между крайними экранами и суммарной ширины тех, что внутри.

Зеркалирование раскладки

Две кнопки с двойными стрелками работают иначе остальных: они действуют на один выделенный экран и включаются только если это экран произвольной формы. У обычного прямоугольного экрана отражать нечего — симметричная сетка после зеркалирования выглядит точно так же, поэтому кнопки остаются погашенными.

Отражение переставляет кабинеты внутри собственного габарита экрана: сам экран не двигается, не меняет размер и сохраняет своё место в проекте. Номера кабинетов при этом не меняются — это те же физические кабинеты, просто на других местах.

  • ⇋ по горизонтали — раскладка отражается слева направо;
  • ⇵ по вертикали — сверху вниз.

Типичный сценарий — симметричная пара: собрали «лесенку» в режиме произвольной формы, скопировали экран через Ctrl+D и отразили копию. Получается зеркальное крыло без повторной сборки.

Внутри самого режима произвольной формы блок выравнивания полностью недоступен — вся левая панель там погашена, пока вы правите раскладку. Зеркалить CUSTOM-экран нужно на холсте, выйдя из режима редактирования кабинетов.

Что нужно знать ещё

  • Все операции блока пишутся в историю: Ctrl+Z возвращает раскладку в прежний вид одним шагом.
  • Выделить несколько экранов можно рамкой по пустому месту холста или Shift+кликом — подробнее в статье «Работа на холсте».
  • Выравнивание считает по видимому габариту экрана, поэтому повёрнутый экран учитывается тем прямоугольником, который он реально занимает.
  • На телефоне блока нет: он работает по нескольким выделенным экранам, а сенсорного жеста для выделения рамкой не существует — см. «Мобильная версия».