[AI CC2020] аналог Swap Places для AI

Slx1

Топикстартер
12 лет на форуме
Сообщения
667
Оценка реакций
58
Господа, а не попадался кому аналог ID скрипта Swap Places (Просто меняются местами два фрейма относительно координат, соответствующих transform reference point.)?
Именно просто смена мест, без искажений и трансформаций объектов
Спасибо за любую помощь
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
27 827
Оценка реакций
9 230
Это пишется в две строки
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
27 827
Оценка реакций
9 230
Точнее в три
JavaScript:
var tmp=app.activeDocument.selection[0].position;
app.activeDocument.selection[0].position=app.activeDocument.selection[1].position;
app.activeDocument.selection[1].position=tmp;
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
667
Оценка реакций
58
Точнее в три
JavaScript:
var tmp=app.activeDocument.selection[0].position;
app.activeDocument.selection[0].position=app.activeDocument.selection[1].position;
app.activeDocument.selection[1].position=tmp;
круто! работает!
только на масках глючит
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
27 827
Оценка реакций
9 230

Skvoznyak

12 лет на форуме
Сообщения
4 472
Оценка реакций
1 797
Для начала вопрос что выделяется - маска или вся группа?
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
667
Оценка реакций
58
Ну это можно было предвидеть - наверное, сама маска передвигается, а содержимое остается на месте?
Вроде все передвигается, только координаты берутся по маске
 

Вложения

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
27 827
Оценка реакций
9 230
Вроде все передвигается, только координаты берутся по маске
О! Это просто замечательно!
Но тогда в три строки не получится, придется реальные размеры маскированной части считать, а это довольно замороченно
 

Skvoznyak

12 лет на форуме
Сообщения
4 472
Оценка реакций
1 797
Их не посчитать. Надо брать от clipping path
 

Skvoznyak

12 лет на форуме
Сообщения
4 472
Оценка реакций
1 797
у меня такая функция для определения размеров
Код:
function getBounds(obj)
{
        if(obj.typename!="GroupItem") return obj.geometricBounds;
      
       if(obj.clipped)
        for(var i=0;i<obj.pageItems.length;i++)
        {
            if(obj.pageItems[i].clipping) return obj.pageItems[i].geometricBounds;
        }
    
        var result = getBounds(obj.pageItems[0]);
         for(var i=1;i<obj.pageItems.length;i++)
        {
            var currBounds = getBounds(obj.pageItems[i]);
            result[0] = Math.min(result[0],currBounds[0]);
            result[2] = Math.max(result[2],currBounds[2]);
            result[1] = Math.max(result[1],currBounds[1]);
            result[3] = Math.min(result[3],currBounds[3]);
        }
        
       return result;
}
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
27 827
Оценка реакций
9 230
Ну у тебя по клиппингу считается, а на приведенном примере явно клиппинг больше, чем контент
 

Skvoznyak

12 лет на форуме
Сообщения
4 472
Оценка реакций
1 797
обычно наоборот ) кому нужна маска, которая ничего не маскирует
 

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
27 827
Оценка реакций
9 230
Ну на примере она частично маскирует
А вообще говоря, топикстартер не уточнял что именно ему надо и по какому месту объекта позицию считать?
 

Skvoznyak

12 лет на форуме
Сообщения
4 472
Оценка реакций
1 797
ну можно пересечение поискать у маски и всего контента, да
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
667
Оценка реакций
58
Коллеги, да я попробовал в примере маску которая частично скрывает объекты а частично "торчит", такое часто попадается
в принципе если будет по маске считать координаты было бы очень круто!

то есть центром группы считаем центр маски
 
Последнее редактирование:

Slx1

Топикстартер
12 лет на форуме
Сообщения
667
Оценка реакций
58
во не могу точно понять, но центр сьезжает
 

Вложения

  • 790.8 КБ Просмотры: 80