[AI CS4-CS6] Помогите поддточить скрипт

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

EvilHIRURG

Участник
Топикстартер
Сообщения
44
Реакции
1
Здравствуйте!
У меня есть вот такой скрипт который меняет на каждой монтажной области случайным порядком символы. Но есть одно "НО". Он меняет символы но не учитывает размеры. Вернее он учитывает размеры символов при созданиикоторые находятся в панели "символы", а мне нужно что бы учитывались размеры которые уже на монтажной области отредактированы. Тоесть делалась замена вместе из учетом размера. Примеры приложу.

Сам скрипт

Код:
//@target illustrator
replaceSybols ();

function recoursive ( a, sym ) {
  for ( var j = 0; j < a.length; j++ ) {

    if ( a[ j ].typename == 'SymbolItem' ) {
      var sm=Math.round(Math.random()*activeDocument.symbols.length);
//alert("Random symbol "+sm);
a[ j ].symbol = activeDocument.symbols[sm];

    } else if ( a[ j ].typename == 'GroupItem' ) {
      recoursive ( a[ j ].pageItems, sym );
    }
  }
}

function replaceSybols () {
  var artbordsLen = activeDocument.artboards.length,
      symbolsLen  = activeDocument.symbols.length,
      actArtb     = 0,
      stop;

  activeDocument.artboards.setActiveArtboardIndex ( actArtb );
  artbordsLen >= symbolsLen ? stop = symbolsLen : stop = artbordsLen;
  executeMenuCommand ( 'deselectall' ); // compatible with CS6+

  for ( var i = 0; i < stop; i++ ) {
    activeDocument.selectObjectsOnActiveArtboard ();

    try { recoursive ( selection, activeDocument.symbols[ i + 1 ] );} catch ( e ) { }

    executeMenuCommand ( 'deselectall' ); // compatible with CS6+
    actArtb + 1 != stop ? actArtb += 1 : '';
    activeDocument.artboards.setActiveArtboardIndex ( actArtb );
  }
  redraw ();
}


заранее спасибо!
 

EvilHIRURG

Участник
Топикстартер
Сообщения
44
Реакции
1
Не знаю как фото-пример загрузить. На радикал загрузил, а форум не принимает URL.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
Попробовать вместо
Код:
a[ j ].symbol = activeDocument.symbols[sm];
поставить что то типа
Код:
var w_old=a[j] .width;
var h_old=a[j] .height;
a[ j ].symbol = activeDocument.symbols[sm];
a[j].resize(a[j] .width/w_old*100,a[j] .height/h_old*100);
 

Linxy

Девушка с битой
10 лет на форуме
Сообщения
2 277
Реакции
3 836

EvilHIRURG

Участник
Топикстартер
Сообщения
44
Реакции
1
Попробовать вместо
Код:
a[ j ].symbol = activeDocument.symbols[sm];
поставить что то типа
Код:
var w_old=a[j] .width;
var h_old=a[j] .height;
a[ j ].symbol = activeDocument.symbols[sm];
a[j].resize(a[j] .width/w_old*100,a[j] .height/h_old*100);


Не получается.

Вот так изначально
2016-07-13_14-39-53.png


Вот так со старой версией скрипта

2016-07-13_14-40-29.png


А вот так из Вашим исправлением

2016-07-22_18-59-37.png
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 235
Реакции
10 852
А если наоборот?
Код:
a[j].resize(w_old/a[j] .width*100,h_old/a[j] .height*100);
 
Статус
Закрыто для дальнейших ответов.