Группы блоков

Обновлено

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

Как собрать группу и как её разгруппировать

Выделите два и более блоков, которые пока не входят ни в одну группу.

Сгруппировать их можно тремя способами: сочетанием Cmd/Ctrl + G, кнопкой на нижней панели инструментов — она же переключается в «Разгруппировать», когда выделена уже собранная группа, — или пунктом «Группировать» в меню по правому клику на выделении.

Новая группа получает имя «Группа» по умолчанию и по границам плотно охватывает выделенные блоки.

Кнопка и пункт меню появляются, только когда выделено больше одного блока, а сочетание клавиш этого не проверяет: нажав Cmd/Ctrl + G на одном выделенном блоке, вы получите группу из одного блока. Пустая группа, из которой все блоки вышли или были удалены, тоже остаётся на холсте — Строфи не убирает её сама, удалите такой контейнер вручную.

Разгруппировать — Cmd/Ctrl + Shift + G, та же переключающаяся кнопка на нижней панели или пункт «Разгруппировать» в меню по правому клику на самой группе. Контейнер группы исчезает, блоки внутри остаются на холсте на своих местах.

По какому правилу блок входит в группу и выходит из неё

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

Строфи проверяет это не только в момент группировки, а постоянно. Перетащили блок и отпустили: центр оказался внутри границ группы — блок стал её членом; вытащили центр наружу — блок вышел из группы.

То же самое происходит при изменении размера самой группы: после того как вы отпустили маркер изменения размера, Строфи заново проверяет каждый блок на холсте по новым границам — кто-то может войти в группу, кто-то выйти.

Правило работает и для только что созданных блоков: если новый блок появляется внутри границ группы — при перетаскивании с верхней панели, из каталога блоков, как результат подключённой генерации, при вставке из буфера или через быстрое действие вроде извлечения кадра — он сразу становится её членом.

Группу нельзя поместить внутрь другой группы: блок-группа и блоки, уже состоящие в какой-то группе, не участвуют в этой проверке и не попадают в новую группу при группировке — вложенные группы невозможны.

А вот пересекаться границами две группы могут, и правило центра тогда даёт неожиданный результат: блок, чей центр попал в общую для обеих групп область, окажется в составе сразу двух — каждая проверяет своих членов независимо. Держите границы групп раздельно, если не хотите такого поведения.

Что происходит при перемещении, изменении размера и переименовании

Перетаскивание группы двигает вместе с ней все блоки внутри — на одно и то же расстояние, будто они скреплены. Работает и тогда, когда группа входит в более широкое выделение вместе с другими блоками.

Соединения от блоков внутри группы к блокам снаружи при этом не рвутся — они следуют за передвинутыми блоками.

Размер группы меняют перетаскиванием за границу или угол. После того как вы отпустили маркер, состав группы пересчитывается по новым границам — по тому же правилу центра, что и при перетаскивании отдельных блоков.

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

Название группы меняется двойным кликом по заголовку.

Как запустить генерацию для всей группы

Если внутри группы есть хотя бы один блок генерации с уже выбранной моделью, при выделении группы над ней появляется кнопка «Запустить». Тот же запуск можно вызвать клавишей Enter, когда группа выделена.

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

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

Если блоки генерации внутри группы зависят друг от друга по кругу, Строфи не запускает цепочку и показывает предупреждение о циклической зависимости.

На кредиты групповой запуск не влияет: с каждого блока Строфи списывает ровно столько же, сколько списала бы при отдельном запуске этого блока — отдельной платы за запуск самой группы нет.

Что будет с блоками при удалении группы

Удаление выделенной группы стирает не только сам контейнер, но и все блоки внутри неё — вместе с соединениями, которые вели от них к блокам снаружи группы.

Если нужно оставить блоки на холсте, а убрать только группировку — разгруппируйте вместо удаления.

Копирование группы работает так же, как копирование остальных блоков, — подробно об этом в статье Копирование и вставка блоков.