Скрипт для легкого копирования свотчей из файла в файл

Jan 06, 2016 01:09

Как-то раз у меня возникла проблема - нужно скопировать из пары десятков файлов свотчи (swatches) в другие несколько десятков файлов ai. Я знал, и до сих пор знаю только один встроенный вариант решения - экспорт в библиотеку свотчей, а после импорт из нее. В общем, много рутинной работы. И я не стал этим заниматься, а написал себе скрипт который ( Read more... )

swatches, adobe illustrator, скрипты, стоки

Leave a comment

sapona January 7 2016, 20:39:39 UTC
Спасибо за скрипт. Как раз вот красила серию картинок и пришлось делать копи пайст во все руками.
Еще у меня к Вам просьба, раз вы увлекаетесь скриптами. Я делаю бесшовные патерны, и вот когда я их наделываю пачку , тогда я начинаю их проверять, действительно ли они бесшовные. Ну это что бы не тратить время на проверку , когда у меня супер творческий процесс создания.
Написала акшин, и загоняю все файлы батчем ( извините за суржик). Суть акшина , выделить все , создать патерн свочь ( меню - едит - дефайн патрен), нарисовать прямоугольник , залить новым свотчем , сохранить и закрыть.
Дальше я это все открываю и смотрю только прямоугольник, если проблемы , то выделяю файл и уже с ним работаю.
Прямоугольники потом тоже батчем удаляю.
Так вот проблема в том , что меню- едит - дефайн патерн , всегда требует подтверждения, выскакивает диалоговое окно , что да создать патерн номер 1.
Я под это дело приспособила auto hot keys, но не всегда работает.
Можно ли написать скрип , что бы он создавал патерн с именем без диалога?
По идеи должно быть что то очень простое, в две строчки, я даже думала сама написать, но не нашла похожего скрипта, что бы из меню что то создавал. Да и языками не владею.

Reply

vanstock January 7 2016, 22:38:51 UTC
Возможно я смогу помочь, правда не уверен что правильно понял общую схему работы, но уже кое-что смастерил) Если Вам нужен скрипт, который создаст паттерн из всего что есть на артборде без лишних вопросов, то вот он: https://yadi.sk/d/2GteSRvFmjYyb
Вы можете включить его внутрь Вашего экшена, вроде бы это должно быть легко. Работать он будет так: в уже открытом и активном документе выделит все, сделает из всего паттерн, аналогично тому как если бы нажать object -> pattern -> make (у меня CS6) и кнопку DONE. Имя нового свотча с паттерном будет "New Pattern". Если нужно могу поменять на что угодно (учтите только что нельзя задать уже существующее). Дальше Вы видимо знаете как применить данный свотч к создаваемому прямоугольнику.

Вообще, большое Вам спасибо за эту задачку. Я когда-то уже сталкивался с ней, но тогда решил ее более грубым и медленным способом, в Вашей специфике такое бы не подошло. Теперь пришлось немножко подумать и придумалось более хитрое и тонкое решение.

з.ы. кстати говоря, Вы проверяете паттерны визуально же? А не анализировали какой тип косяков находите чаще всего? Я к тому что если при создании паттерна, Вы ориентировали его на размер артборда, то если размер всего что нарисовано не совпадает с размером артборда, то скорее всего как раз будут наложения или пустоты. А вот это можно в пару строчек проверять программно.

Reply

sapona January 7 2016, 23:18:46 UTC
Спасибо.
Только не работает у меня , так как я не написала самое главное Иллюстратор 3 или 5.
В 6 уже нет функции дефаин патерн, там встроили новый инструмент по созданию патернов, и работает он совсем не так как нужно.

Reply

vanstock January 8 2016, 09:16:32 UTC
Пятый или даже третий иллюстратор это не беда, на самом деле, все решаемо. После 11 числа у меня будет возможность попробовать модифицировать код под старые версии, сейчас под рукой cs5 нет. Кроме того, если и не получится засунуть рисунок в свотч, всегда есть возможность просто достроить восемь его копий вокруг, и получится сетка 3:3 из Вашего паттерна, для визуального контроля границ должно быть достаточно. Такую операцию Вы можете попробовать осуществить и чисто через экшн.

Напишите мне, пожалуйста, как именно у Вас не сработал скрипт:
- отказался запускаться вообще (указал ли причину?)
- вроде запустился и что-то делал, но ничего не изменилось и сообщений об ошибках не было
- запустился, но выкинул окошко с ошибкой (пришлите текст из окошка или скриншот)
- нечто совершенно иное

Reply

sapona January 8 2016, 15:07:12 UTC
Спасибо, что возитесь.
Да по поводу копий это хорошая идея. Но сохраняться будет вечность. У меня бывают такие тяжелые файлы, и если их увеличить в 4 раза ( так как можно обойтись 4 копиями, вместо 8).
Я эту проблему решаю как я уже писала, через авто хот кийс, они работают на 90 %. Я там написала скрип , что бы мышка кликала по экрану в нужном месте через определенное время 20 сек по моему.
Если файлы легкие , то все отлично работает, а если попадется что то тяжелое, то здесь происходит сбивка.
Вот ошибка , что выскакивает при попытке запустить скрипт.


Reply

vanstock January 8 2016, 21:00:00 UTC
Да не за что, мне самому интересно)
Я покидаюсь еще идеями, ладно?) Сохранение вектора имеется ввиду? Можно добавить копий паттерна (3 и 8) и экспортировать в жипег (это правда тоже не моментально, если большое разрешение), а после закрыть документ без сохранения. Потом просмотреть жипеги, при необходимости поправить, но уже не нужно удалять прямоугольники с демками паттерна)

А вообще, менее радикальная мысль относится к auto keys и аналогам. Это вообще очень полезная штука, меня тоже иногда выручает. В Вашем случае, вероятно проблемы на тяжелых файлах возникают когда попытка сделать клик происходит слишком рано - значит может стоит удлинить интервал между кликами - с 20 секунд до 40, например? У меня был случай когда пришлось долго подбирать идеальное число повторных кликов и пауз между ними, увеличив это простое действие до 1,5 минут, но оно того стоило, т.к. общий процесс обработки многих файлов занимал по 1,5 часа которые не приходилось проводить у компьютера)

Ошибка в моем скрипте возникает при запуске. Можно попробовать сменить расширение файла с *.jsx на *.jsxbin, но даже если это позволит запуститься, потом все равно обвалится, т.к. будет обращение к несуществующим возможностям. После праздников посмотрю на живом компьютере)

Reply

sapona January 9 2016, 15:59:01 UTC
Отличная идея сохранять джипег , их и просматривать легче, и удалять прямоугольник отдельным шагом не нужно.
По поводу сдвижки копий патерна , так у меня ширина у всех патернов 1000 пунктов, а вот высота меняется, как это сделать автоматом я не знаю. Только подключать авто хот кийс, но это не очень красивое решение.

По поводу авто хот кийс вы все правильно написали , дело во времени. У меня обычно в партии много легких файлов которые сохраняются за 1-10 сек и примерно 20% это тяжелые , которым нужно до 1минуты.
Партии я набираю около 100 штук. Можно конечно же поделить по весу, но лень. Естественно если я поставлю на хот киях 2 минуты , то наверняка все сделается ( я в общем то так и делаю). Только долго. Так сказать быстренько не сделаешь.

Reply

vanstock January 13 2016, 19:47:37 UTC
Не удается пока добраться до того компьютера, чтоб на живом cs5 попробовать. Когда удастся - чего-нибудь смастерю)

Reply

sapona January 13 2016, 20:21:23 UTC
Спасибо, буду ждать

Reply

vanstock January 15 2016, 13:39:59 UTC
У меня на работе оказался CS3, в нем почти ничего удобного нельзя сделать, но можно смастерить скрипт который будет дублировать паттерн, экспортировать в jpg-превью и закрывать без сохранения документ. Тут две важные точки на входе и выходе: перед работой скрипта нужно добавить запуск экшена который "выделит все" и "сгруппирует". Такой экшн вроде легко написать. Потом запустить, скрипт - он поработает с файлом и закроет его. Превью сохранит рядом с файлом-оригиналом. Далее нужен переход к следующему файлу и повторение действий. Насколько я понимаю эта, перебирающая файлы, обертка у вас есть.
Подумайте, описанное решение поможет или только все усложнит?

Reply

sapona January 18 2016, 12:35:30 UTC
Жаль , что ничего нельзя сделать. Интересно , почему?
Ваша идея очень интересная, но патерн создавать мне нужно еще для Вектор стока, у них превью 380 на 400 пикселей. И я его создаю через прямоугольник залитый патерном - потом экспорт в джипег.
Если же этого не делать, то будут белые поля, не очень красиво.

Reply

vanstock January 18 2016, 13:38:05 UTC
Иллюстратор развивается, и возможности по его скриптированию вслед за ним. К сожалению, второе всегда не поспевает за первым, поэтому некоторые вещи, просто недоступны в CS5 и ниже. Кроме того, существенна и разница между CS5 и CS6. Кроме прочего, в последнем появились артборды, что изменило координатную сетку, от чего перестали корректно работать некоторые скрипты прошлого. Конечно, многое поправимо, и даже для Вашего случая есть еще пара идей как собрать скрипто-экшенового монстра, делающего то что нужно, но все это в конечном итоге скорее по части спортивного интереса, отодвигающего реальное удобство на задний план.

Вообще, должен сделать оговорку - когда я пишу что что-то невозможно или недоступно, я имею ввиду, конечно, что это я не знаю как это сделать, а не то что это невозможно потому что невозможно никогда. Некоторые вещи просто не описаны в руководствах, но существуют. Просто нужно знать нужное заклинание) Оно может быть, но его может и не знать никто из тех кому оно могло бы пригодиться. Поэтому, вообще-то, совсем не случайно что Вы не нашли подходящего скрипта для самостоятельной модификации, о чем писали в первом комментарии.

Относительно того что я выше описывал. Скрипт то сам готов, лежит в той же папке что и предыдущий - увидите по названию. Возможно только придется поменять расширение с *.jsxbin на *.jsx
И он там работает с *.ai файлами кажется.. если у Вас паттерны уже в *.eps то нужно поменять пару символов, напишите мне. Но он решает только задачу создания превью для проверки качества паттерна.

Reply

sapona January 18 2016, 15:32:03 UTC
Спасибо.
А в чем вы пишете скриты?
Я Ваши скрипы когда откываю болкнотом , то он нечитаемый.
Правильно ли я Вас поняла, это то что в 3 иллюстраторе, в описаниях просто нет этой этого описания, как заскриптовать Define pattern?

Reply

vanstock January 18 2016, 20:39:01 UTC
Да, правильно. Только еще раз - не могу утверждать что этого вообще нет, только то что я не нашел его, а известные мне обходные пути не сработали.
(кроме того, даже если программно нажать эту кнопку меню, проблема диалогового окна никуда не денется. Беда в том, что нет возможности (или неизвестно как) управлять таким типом цвета как "паттерн". Все знают что такое rgb-цвет, там три главных составляющих. Создать программно такой цвет и управлять этими составляющими легко, все описано. Про "паттерн" же ничего не известно, как там устроен внутри. Можно сделать пустой новый, но что-либо внутрь запихнуть - я не умею.)

Я пишу скрипты в стандартном для этого редакторе от адоби: ExtendScript ToolKit (ESTK). А "нечитаемы" они потому как перед публикацией я перевожу их в псевдо-bin формат (меню File -> Export as Binary).

Reply

sapona January 18 2016, 23:56:50 UTC
Вы пишите Джава Скрипт или на Вижуал бейсик?
Я вот тут сама почитала рефернс, и даже написала скрипт , но конечно же он не работает.
Вот он
if ( app.documents.length > 0 ) {
var doc = app.activeDocument;
var selected = doc.selection;
var newPattern = app.activeDocument.PatternColor.add();
newPattern.name = "NewPattern";
}
Пишет, что не вдит объект Паттерн который добавлять.


Потом я еще порылась в интернете и написал вот что

if ( app.documents.length > 0 ) {
var doc = app.activeDocument;
var selected = doc.selection;
myNewPatternSwatch = app.activeDocument.patterns.add();

}
И вот здесь я стала в тупик.
Так как это скрип игнорирует есть ли выделенные объекты или нет , но добавляет паттерн без имени ( unnamed pattern) в документ
Этот патент из четырех квадратиков. Вот как это происходит?
я Джаву Скрипт не знаю совсем, так что может ради интереса скажете , что бы это значило.

Reply

vanstock January 19 2016, 18:58:47 UTC
Я пишу на джаваСкрипт.

В первом случае не "не видит объект Паттерн который добавлять", а сообщает что некое неопределенное (в данном случае PatternColor) не является объектом в контексте родительского объекта activeDocument, и соответственно нет возможности даже попробовать найти в нем метод add(). Это просто некорректное обращение, попутали)

Во втором примере все правильно. У меня только вопрос - а чего Вы ожидали то от создания нового паттерна в коде? Имейте ввиду, если не знать чего ожидать любой ответ будет неверен.
В документе activeDocument есть коллекция объектов-паттернов Patterns (это свотчи с типом цвета PatternColor), у коллекции есть метод add(). Его вызов возвратит новый объект типа Pattern. Объект этот будет таким, каким его описали программисты адоби в конструкторе класса. Думаю они сделали эту маленькую шахматку чтобы сразу было видно - создан объект типа Pattern. А не просто новый свотч, например, который по умолчанию просто черный. Чтобы отличать в общем.
Что именно за узор-рисунок там в паттерне определяется связанным PatternColor, есть возможности для искажения изображения, но доступа для подмены одной графики на другую я не вижу. Если найдете - расскажите обязательно, буду очень благодарен.

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

Reply


Leave a comment

Up