[AI CC-CC2021] Масштабирование всех объектов

  • Автор темы Автор темы Gfr
  • Дата начала Дата начала

Gfr

Участник
Топикстартер
Сообщения
9
Реакции
0
Не могу понять, как отмасштабировать все объекты так как это делает «Transform»

Функция item.resize маштабирует каждый объект отдельно

А для меня, группировать все нельзя, так как объекты на разных слоях и это нарушит структуру документа

Прошу подсказать что нужно сделать!
 
JavaScript:
   var myItems = docRef.pageItems;
   var ratio = 0.5;

    for (var i = myItems.length - 1; i >= 0; i--) {
        myItems[i].resize(ratio, ratio, true, true, true, true, ratio, Transformation.DOCUMENTORIGIN);
    }


есть некоторые нюансы, надо пропускать pathItems внутри compoundPathItem, иначе они два раза трансформируются. но для начала так
 
  • Спасибо
Реакции: catpaw
Ну это, во первых, не одной командой, а во вторых относительно чего?
 
Transformation.DOCUMENTORIGIN

где был запрос одной командой?
 
Ну
А надо скорее всего относительно центра выделенной группы или как то так небось
 
переместить потом не проблема все на одну величину, главное что в процессе масштабирования не сбивается положение относительно друг друга
 
Тема в разделе скриптинга значит имеется в виду именно реализация Transform
как отмасштабировать все объекты так как это делает «Transform»
причем куча resize не годится по условию
Функция item.resize маштабирует каждый объект отдельно
 
и что с того? проблема не в количестве команд, а в том, что смещение объектов происходит, если я правильно понимаю.
по крайней мере, я так делаю все время, проблем не возникает )
 
Последнее редактирование:
JavaScript:
   var myItems = docRef.pageItems;
   var ratio = 0.5;

    for (var i = myItems.length - 1; i >= 0; i--) {
        myItems[i].resize(ratio, ratio, true, true, true, true, ratio, Transformation.DOCUMENTORIGIN);
    }


есть некоторые нюансы, надо пропускать pathItems внутри compoundPathItem, иначе они два раза трансформируются. но для начала так

Спасибо!
То что нужно
 
переместить потом не проблема все на одну величину,
А не подскажете, как вычислить эту величину?
Задачка очень похожая - нужно отмасштабировать все на выбранном артборде. Идеально - продублировать команду Transform-Scale с заданными параметрами (98, 93, например). Масштабировать нужно относительно центра артборда. Артбордов куча - слева, справа, снизу, сверху. Много слоев, сливать нельзя. Вот прям затык на ровном месте..
То, что вы предложили - вроде пожходит, но масштабируется относительно непонятно чего и тудаже сдвигается. Или правильный вопрос - что такое Transformation.DOCUMENTORIGIN? )
Как вариант - группировать, а что потом с этим добром делать и как по слоям растаскивать?
Бэн, ай нид хелп!!! ©
 
Ответ на второй вопрос - насколько я понимаю, относительно центра документа (не артборда а именно документа) из него же следует и ответ на второй - все обьекты надо сдвинуть на разницу между центром документа и центром нужного артборда
 
относительно центра документа (не артборда а именно документа)

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

Transformation.DOCUMENTORIGIN (Read Only)
Data Type: int, Value: 1
Adobe Illustrator 24 Type Library
Transform relative to the illustration's page origin.
 
Последнее редактирование:
Я не настаиваю, все равно иллюстратора под рукой нет, а можно ж по идее программно поставить начало координат в центр артборда и после этого масштабировать?
 
вроде можно - Document.pageOrigin, надо попробовать
 
Спасибо!
То что нужно
Доброго дня . Скиньте пожалуйста весь код. У меня стоит аналогичная задача необходимо после увеличения артборда с 1000 px на 6000 px ( кодом я уже сделал эту часть ) необходимо увеличить все объкты без включения в группу или выделив все объекты (аналогично транформированию от центра , но не трансформировать каждый). Тот код что есть уменьшает объекты и выбрасывает на левую сторону за артборд.