[ID CC-CC2019] Выровнять фреймы по направляющим, возможно?

Slx1

Топикстартер
12 лет на форуме
Сообщения
772
Реакции
85
Господа, возможно ли реализовать через скриптинг, выравнивание фреймов по ближайшим направляющим ( в пределах определенного расстояния, конечно)
Нужно увеличивать фреймы, без изменения содержимого
Спасибо за любую помощь!
 

Вложения

  • 111.png
    111.png
    1.1 МБ · Просм.: 192

_MBK_

Пикирующий бомбардировщик
12 лет на форуме
Сообщения
30 600
Реакции
10 081
Нужно увеличивать фреймы
А в чем проблема то - увеличивайте geometricBounds - содержимое просто перераспределится по фреймам не изменяясь
Или как именно вам надо?
 

afalbert

Участник
Сообщения
92
Реакции
77
Господа, возможно ли реализовать через скриптинг, выравнивание фреймов по ближайшим направляющим
Наверно возможно, но мне кажется проще и правильней использовать стили объектов. Там можно задать размер и положение относительно полей
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
772
Реакции
85
Дело в том что фрэймы могут быть разного размера
Основная задача выровнять их по направляющим, поставить ровненько,
и потом если надо дорисовать недостающее (но это ручками в фотошопе)
Не очень представляю как это можно сделать через стили...(
 

afalbert

Участник
Сообщения
92
Реакции
77
ну да, если они все разные, то надо скрипт
 

afalbert

Участник
Сообщения
92
Реакции
77
Добрый день, вы нашли скрипт? Если нет, могу поделиться своей поделкой. у меня есть скрипт который притягивает выделенные объекты к ближайшим гайдам. только у меня сс2018
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
772
Реакции
85
Добрый день, вы нашли скрипт? Если нет, могу поделиться своей поделкой. у меня есть скрипт который притягивает выделенные объекты к ближайшим гайдам. только у меня сс2018

Здравствуйте!
Увы, ничего подходящего пока не попадалось
С удовольствием попробовал бы ваше решение
 

afalbert

Участник
Сообщения
92
Реакции
77
попробуйте:
 
  • Спасибо
Реакции: Slx1

Килгор Траут

Участник
Сообщения
39
Реакции
2
попробуйте:
Большое спасибо за скрипт! Еще бы найти то же самое для baseline!
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
772
Реакции
85
Есть скрипт с привязкой к Документ Грид
подойдет?
 

Slx1

Топикстартер
12 лет на форуме
Сообщения
772
Реакции
85
JavaScript:
 with (app) {
 try {
         for (i = 0; i < selection.length; i++) {
                 newBounds = selection[i].geometricBounds;
                 gridStepH = activeDocument.gridPreferences.horizontalGridlineDivision / activeDocument.gridPreferences.horizontalGridSubdivision;
                 gridStepV = activeDocument.gridPreferences.verticalGridlineDivision / activeDocument.gridPreferences.verticalGridSubdivision;
                 
                 delta0 = mod(newBounds[0], gridStepV);
                 delta2 = mod(newBounds[2], gridStepV);
                 delta1 = mod(newBounds[1], gridStepH);
                 delta3 = mod(newBounds[3], gridStepH);
 
                 newBounds[0]  = newBounds[0] - delta0;
                 newBounds[2]  = newBounds[2] - delta2;
                 if (newBounds[2] == newBounds[0]) {
                         if (delta0 * delta0 < delta2 * delta2) {
                                 newBounds[2]  = newBounds[2] + gridStepV;
                         } else {
                                 newBounds[0]  = newBounds[0]  - gridStepV;
                         }
                 }
         
                 newBounds[1]  = newBounds[1] - delta1;
                 newBounds[3]  = newBounds[3] - delta3;
                 if (newBounds[3] == newBounds[1]) {
                         if (delta1 * delta1 < delta3 * delta3) {
                                 newBounds[3]  = newBounds[3] + gridStepH;
                         } else {
                                 newBounds[1]  = newBounds[1]  - gridStepH;
                         }
                 }
         
                 selection[i].geometricBounds = newBounds;
         }
 } catch(e) {}
}
 
function mod(division, divider) {
 while (division > 0) {
         division = division - divider;
 }
 if (division > -divider / 2)
         return division
 else
         return division + divider;
}
 
  • Спасибо
Реакции: Килгор Траут

Килгор Траут

Участник
Сообщения
39
Реакции
2
JavaScript:
 with (app) {
try {
         for (i = 0; i < selection.length; i++) {
                 newBounds = selection[i].geometricBounds;
                 gridStepH = activeDocument.gridPreferences.horizontalGridlineDivision / activeDocument.gridPreferences.horizontalGridSubdivision;
                 gridStepV = activeDocument.gridPreferences.verticalGridlineDivision / activeDocument.gridPreferences.verticalGridSubdivision;
                
                 delta0 = mod(newBounds[0], gridStepV);
                 delta2 = mod(newBounds[2], gridStepV);
                 delta1 = mod(newBounds[1], gridStepH);
                 delta3 = mod(newBounds[3], gridStepH);

                 newBounds[0]  = newBounds[0] - delta0;
                 newBounds[2]  = newBounds[2] - delta2;
                 if (newBounds[2] == newBounds[0]) {
                         if (delta0 * delta0 < delta2 * delta2) {
                                 newBounds[2]  = newBounds[2] + gridStepV;
                         } else {
                                 newBounds[0]  = newBounds[0]  - gridStepV;
                         }
                 }
        
                 newBounds[1]  = newBounds[1] - delta1;
                 newBounds[3]  = newBounds[3] - delta3;
                 if (newBounds[3] == newBounds[1]) {
                         if (delta1 * delta1 < delta3 * delta3) {
                                 newBounds[3]  = newBounds[3] + gridStepH;
                         } else {
                                 newBounds[1]  = newBounds[1]  - gridStepH;
                         }
                 }
        
                 selection[i].geometricBounds = newBounds;
         }
} catch(e) {}
}

function mod(division, divider) {
while (division > 0) {
         division = division - divider;
}
if (division > -divider / 2)
         return division
else
         return division + divider;
}
Огромное спасибо! То, что надо!