Помогите со скриптом

Статус
Закрыто для дальнейших ответов.

saiks

Участник
Топикстартер
Сообщения
24
Реакции
0
вот тут наткнулся на интересное решение
http://forum.rudtp.ru/threads/kak-tekstu-prisvoit-atributy.46808/#post-534469

создается текст и ему присваиваться атрибут.

Меня интересует:
1. можно ли не создавать текст а только помечать его и присваивать атрибуты.
2. можно ли присваивать атрибуты не только тексту но и объектам с помощью одного скрипта.
3. можно ли присвоить тексту/объекту нужный цвет(spot) из имеющегося в палитре .

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

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
@saiks, а можно ещё немного поконкретнее что и как Вам надо и примеры документов до и после преобразований
 

saiks

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

saiks

Участник
Топикстартер
Сообщения
24
Реакции
0
@saiks, а можно ещё немного поконкретнее что и как Вам надо и примеры документов до и после преобразований

я уже указал ссылку на скрипт
он делает почти все что мне нужно
то проблема в том что назначает атрибуты
в новь созданном тексте
Код:
podpis = app.activeDocument.textFrames.add();
podpis.contents = "пример текста";
а нужно чтобы при открытом документе я бы помечал нужные участки текст и объекты смог бы назначит нужные атрибуты и назначит spot color который уже имеется в палитре.
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
Похоже? Предварительно надо что-нибудь выделить, но не в текстовом режиме.
PHP:
(function () {
  var w = new Window ( 'dialog', 'Select a spot color' );

  var spotListGr = w.add ( 'group' );
  var spotList = spotListGr.add ( "listbox", undefined, undefined, { multiselect: false } );
  for ( var i = 0; i < getSpots ().length; i++ ) {
    spotList.add ( "item", getSpots ()[ i ] );
  }

  var buttons = w.add ( 'group' );
  var ok = buttons.add ( 'button', undefined, 'Ok', { name: 'ok' } );
  var cansel = buttons.add ( 'button', undefined, 'Cancel', { name: 'cancel' } );

  ok.onClick = function () {
    setSpotColor ( spotList.selection.text.slice ( 6, -1 ) );
    w.close ();
  }

  w.show ();

  function setSpotColor ( spotColorName ) {
    var elemArr = selection;
    var spotItem = activeDocument.spots.getByName ( spotColorName );
    var spotCol = spotItem.color;

    for ( var j = 0; j < elemArr.length; j++ ) {
      try {
        switch ( elemArr[ j ].typename ) {
          case 'PathItem':
            elemArr[ j ].fillColor = spotCol;
            break;
          case 'CompoundPathItem':
            elemArr[ j ].pathItems[ 0 ].fillColor = spotCol;
            break;
          case 'TextFrame':
            var frameChars = elemArr[ j ].textRange;
            frameChars.characterAttributes.fillColor = spotCol;
            break;
          default:
            break;
        }
      } catch ( e ) {
      }
    }
  }

  function getSpots () {
    var sp = [];
    for ( var i = 0; i < activeDocument.spots.length; i++ ) {
      sp.push ( activeDocument.spots[ i ] );
    }
    return sp;
  }
}) ();
 
Последнее редактирование:

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
немного поправил (в предыдущем примере неправильно цвет назначался)
PHP:
(function () {
  var w = new Window ( 'dialog', 'Select a spot color' );

  var spotListGr = w.add ( 'group' );
  var spotList = spotListGr.add ( "listbox", undefined, undefined, { multiselect: false } );

  for ( var i = 0; i < getSpots ().length; i++ ) {
    spotList.add ( "item", getSpots ()[ i ] );
  }

  var buttons = w.add ( 'group' );
  var ok = buttons.add ( 'button', undefined, 'Ok', { name: 'ok' } );
  var cansel = buttons.add ( 'button', undefined, 'Cancel', { name: 'cancel' } );

  ok.onClick = function () {
    setSpotColor ( spotList.selection.text.slice ( 6, -1 ) );
    w.close ();
  }

  w.show ();

  function setSpotColor ( spotColorName ) {
    var elemArr = selection;
    var spotItem = activeDocument.spots.getByName ( spotColorName );
    var spotCol = spotItem.color;

    var newSpotColor = new SpotColor();
    newSpotColor.spot = spotItem;

    for ( var j = 0; j < elemArr.length; j++ ) {
      try {
        switch ( elemArr[ j ].typename ) {
          case 'PathItem':
            elemArr[ j ].fillColor = newSpotColor;
            break;
          case 'CompoundPathItem':
            elemArr[ j ].pathItems[ 0 ].fillColor = newSpotColor;
            break;
          case 'TextFrame':
            var frameChars = elemArr[ j ].textRange;
            frameChars.characterAttributes.fillColor = newSpotColor;
            break;
          default:
            break;
        }
      } catch ( e ) {
      }
    }
  }
  function getSpots () {
    var sp = [];
    for ( var i = 0; i < activeDocument.spots.length; i++ ) {
      sp.push ( activeDocument.spots[ i ] );
    }
    return sp;
  }
}) ();
 
  • Спасибо
Реакции: saiks

saiks

Участник
Топикстартер
Сообщения
24
Реакции
0
Спасибо большое.
Буду пробовать.

Спасибо еще раз !!!1 :bayan:
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
там демонстрируется решение только части задачи. если мы на верном пути, то можно дописать и остальное.
 

saiks

Участник
Топикстартер
Сообщения
24
Реакции
0
Все работает.
Просто супер.
Дальше проковыряю уже сам. Теперь понятно что и как надо делать.

Спасибо еще раз!
 
Статус
Закрыто для дальнейших ответов.