Поправить скрипт

  • Автор темы Автор темы Slx1
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Slx1

Топикстартер
15 лет на форуме
Сообщения
957
Реакции
108
Коллеги, нельзя ли поправить замечательный скрипт SetCropBoxToSelection.jsx, чтобы размеры брались только OutLine (без учета обводки)

Заране Большне спасибо!

var doc = app.activeDocument;
var obj = doc.selection;

var bnd = new Array();
if (documents.length > 0){
if (obj.length > 0) {
bnd = getBounds(obj);
W = bnd[2] - bnd[0];
H = bnd[1] - bnd[3];
X = bnd[0];
Y = bnd[1];
}
else {
doc.rulerOrigin = Array(0, 0);
bnd[0] = 0;
bnd[2] = doc.width;
bnd[1] = doc.height;
bnd[3] = 0;
}
doc.cropBox = bnd;
doc.cropStyle = CropOptions.Standard;
}

function getBounds(obj) {
var selObj1 = new Array();
var selObj2 = new Array();
var vgb1 = new Array();
var vgb2 = new Array();
var n = obj.length;
if (n>0){
if( (obj[0].typename == 'GroupItem') && obj[0].clipped && (obj[0].pageItems.length > 1) ){
clipObj = obj[0].pathItems[0].geometricBounds;
vgb1 = clipObj;
}
else {
selObj1 = obj[0];
vgb1 = selObj1.visibleBounds;
}
if (n > 1) {
for (i=1; i<n; i++) {
selObj2 = obj;
if( (obj.typename == 'GroupItem') && obj.clipped && (obj.pageItems.length > 1) ) {
vgb2 = obj.pathItems[0].geometricBounds;
}
else {
vgb2 = selObj2.visibleBounds;
}
if( vgb1[0] > vgb2[0] ) vgb1[0] = vgb2[0];
if( vgb1[1] < vgb2[1] ) vgb1[1] = vgb2[1];
if( vgb1[2] < vgb2[2] ) vgb1[2] = vgb2[2];
if( vgb1[3] > vgb2[3] ) vgb1[3] = vgb2[3];
}
}
}
return vgb1;
}
 
Ответ: Поправить скрипт

А если бы еще можно округлять размеры до целых чисел то совсем был бы СУПЕР!!
 
Ответ: Поправить скрипт

Вот эти строки:
Код:
vgb1 = selObj1.visibleBounds;
vgb2 = selObj2.visibleBounds;

замените этими:
Код:
vgb1 = selObj1.geometricBounds;
vgb2 = selObj2.geometricBounds;

Так?


Не по теме:
ЗЫ. Спать, спать, спать...
 
Ответ: Поправить скрипт

Супер!!!! ОГРОМНОЕ СПАСОБО!

А чтобы округлялось до целого числа сложно сделать?
 
Ответ: Поправить скрипт

не очень понимаю, что нужно округлять до целого числа? У меня в люстре все целое см. видео в аттаче
 

Вложения

Ответ: Поправить скрипт

Все так -- но если изначальный размер не "круглый" :))
 
Ответ: Поправить скрипт

А в какую сторону Вам нужно округлять? Например "2.5" - это "=3" или "=2"? В зависимости от этого использовать либо Math.round либо Math.floor...
Например:
bnd[2] = Math.floor(doc.width);
bnd[1] = Math.floor(doc.height);

Не по теме:
ну и т.д... извините... под пивом я...

ЗЫ. А чем мешает "не круглый" размер?
 
Ответ: Поправить скрипт

Метод математического округления 2,5 - это 3

Исходники приходят со всех концов вселенной (CADы, Корелы и т.д.) а в верстку лучше совать ровные размеры :)

Поправил строки -- что-то у меня ничего не получается ?
 
Ответ: Поправить скрипт

Как не получается, не округляется, или вообще не идет?
Возможно проблема вот в чем: doc.width может быть не числом, а строкой (например ‘200.34 mm’). Знак ‘+’ превращает строку в число. Попробуйте так: Math.round(+doc.width).
 
Ответ: Поправить скрипт

См. аттач. Естественно кропы теперь неточны, ибо они округляются.
 

Вложения

  • lsd.rar
    lsd.rar
    561 байт · Просм.: 406
Ответ: Поправить скрипт

Korino сказал(а):
Как не получается, не округляется, или вообще не идет?
Возможно проблема вот в чем: doc.width может быть не числом, а строкой (например ‘200.34 mm’). Знак ‘+’ превращает строку в число. Попробуйте так: Math.round(+doc.width).


Поправил -- ничего не происходит :((


ЗЫ. Да! Ill CS4 ?
 
Ответ: Поправить скрипт

qsedftghk сказал(а):
См. аттач. Естественно кропы теперь неточны, ибо они округляются.

Супер! Примерно то что надо, только можно, чтобы сначала размеры выделенного "округлялись", а потом сроп (как я сейчас делаю руками)

А то, действительно, сропы не совпадают :((

Заранее спасибо!
 
Ответ: Поправить скрипт

Если сначала округлять выделенное, то кроп тогда и округлять не нужно будет. И это надо посидеть подумать, а мне сейчас не до этого. И положительно ли скажется такое "округление" на растр, который будет в выделенном?
Не покажете ли скриншот, того, что вы делаете, примерно в шагах? Просто мне не понятно для чего все эти заморочки, наверняка всё делается проще...
 
Ответ: Поправить скрипт

Так подойдёт?
 

Вложения

  • lsd2.rar
    lsd2.rar
    557 байт · Просм.: 419
Ответ: Поправить скрипт

Офигенно! Большое спасибо!

То что надо!

==================================
Moderatorial. Прошу не применять здесь
подобную терминологию. Суточный бан.
ch_alex
==================================
 
Статус
Закрыто для дальнейших ответов.