- Сообщения
- 245
- Реакции
- 10
Думала что да. Но на деле нет. Отдельный скрипт и до этого шустро все делал, а "большой" все равно раньше сильно тормозил, а сейчас виснет...А это помогает???
Думала что да. Но на деле нет. Отдельный скрипт и до этого шустро все делал, а "большой" все равно раньше сильно тормозил, а сейчас виснет...А это помогает???
Похоже, на вставленном куске, потому что без него все делает быстро.А можно поподробнее про действие на котором виснет
Всего два. Мне хотя бы такой частный случай разобрать...А сколько абзацев в вашем фрейме? И почему приложенный кусок кода только два первых проверяет?
Все, конечно, хорошо, но на разнодлинных абзацах он все равно неправильно считает...
Покажите, что у Вас на данный момент получилось. Весь код.
function main(){
var sel = app.activeDocument.selection[0];
if (app.activeDocument.selection[0].constructor.name == "TextFrame"){
//alert(app.activeDocument.selection[0].constructor.name)
var Frame = sel;
} else {
if (app.activeDocument.selection[0].constructor.name == "Character"){
//alert(app.activeDocument.selection[0].textFrames[0].constructor.name);
var Frame = app.activeDocument.selection[0].textFrames[0];
} else {
var Frame = sel.parentTextFrames[0];
}
}
//
var GB = Frame.geometricBounds;
var HOff = Frame.texts[0].paragraphs[0].characters[-1].endHorizontalOffset;
HOff = HOff.toFixed(2); GB[3] = GB[3].toFixed(2);
if ( Frame.texts[0].paragraphs[1].characters[-1].endHorizontalOffset < HOff ){
HOff = Frame.texts[0].paragraphs[1].endHorizontalOffset; }
Frame.geometricBounds = [GB[0],GB[1], GB[2], (2*HOff-GB[3])+.05 ];
Frame.fit(FitOptions.FRAME_TO_CONTENT);
//
} //main
app.doScript(main,undefined,undefined,UndoModes.ENTIRE_SCRIPT);
просто у меня два маленьких абзаца. частный случай, но до общего я сама не доросла...я думаю он на чем-то другом умирает, например на бесконечном цикле или еще что. может у вас внешний со счетчиком i, а в нем еще один с i - как вариант. (сам так накалываюсь иногда)
а почему вы в принципе по абзацам считаете, а не по строкам?
Это, похоже, потому, что у Вас условие, сравнивающее длину абзацев, с ног на голову перевёрнуто). Если, конечно, я правильно представил положение короткого и длинного абзацев с выключкой по центру.на разнодлинных абзацах он все равно неправильно считает
а можно точное выравнивание таблицы щипать? У меня с этим кодом все, кажется, получилось...Это, похоже, потому, что у Вас условие, сравнивающее длину абзацев, с ног на голову перевёрнуто). Если, конечно, я правильно представил положение короткого и длинного абзацев с выключкой по центру.
function main(){
var sel = app.activeDocument.selection[0];
if (app.activeDocument.selection[0].constructor.name == "TextFrame"){
//alert(app.activeDocument.selection[0].constructor.name)
var Frame = sel;
} else {
if (app.activeDocument.selection[0].constructor.name == "Character"){
// alert(app.activeDocument.selection[0].textFrames[0].constructor.name);
var Frame = app.activeDocument.selection[0].textFrames[0];
} else {
var Frame = sel.parentTextFrames[0];
}
}
//
var maxLen = 0;
var myLen = 0;
var myLen1 = 0;
var GB = Frame.geometricBounds;
myT = Frame.lines;
for (j=0;j<myT.length;j++){
var ab = myT[j].insertionPoints[0].horizontalOffset;
myLen = myT[j].insertionPoints[-1].horizontalOffset - ab;
try{myLen1 = myT[j].insertionPoints[-2].horizontalOffset - ab;
}catch(e2){myLen1 = 0;}
if (myLen1>myLen){myLen=myLen1;}
if (myLen>maxLen){maxLen = myLen;}
}//for j
Frame.geometricBounds = [GB[0],GB[1], GB[2], GB[1]+maxLen+.05 ];
Frame.fit(FitOptions.FRAME_TO_CONTENT);
//
} //main
app.doScript(main,undefined,undefined,UndoModes.ENTIRE_SCRIPT);
... точное выравнивание таблицы ...
Я уже склоняюсь к мнению, что участие geometric bounds в подсчете было здесь лишнее. Как чужая система координат.В своём жеж коде
Знак поменять с "меньше" на "больше".) С головы на ноги. Чтобы было НЕ так как сейчас:
Посмотреть вложение 132610
Добавила инструкцию для переполнений. Возможно в универсальном случае фрейм нужно увеличивать не на +1 а побольше.Сообразила, что Индиз при клике на маркер преодолевает overflow даже не вздрогнув, а скрипт сразу в крик...
Индиз что-то скрывает...
function main(){
var sel = app.activeDocument.selection[0];
if (app.activeDocument.selection[0].constructor.name == "TextFrame"){
var Frame = sel;
} else {
if (app.activeDocument.selection[0].constructor.name == "Character"){
var Frame = app.activeDocument.selection[0].textFrames[0];
} else {
var Frame = sel.parentTextFrames[0];
}
}
var GB = Frame.geometricBounds;
if (Frame.overflows) {
Frame.geometricBounds = [GB[0],GB[1], GB[2]+1, GB[3]+1 ];
}
//
var maxLen = 0;
var myLen = 0;
var myLen1 = 0;
myT = Frame.lines;
for (j=0;j<myT.length;j++){
var ab = myT[j].insertionPoints[0].horizontalOffset;
myLen = myT[j].insertionPoints[-1].horizontalOffset - ab;
try{myLen1 = myT[j].insertionPoints[-2].horizontalOffset - ab;
}catch(e2){myLen1 = 0;}
if (myLen1>myLen){myLen=myLen1;}
if (myLen>maxLen){maxLen = myLen;}
}//for j
Frame.geometricBounds = [GB[0],GB[1], GB[2], GB[1]+maxLen+.05 ];
Frame.fit(FitOptions.FRAME_TO_CONTENT);
//
//alert("All done... Maybe...", "Frame Fit");
} //main
app.doScript(main,undefined,undefined,UndoModes.ENTIRE_SCRIPT);
А как? Я бы с удовольствием отключила. Мультики в 1000й раз будут раздражать...Можно прорисовку отключить, например