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

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

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 ();
}


заранее спасибо!
 
Не знаю как фото-пример загрузить. На радикал загрузил, а форум не принимает URL.
 
Попробовать вместо
Код:
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);
 
Попробовать вместо
Код:
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
 
А если наоборот?
Код:
a[j].resize(w_old/a[j] .width*100,h_old/a[j] .height*100);
 
Статус
Закрыто для дальнейших ответов.