[AI CC-CC2021] Как разгруппировать группу через скрипт

Андрей1977

Участник
Топикстартер
Сообщения
42
Реакции
1
Как применить Ungroup к группе объектов через скрипт? Заранее благодарю.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Самое простое - выделить через свойство selected и вызвать пункт меню ungroup
 
  • Спасибо
Реакции: Андрей1977

eugeny

15 лет на форуме
Сообщения
855
Реакции
210
Ну так навороченнее будет '%)' .
JavaScript:
    if(elements[i].typename=="GroupItem" || elements[i].typename=="Layer")ungroup(elements[i]);

function ungroup(obj)
{
    var elements = getChildAll(obj);
    if(elements.length<1){
        obj.remove();
        return;
    }else{
        for(var i=0;i<elements.length;i++)
        {
            try{
                if(elements[i].parent.typename!="Layer")elements[i].moveBefore(obj);
                if(elements[i].typename=="GroupItem")ungroup(elements[i]);
            }catch(e){

            }
        }
    }
}
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А где getChildAll ? ;)
 

VAN1985

Участник
Сообщения
20
Реакции
0
Добрый день! чтобы не создавать новой темы напишу сюда. Подскажите пожалуйста как разгрупировать все группы в активном документе, на активном слое на котором всё выделено? (активный документ, активный слой и выделение уже заданно).
Заранее большущее спасибо. (речь идет о скрипте)
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Скриптом сообщением выше
 

VAN1985

Участник
Сообщения
20
Реакции
0
Скриптом сообщением выше
моя проблема всё еще актуальна, при использовании скрипта сообщением выше получаю такой результат: "result:undefined" и при этом ничего не происходит... При использовании его вместе с кодом выше - "result:Error 2: elements is undefined.
Line: 1"... Я не понимаю как задать "elements" чтобы всё ожило.
Спасибо за ответы!!!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Вот эту строку
if(elements[i].typename=="GroupItem" || elements[i].typename=="Layer")ungroup(elements[i]);
замените на
JavaScript:
for (var i=app.activeDocument.groupItems.length-1;i>=0;i--)   
{
  ungroup(app.activeDocument.groupItems[i]);
 
}
 
  • Спасибо
Реакции: VAN1985

VAN1985

Участник
Сообщения
20
Реакции
0
Вот эту строку
if(elements[i].typename=="GroupItem" || elements[i].typename=="Layer")ungroup(elements[i]);
замените на
JavaScript:
for (var i=app.activeDocument.groupItems.length-1;i>=0;i--)  
{
  ungroup(app.activeDocument.groupItems[i]);

}
Круто!!! Спасибо!!! Всё заработало))))

JavaScript:
   for (var i=app.activeDocument.groupItems.length-1;i>=0;i--)   
{
  ungroup(app.activeDocument.groupItems[i]);
 
}

function ungroup(obj)
{
    var elements = getChildAll(obj);
    if(elements.length<1){
        obj.remove();
        return;
    }else{
        for(var i=0;i<elements.length;i++)
        {
            try{
                if(elements[i].parent.typename!="Layer")elements[i].moveBefore(obj);
                if(elements[i].typename=="GroupItem")ungroup(elements[i]);
            }catch(e){

            }
        }
    }
}
 function getChildAll(obj)
    {
        var childsArr = new Array();
        for(var i=0;i<obj.pageItems.length;i++)childsArr.push(obj.pageItems[i]);
        if(obj.layers){
            //  Get layers as well.
            for(var i=0;i<obj.layers.length;i++)childsArr.push(obj.layers[i]);
        }
        return childsArr;
    }

Еще раз спасибо!!!