[AI CS4-CS6] Поиск одинаковых пунктирных линий

  • Автор темы Автор темы Linxy
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Linxy

Девушка с битой
Топикстартер
10 лет на форуме
Сообщения
2 277
Реакции
3 836
Не реализован поиск same пунктира. Что есть печаль.
 
Последнее редактирование модератором:
Можно макросом-скриптом найти в лёгкую.
 
Последнее редактирование модератором:
Последнее редактирование модератором:
В иллюстраторе по моему даже готовый скрипт есть, не помню только где я его видел. Тут в разделе скриптинга ссылка на огроооомный каталог полезных скриптов была, если он существует то там стопроцентно будет.
А в приложенном меню - как видишь, даже места под эту фичу не задействовали - так что извиняйте 'opa!)'
 
Последнее редактирование модератором:
Вот так всегда, все сама да сама. :)
Я не проверяла как в Кореле. Но в Иллюстраторе мне больше не нравится даже не то, что невозможно найти такой же пунктир, а то, что он при поиске по всем параметрам игнорирует пунтир и выделяет всё скопом: и разные пунктиры, и не пунктир вообще. И вот это, как я понимаю, в консерватории не исправить.
 
Последнее редактирование модератором:
Лови. действительно, самому написать оказалось проще, чем найти. Правда, написано на скорую руку тоже слегка в стиле любимого разработчика - к примеру, цвет только по типу пока что определяет а не по составляющим, но можно легко допилить при желании ;)
Код:
function getkey(Obj)
{
   return Obj.strokeColor+" "+Obj.strokeDashes+" "+Obj.strokeDashOffset+" "+Obj.strokeJoin+" "+Obj.strokeMiterLimit+" "+Obj.strokeOverprint+" "+Obj.strokeWidth;
}
if ( app.documents.length > 0)
{
if (app.activeDocument.selection.length>0)
{
  try {
    selObj = app.activeDocument.selection[0];
    var key=getkey(selObj);
//    alert(key);
    for (var i=0;i<app.activeDocument.pathItems.length;i++)
    {
      if (key==getkey(app.activeDocument.pathItems[i]))
      {
        app.activeDocument.pathItems[i].selected=true;
      }

    }
    redraw();
  } catch (err)
  {
   alert("Wrong object selected");
  }
} else
alert("No object selected");
} else
alert("No opened document");
 
Последнее редактирование модератором:
  • Спасибо
Реакции: Linxy и dumbm1
Попутно еще забавная вещь выяснилась - Adobe такие адобы - кисти в скриптинг добавить добавили, но в свойствах объекта их добавить ЗАБЫЛИ!!!! То есть, назначить кисть объекту можно, но определить, какая кисть объекту назначена НЕЛЬЗЯ!
Слов нет, вероятно, я и вправду, чересчур хорошо об эдоби думал, это уже не адобовский код - это код азиатской школы программирования! 'otbline''fp'
 
Последнее редактирование модератором:
':=)'':=)'':=)'
'thank''thank''thank'
Спасибо, пунктиры выбирает хорошо, но с цветом пока действительно беда.
Ох уж наш любимый Adobe. У одних не выделяется по пунктиру, у других по цвету. :)
 
Последнее редактирование модератором:
У одних не выделяется по пунктиру, у других по цвету.
Я ж говорю - поправить на цвет не вопрос - только зачем?
По цвету ж и так нормально выделяет
Вдобавок там чуть сложнее - просто проверить на равенство цвета нельзя - придется разгребать все модели по составляющим - тоже сделано через альтернативные методы! 'P:E'
 
Последнее редактирование модератором:
Рассказываю детально, скучно и с подробностями. Я рисую много графиков для учебников по геометрии и алгебре. При этом они выходят в полноцвете, Black + Cyan и в одну краску. Следовательно графики тоже им соответствуют. В цвете это будет одинаковый пунктир разными цветами. В основном чистыми (magenta, cyan, black), но может попасться и какой-то 100С50M. И на рисунке есть такие же линии, но без пунктира, которые злой дядя иллюстратор выделяет вместе с пунктирными. Моя задача для двух- и однокрасочной книг переделать пунктиры разных цветов в черные разные пунктиры (мелкий, крупный, с точкой etc). Поэтому мне удобно выделить последовательно каждый цветной пунктир и изменить в нём всё что нужно. Иногда бывает обратная задача (смотря на какую книгу изначально выбили бюджет) и тогда надо брать разные пунктиры, делать из них одинаковый, но разных цветов.
Вот. Вроде не совсем запутала себя и остальных.
 
Последнее редактирование модератором:
Лови с контролем цветов
Код:
function getkey(Obj)
{
   var colname=Obj.strokeColor;
   switch (colname.toString())
   {
   case "[CMYKColor]":
   {
    colname+=("("+Obj.strokeColor.cyan+","+Obj.strokeColor.magenta+","+Obj.strokeColor.yellow+","+Obj.strokeColor.black+")");
    break;
   }
   case "[RGBColor]":
   {
    colname+=("("+Obj.strokeColor.red+","+Obj.strokeColor.green+","+Obj.strokeColor.blue+")");
    break;
   }
   case "[GrayColor]":
   {
    colname+=("("+StrokeColor.gray+")");
    break;
   }

   }
   return colname+" "+Obj.strokeDashes+" "+Obj.strokeDashOffset+" "+Obj.strokeJoin+" "+Obj.strokeMiterLimit+" "+Obj.strokeOverprint+" "+Obj.strokeWidth;
}
if ( app.documents.length > 0)
{
if (app.activeDocument.selection.length>0)
{
  try {
    selObj = app.activeDocument.selection[0];
    var key=getkey(selObj);
//    alert(key);
    for (var i=0;i<app.activeDocument.pathItems.length;i++)
    {
      if (key==getkey(app.activeDocument.pathItems[i]))
      {
        app.activeDocument.pathItems[i].selected=true;
      }

    }
    redraw();
  } catch (err)
  {
   alert("Wrong object selected");
  }
} else
alert("No object selected");
} else
alert("No opened document");
Теперь смотри - там контролируются все доступные из скриптинга параметры обводки, а именно кроме цвета и типа пунктира:
strokeDashOffset,strokeJoin,strokeMiterLimit,strokeOverprint и толщина
Оно тебе все надо или часть убить к праотцам?
 
Последнее редактирование модератором:
  • Спасибо
Реакции: Linxy и dumbm1
'thank''thank''thank'
Спасибо огромное ещё раз!
Пока пусть будет как есть. Всё как надо. При выделение игнорирует закругленные или нет концы и углы. Это хорошо, мне подходит. Но на будущее интересно: этим можно управлять?
strokeDashOffset,strokeJoin,strokeMiterLimit,strokeOverprint и толщина
Мне нужно время, чтобы погуглить за что они отвечают. Оверпринт точно нужен.
 
Последнее редактирование модератором:
Но на будущее интересно: этим можно управлять?
В смысле как управлять - включать-выключать некоторые критерии сравнения? Ну по идее можно но придется интерфейс прикручивать - там панельку с чекбоксами или чтото в этом духе
Мне нужно время, чтобы погуглить за что они отвечают.
Я сам особо не вникал, вот что любимый вендор пишет:
upload_2016-6-23_16-32-19.png

А! strokeCap забыл добавить в критерий
 
Последнее редактирование модератором:
  • Спасибо
Реакции: Linxy
В смысле как управлять - включать-выключать некоторые критерии сравнения? Ну по идее можно но придется интерфейс прикручивать - там панельку с чекбоксами или чтото в этом духе
Не, я имела в виду в самом коде. Если на практике окажется, что что-то надо сравнивать, а что-то нет.
В обнимку с гуглом и временем я смогу разобрать что к чему в коде и хочу потом им командовать.
Потому как графики я рисую дома по вечерам, а днём я работаю тоже с детскими книжками, но для маленьких. Мне здесь пока не на чем проверить, а вот вечером я его испробую на реальной работе и тогда буду четко понимать, что мне нужно, а что нет.
 
А! strokeCap забыл добавить в критерий
А он мне как раз и не нужен. Вроде. Если я захочу его добавить мне нужно просто дописать:
Код:
+" "+Obj.strokeCap
в строчку
Код:
 return colname+" "+Obj.strokeDashes+" "+Obj.strokeDashOffset+" "+Obj.strokeJoin+" "+Obj.strokeMiterLimit+" "+Obj.strokeOverprint+" "+Obj.strokeWidth;
?
 
Не, я имела в виду в самом коде. Если на практике окажется, что что-то надо сравнивать, а что-то нет.
В обнимку с гуглом и временем я смогу разобрать что к чему в коде и хочу потом им командовать.
Потому как графики я рисую дома по вечерам, а днём я работаю тоже с детскими книжками, но для маленьких. Мне здесь пока не на чем проверить, а вот вечером я его испробую на реальной работе и тогда буду четко понимать, что мне нужно, а что нет.
Тогда более доходчиво ;)
Код:
function getkey(Obj)
{
   var colname=Obj.strokeColor;
   switch (colname.toString())
   {
   case "[CMYKColor]":
   {
    colname+=("("+Obj.strokeColor.cyan+","+Obj.strokeColor.magenta+","+Obj.strokeColor.yellow+","+Obj.strokeColor.black+")");
    break;
   }
   case "[RGBColor]":
   {
    colname+=("("+Obj.strokeColor.red+","+Obj.strokeColor.green+","+Obj.strokeColor.blue+")");
    break;
   }
   case "[GrayColor]":
   {
    colname+=("("+StrokeColor.gray+")");
    break;
   }

   }
   return  ""+
// Убрать параметр из критерия сравнения можно поставив // в начале одной из следующих строк
       colname+" "+                 // Цвет
       Obj.strokeCap+" "+           // stroke capping
       Obj.strokeDashes+" "+        // stroke dash
       Obj.strokeDashOffset+" "+    // stroke dash offset
       Obj.strokeJoin+" "+          // stroke dash join
       Obj.strokeMiterLimit+" "+    // stroke miter limit
       Obj.strokeOverprint+" "+     // stroke overprint
       Obj.strokeWidth+             // толщина
       "";
}
if ( app.documents.length > 0)
{
if (app.activeDocument.selection.length>0)
{
  try {
    selObj = app.activeDocument.selection[0];
    var key=getkey(selObj);
//    alert(key);
    for (var i=0;i<app.activeDocument.pathItems.length;i++)
    {
      if (key==getkey(app.activeDocument.pathItems[i]))
      {
        app.activeDocument.pathItems[i].selected=true;
      }
 
    }
    redraw();
  } catch (err)
  {
   alert("Wrong object selected");
  }
} else
alert("No object selected");
} else
alert("No opened document");
 
  • Спасибо
Реакции: Linxy и dumbm1
Тогда более доходчиво ;)
О, вообще супер подход. Спасибо. 'thank''thank''thank'

Нашла один момент. Он ещё и наличие / отсутствие arrowheads игнорирует. Но я не вижу этого свойства в списке. И вроде как я не делаю стрелки пунктиром.
 
Но я не вижу этого свойства в списке.
Мда, и вправду, я в объектной модели упоминания arrowhead вообще ни под каким соусом не нашел. Ну скажи, разве не халявщики программировали? Ведь для сравнения, при всей тупизне корела, туда каждая мелочь скрупулезно добавлена! 'P:E'
 
@_MBK_, Миша, кстати, вчера поздно закончила работать и забыла написать, что скрипт отлично работает. Выделяет как надо. Видно пока каких-то сильно замороченных случаев мне не попалось.
Ещё раз огромное спасибо! 'thank'
 
;]]@--
 
Статус
Закрыто для дальнейших ответов.