[ID CC-CC2022] сдвинуть объекты на всех страницах документа "оптом"

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

Jonatan

Топикстартер
12 лет на форуме
Сообщения
19
Реакции
0
Добрый день! И снова вопрос: в документе 500 однотипных полос, на каждой есть текстовый бокс, принадлежащий отдельному слою. Как сдвинуть все стекстовые боксы этого слоя на всех страницах разом на поля документа? Не по одному.
 
Несложным скриптом
 
Нашла скрипт adjust layer - двигает ВСЕ, а нужно чтобы двигал только содержимое одного слоя :(
 
Покажите скрипт поправим
 
Я не вижу скрипта, но вангую, что ему на блокировку накласть с большим прибором
 
@_MBK_, держи скрипт

Код:
//AdjustLayout.jsx
//An InDesign CS6 JavaScript
/* 
@@@BUILDINFO@@@ "AdjustLayout.jsx" 3.0.0 15 December 2009
*/
//Moves the content of even/odd pages by specified amounts; attempts to get
//objects back into the correct position after a master page margin change
//and/or page insertion.
//
//
//For more information on InDesign scripting, go to http://www.adobe.com/products/indesign/scripting/index.html
//Or visit the InDesign Scripting User to User forum at http://www.adobeforums.com.
//
main();
function main(){
    //Make certain that user interaction (display of dialogs, etc.) is turned on.
    app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
    if(app.documents.length != 0){
        if(app.activeDocument.pageItems.length != 0){
            myDisplayDialog();
        }
        else{
            alert("Document contains no page items.");
        }
    }
    else{
        alert("Please open a document and try again.");
    }
}
function myDisplayDialog(){
    var myLabelWidth = 70;
    var myDialog = app.dialogs.add({name:"Adjust Layout"});
    var myPageNames = myGetPageNames();
    with(myDialog.dialogColumns.add()){
        with(borderPanels.add()){
            with(dialogColumns.add()){
                with(dialogRows.add()){
                    with(dialogColumns.add()){
                        staticTexts.add({staticLabel:"Start Page:", minWidth:myLabelWidth});
                    }
                    with(dialogColumns.add()){
                        var myStartPageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:0});
                    }
                }
                with(dialogRows.add()){
                    with(dialogColumns.add()){
                        staticTexts.add({staticLabel:"End Page:", minWidth:myLabelWidth});
                    }
                    with(dialogColumns.add()){
                        var myEndPageDropdown = dropdowns.add({stringList:myPageNames, selectedIndex:myPageNames.length-1});
                    }
                }
            }
        }
        with(borderPanels.add()){
            with(dialogRows.add()){
                with(dialogColumns.add()){
                    staticTexts.add({staticLabel:"Even Pages", minWidth:myLabelWidth});
                    staticTexts.add({staticLabel:"Horizontal:", minWidth:myLabelWidth});
                    staticTexts.add({staticLabel:"Vertical:", minWidth:myLabelWidth});
                }
                with(dialogColumns.add()){
                    staticTexts.add({staticLabel:""});
                    var myEvenXField = measurementEditboxes.add({editValue:-12, editUnits:MeasurementUnits.points});
                    var myEvenYField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
                }
            }
        }
        with(borderPanels.add()){
            with(dialogRows.add()){
                with(dialogColumns.add()){
                    staticTexts.add({staticLabel:"Odd Pages", minWidth:myLabelWidth});
                    staticTexts.add({staticLabel:"Horizontal:", minWidth:myLabelWidth});
                    staticTexts.add({staticLabel:"Vertical:", minWidth:myLabelWidth});
                }
                with(dialogColumns.add()){
                    staticTexts.add({staticLabel:""});
                    var myOddXField = measurementEditboxes.add({editValue:12, editUnits:MeasurementUnits.points});
                    var myOddYField = measurementEditboxes.add({editValue:0, editUnits:MeasurementUnits.points});
                }
            }
        }
    }
    var myResult = myDialog.show();
    if(myResult == true){
        var myStartPageName = myPageNames[myStartPageDropdown.selectedIndex];
        var myEndPageName = myPageNames[myEndPageDropdown.selectedIndex];
        if(myCheckPageRange(myStartPageName, myEndPageName) == true){
            var myEvenX = myEvenXField.editValue;
            var myEvenY = myEvenYField.editValue;
            var myOddX = myOddXField.editValue;
            var myOddY = myOddYField.editValue;
            myDialog.destroy();
            myAdjustPages(myEvenX, myEvenY, myOddX, myOddY, myStartPageName, myEndPageName);
        }
        else{
            myDialog.destroy();
            alert("Invalid page range.");
        }
    }
    else{
        myDialog.destroy();
    }
}
function myAdjustPages(myEvenX, myEvenY, myOddX, myOddY, myStartPageName, myEndPageName){
    var myPage, myPageAdjust;
    // Set the transform content property to true so that content will move with frames.
    //myOldTransformContent = app.transformPreferences.transformContent;
    //app.transformPreferences.transformContent = true;
    var myOldXUnits = app.activeDocument.viewPreferences.horizontalMeasurementUnits;
    var myOldYUnits = app.activeDocument.viewPreferences.verticalMeasurementUnits;
    //Set the measurement units to points.
    app.activeDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
    app.activeDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;
    //Save the old page numbering
    var myOldPageNumbering = app.generalPreferences.pageNumbering;
    app.generalPreferences.pageNumbering = PageNumberingOptions.section;
    var myStartPage = app.activeDocument.pages.item(myStartPageName);
    var myEndPage = app.activeDocument.pages.item(myEndPageName);
    //Set page numbering to absolute
    app.generalPreferences.pageNumbering = PageNumberingOptions.absolute;
    //Does the document start with an even page?
    if(myCheckPageStart(app.activeDocument) == false){
        myPageAdjust = 1;
    }
    else{
        myPageAdjust = 0;
    }
    for(var myCounter = (myStartPage.documentOffset-1); myCounter < myEndPage.documentOffset; myCounter++){
        myPage = app.activeDocument.pages.item(myCounter);
        var myPageValue = myPage.documentOffset;
        myPageValue = myPageValue + myPageAdjust;
        if(myPageValue % 2 == 0){
            //Page is an even page.
            myAdjustPage(myPage, myEvenX, myEvenY);
        }
        else{
            //Page is an odd page.
            myAdjustPage(myPage, myOddX, myOddY);
        }
    }
    //Reset the transform content and measurement units to their original values.
    app.activeDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
    app.activeDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;
    //app.transformPreferences.transformContent = myOldTransformContent;
    app.generalPreferences.pageNumbering = myOldPageNumbering;
}
function myAdjustPage(myPage, myX, myY){
    var myPageItem;
    var myResetItemLock = false;
    var myResetLayerLock = false;
    for(var myCounter = 0; myCounter < myPage.pageItems.length; myCounter ++){
        myPageItem = myPage.pageItems.item(myCounter);
        if(myPageItem.locked == true){
            myPageItem.locked = false;
            myResetItemLock = true;
        }
        if(myPageItem.itemLayer.locked == true){
            myPageItem.itemLayer.locked = false;
            myResetLayerLock = true;
            
        }
        myPageItem.move(undefined, [myX, myY]);
        if(myResetItemLock == true){
            myPageItem.locked = true;
        }
        if(myResetLayerLock == true){
            myPageItem.itemLayer.locked = true;
        }
    }
}
function myGetPageNames(){
    var myPageNames = new Array;
    for(myCounter = 0; myCounter < app.activeDocument.pages.length; myCounter ++){
        myPageNames.push(app.activeDocument.pages.item(myCounter).name);
    }
    return myPageNames;
}
function myCheckPageStart(myDocument){
    var mySection = myDocument.sections.item(0);
    if(mySection.continueNumbering == true){
        //Starting page number is defined by other documents in the book
        return true;
    }
    if(mySection.pageNumberStart % 2 == 0){
        //Starting page number is an even page.
        return false;
    }
    else{
        //Starting page number is an odd page.
        return true;
    }
}
function myCheckPageRange(myStartPageName, myEndPageName){
    var myStartIndex = app.activeDocument.pages.item(myStartPageName).documentOffset;
    var myEndIndex = app.activeDocument.pages.item(myEndPageName).documentOffset;
    if(myStartIndex <= myEndIndex){
        return true;
    }
    else{
        return false;
    }
}
 
Пишу с пылесоса, поэтому самое простое что видится - убрать принудительную разблокировку, закомментировав строки myPageItem.locked=false и myPageItem.itemLayer=false
 
  • Спасибо
Реакции: suntory
Спасибо, супер! Удалось обмануть, убрав слой, который подвигать, в самый низ, а остальные заблокировав - и он сдвинул только то что нужно. Все равно сыкотно, проверяю потом. Понаблюдаю еще, хотя скрипт, который генерит файлы на печать и на просмотр, считывает индексы верно.
 
Удалось обмануть, убрав слой, который подвигать, в самый низ, а остальные заблокировав - и он сдвинул только то что нужно.
В смысле без правки скрипта? Странно.
Все равно сыкотно
Что мешает скрипт исправить?