[CS6] Как правильно масштабировать placedItem?

Тема в разделе «Скриптинг в Adobe Illustrator», создана пользователем _MBK_, 13 фев 2018.

  1. Чтото под вечер совсем мозг зарядился, помещаю в документ растровую картинку, пытаюсь подогнать под размер:
    Код:
        var itemToPlace = myLayer.placedItems.add();
    
               itemToPlace.file = myFile;
               itemToPlace.resize(scale,scale);
    
    Последний оператор нифига не работает. То есть, размеры itemToPlace (ecли их в скрипте посмотреть) меняются на нужные, но сам растровый объект не меняется, как ни крути. Что за странная индусская багофича, как правильно делать вроде ж раньше работало?
     
  2. Рабочий кусок кода дай.
    Код:
    var itemToPlace = app.activeDocument.placedItems[0];
    itemToPlace.resize(200,200);
    Вот так работает.
     
    • Одобряю Одобряю x 1
  3. Гм, а есть разница? Ладно, завтра попробую.'hmmm'
     
  4. Код:
    var itemToPlace = app.activeDocument.placedItems.add();
    itemToPlace.file = File('C:/Temp/test.png');
    itemToPlace.resize(500,500);
    Вот так тоже работает.
    upload_2018-2-14_2-51-4.png

    Сверху картинка масштабированная, внизу оригинал.
     
  5. Гм мистика какая то, разницу вижу только в том, что у меня не к активному документу а к слою импортируется. А попробуй на слой?
     
  6. upload_2018-2-14_2-58-25.png

    Код:
    var itemToPlace = app.activeDocument.activeLayer.placedItems.add();
    itemToPlace.file = File('C:/Temp/test.png');
    itemToPlace.resize(500,500);
     
  7. Это что значит работает или нет?
     
  8. Это значит работает.
     
  9. Тогда вообще ни хрена не понимаю. А на уменьшение, 10,10?'otbline''hz'
     
  10. upload_2018-2-14_3-14-34.png
    Внизу масштабированный.
     
    • Одобряю Одобряю x 1
  11. Мда, значит надо ложиться спать, видимо, сегодня просто аномальный день 'otbline'
     
  12. в любой непонятной ситуации добавь app.redraw();
    :)
     
    • Одобряю Одобряю x 2
  13. Чуть не забыл, надо ж отписаться, как решились все заботы. Разгадка была столь же банальная, сколь и контринтуитивная. По какой то индуистской логике, внедрение импортированного обьекта через embed() превращает его в бомбу замедленного действия. Дальнейшие действия с ним непредсказуемы - может раз сработать, в другом контексте нет, внезапно могут выползти какие то косяки, совершенно не связанные с этим обьектом и прочие неведомые ёршиковые хранилища. Поэтому, во избежание подобных коллизий, все операции embed следует проводить в самом конце централизованно. Как то так.
     
    • Одобряю Одобряю x 3

Поделиться этой страницей