Scissor

Автоматизация

Три средства Scissor выполняют повторяющуюся работу за вас: Операции записывают последовательность команд и воспроизводят её, Переменные подставляют текст и видимость из таблицы данных, превращая один дизайн во множество вариантов, а Скрипты управляют всем редактором из JavaScript. Ни одному из них не нужны учётная запись или сервер — как и весь Scissor, они работают на вашем собственном компьютере.

Операции: записать один раз, воспроизводить где угодно

Панель Операции (Окно › Операции) записывает ваши действия и воспроизводит их на новом выделении. Нажмите Запись, выполните команды, которые хотите записать, — выравнивание, смещение, добавление тени, любую нужную последовательность, — затем нажмите Стоп и дайте операции название. Она появится в списке с указанием числа шагов.

Щёлкните операцию, чтобы воспроизвести её на том, что сейчас выделено; щёлкните с ⌥, чтобы удалить её. Поскольку операция — это просто список команд, она в точности повторяет одну и ту же процедуру на множестве объектов, и вам не нужно каждый раз прощёлкивать её вручную.

Переменные: один дизайн, много вариантов

Панель Переменные (Окно › Переменные) превращает неизменный дизайн в шаблон, управляемый данными. Динамическими у объекта можно сделать две вещи:

Сделать текст динамическим
Связывает слова текстового объекта с переменной, чтобы разные наборы данных могли подставлять в одно и то же место разный текст.
Сделать видимость динамической
Связывает с переменной видимость объекта, чтобы набор данных мог включать и выключать части дизайна.

Отвязать снова делает связанный объект неизменным.

Наборы данных

Набор данных — это одна строка значений для этих переменных: один бейдж, одна карточка, один кадр. Захватить сохраняет текущие значения как новый набор; стрелки переключают наборы по порядку, и дизайн обновляется в соответствии с ними. Импорт CSV… считывает сразу целую партию — по столбцу на переменную и по строке на набор, — а Экспортировать CSV записывает наборы обратно в файл, чтобы их можно было редактировать в электронной таблице.

Экспорт всех наборов сразу

Экспортировать наборы данных… отрисовывает активную монтажную область по разу для каждого набора данных и записывает их все за один проход в формате PNG, JPEG, WebP или SVG. Лист именных бейджей, комплект локализованных баннеров или серия карточек для соцсетей получаются аккуратной партией файлов, в каждом из которых подставлены свои данные.

Скрипты: управление Scissor из JavaScript

То, что нельзя выразить через меню, можно сделать скриптом. Файл › Скрипты › Консоль скриптов… открывает редактор, в котором вы пишете код на JavaScript и выполняете его в открытом документе; Другой скрипт… (⌘F12) запускает файл .js с диска. Скрипт выполняется в Web Worker, отдельно от страницы, поэтому он не может обращаться к интерфейсу или вашим файлам иначе как через переданный ему объект scissor — каждый вызов выполняется движком, и ответ возвращается скрипту.

Объект scissor охватывает основные задачи:

Создание фигур и текста
scissor.rect, roundedRect, ellipse, polygon, star, path и text рисуют графику; каждая функция принимает положение и размер, а также объект параметров для fill, stroke и strokeWidth (цвета задаются любым цветом CSS).
Чтение документа
await scissor.document() возвращает приложение, выделение, слои и монтажные области в том виде, в каком их видят панели; scissor.selection() возвращает только выделенное.
Действия с документом
scissor.select, group и undo, а также scissor.run(command) для любой команды движка — тех же команд, что отправляют меню.
Обратная связь
scissor.log выводит текст в консоль; scissor.alert показывает сообщение.

Короткий пример — кольцо из цветных точек и подпись:

const doc = await scissor.document();
scissor.log('Boards:', doc.artboards.length);
for (let i = 0; i < 12; i++) {
  const a = (i / 12) * Math.PI * 2;
  await scissor.ellipse(300 + Math.cos(a) * 120, 260 + Math.sin(a) * 120, 36, 36,
    { fill: `hsl(${i * 30} 80% 60%)` });
}
await scissor.text(230, 270, 'Hello, Scissor', { size: 24 });

Консоль скриптов сохраняет последний выполненный код, так что работающий скрипт будет на месте, когда вы к ней вернётесь.