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

  • Автор темы Автор темы Slx1
  • Дата начала Дата начала

Slx1

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

Вложения

  • 111.png
    111.png
    1.1 МБ · Просм.: 334
Нужно увеличивать фреймы
А в чем проблема то - увеличивайте geometricBounds - содержимое просто перераспределится по фреймам не изменяясь
Или как именно вам надо?
 
Господа, возможно ли реализовать через скриптинг, выравнивание фреймов по ближайшим направляющим
Наверно возможно, но мне кажется проще и правильней использовать стили объектов. Там можно задать размер и положение относительно полей
 
Дело в том что фрэймы могут быть разного размера
Основная задача выровнять их по направляющим, поставить ровненько,
и потом если надо дорисовать недостающее (но это ручками в фотошопе)
Не очень представляю как это можно сделать через стили...(
 
ну да, если они все разные, то надо скрипт
 
Добрый день, вы нашли скрипт? Если нет, могу поделиться своей поделкой. у меня есть скрипт который притягивает выделенные объекты к ближайшим гайдам. только у меня сс2018
 
Добрый день, вы нашли скрипт? Если нет, могу поделиться своей поделкой. у меня есть скрипт который притягивает выделенные объекты к ближайшим гайдам. только у меня сс2018

Здравствуйте!
Увы, ничего подходящего пока не попадалось
С удовольствием попробовал бы ваше решение
 
попробуйте:
 
  • Спасибо
Реакции: Slx1
попробуйте:
Большое спасибо за скрипт! Еще бы найти то же самое для baseline!
 
Есть скрипт с привязкой к Документ Грид
подойдет?
 
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;
}
 
  • Спасибо
Реакции: Килгор Траут
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;
}
Огромное спасибо! То, что надо!