[AI CC-CC2021] Скрипт копирующий обьекты и ставящий метки

Serj

Участник
Топикстартер
Сообщения
24
Реакции
0
Нужен скрипт создающий массив из копий одного обьекта с заданным расстоянием между обьектами.

К примеру задаем количество строк 4 расстояние 0
Количество столбцов 4 расстояние 0

получаем матрицу из 16 обьектов.

после этого сразу рисуем по периметру этого массива метки 10х10мм толщиной 0,5мм выглядящие как равносторонние уголки.
Расстояние от центра метки до края обьекта 0.

Не нужны никакие диалоговые окна все регулировки в теле скрипта.

В теме не шарю, сложность оценить не могу, но чужой труд и время ценю - готов заплатить!гг

Люстратор 2020

Помогите пожалуйста о великие боги скрипта!!!'alil''alil''alil'
 

Вложения

  • 1.jpg
    1.jpg
    29.9 КБ · Просм.: 309
  • Скриншот 2020-07-27 21.25.16.png
    Скриншот 2020-07-27 21.25.16.png
    1.7 КБ · Просм.: 289

Serj

Участник
Топикстартер
Сообщения
24
Реакции
0
Лучше сделать отдельно 2 скрипта один матрицы делает, другой метки ставит.
 

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Ничего сложного, кто-нибудь заскриптит, причем все можно и в одном скрипте сделать.

Кстати. понятное дело, что не очень удобно, на мало ли, могу Вам предложить вариант без скрипта:
2 слоя.
в верхнем слое - метки
в нижнем - объект. К слою применен эффект move по х и по y на величину ширины и высоты объекта соответственно.

Минус методы - для каждого объекта, который нужно размножить, нужно делать такой шаблон, ну, и метки всё-таки ручками... Хотя если это каждый раз одно и тоже. то можно и такими шаблонами себя спасти. =)
пример (объект 60x35 поставлен 4x4 раза)
 
  • Спасибо
Реакции: Gadalka

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Аттракцион невиданной щедрости.
Перед запуском скрипта объект должен быть выделен.

Лучше всего, если объект - это Clipping mask, внутри которой находится все что душе угодно. Габариты Clipping mask - это размер объекта.
Либо объект - это группа (тогда за размер всей группы будет браться габариты самого верхнего объекта в группе (типа рамка)).
Почему так? Да, потому что кодить все случаи жизни мне нафиг не уперлось. Немного побаловался и хватит. Код пронизан ленью максимально =) .Можете редачить как хотите и куда хотите, ибо все максимально просто. А можете подождать и кто-нибудь сделает удобняху.

JavaScript:
var mm = 25.4/72;

promtotext="Кол-во строк, Расстояние\nКол-во столбцов, Расстояние\n";
promtotitle="Задайте значения через пробел";

if (of = prompt(promtotext, "4 0 4 0" ,promtotitle))
{
param = of.split(' ');

xx=param[0]*1;
yy=param[2]*1;
deltaX=param[1]*1;
deltaY=param[3]*1;

doc=app.activeDocument;
mySelection = doc.selection;
doc.artboards[0].artboardRect = mySelection[0].pageItems[0].visibleBounds;
doc.rulerOrigin = Array(0, 0);
doc.artboards[0].artboardRect = [0, mySelection[0].pageItems[0].height*yy+((deltaY*(yy-1))/mm), (0+((deltaX*(xx-1))/mm) + mySelection[0].pageItems[0].width*xx), 0];
mySelection_new=mySelection[0];
for ( j = 0; j <yy; j++ )
{
    for ( i = 1; i <xx; i++ )
    {
     mySelection_new=mySelection_new.duplicate();
     mySelection_new.translate(mySelection[0].pageItems[0].width+(deltaX/mm), 0); 
    }
     mySelection_new=mySelection_new.duplicate();
     mySelection_new.translate(-(mySelection[0].pageItems[0].width*(xx-1)+((deltaX*(xx-1))/mm)),mySelection[0].pageItems[0].height+(deltaY/mm)); 
}
mySelection_new.remove();
redraw();

draw_line([[-10/mm,0],[0,0],[0,-10/mm]]);
draw_line([[-10/mm,doc.cropBox[1]],[0,doc.cropBox[1]],[0,doc.cropBox[1] +10/mm]]);
draw_line([ [doc.cropBox[2]+10/mm,0],[doc.cropBox[2],0],[doc.cropBox[2],-10/mm] ]);
draw_line([ [doc.cropBox[2]+10/mm,doc.cropBox[1]],[doc.cropBox[2],doc.cropBox[1]],[doc.cropBox[2],doc.cropBox[1]+10/mm] ]);


} // if promt

function draw_line(x)
{
line = doc.pathItems.add();
line.stroked = true;
line.strokeWidth = 0.5*2.834645;
line.strokeColor = function newCMYKcolor(c,m,y,k)
  {  var regColor = new CMYKColor();
     regColor.cyan = c;  regColor.magenta = m;  regColor.yellow = y;  regColor.black = k;  return regColor;
  }(100,0,0,0 );
line.setEntirePath(x);
line = null;
}
 
Последнее редактирование:
  • Спасибо
Реакции: Roman Kovalev

Roman Kovalev

Участник
Сообщения
5
Реакции
2
у меня есть подобный скрипт, но сделан под узкую задачу и не отлажен до конца

но написать хотел немног о другом - мне пришлось остановить «вылизывание» своего скрипта, так как понял, что надо все это делать в акробате с pdf файлом

кстати мой алгоритм позволяет вычислить сколкько можно разместить исходя из размеров листа и габаритов этикетки (selection), а также может поворачивать этикетку, если это позволит разместить больше этикеток и еще пытается «забить» незанятую часть (обрезок) на листе, есть стартовый диалог с вводом всех параметров.

Могу подробнее все показать/рассказать если вопрос актуален. Велком в личку или на почту rk@icmyk.ru

На всеобщий доступ пока не выкладываю, так как код так себе (ниже джуна) и есть много недоделок.