// CleanOrMove
app.doScript(main, undefined , undefined,UndoModes.fastEntireScript,"Run " + app.activeScript.name);
function main() {
var Doc = app.activeDocument;
myDialog = app.dialogs.add({ name: "Настройки:" });
with (myDialog.dialogColumns.add()) {
dialogRows.add().staticTexts.add({staticLabel: "Брать страницы:"});
oddBox = checkboxControls.add({staticLabel:"Четные", minWidth: 150, checkedState: true});
evnBox = checkboxControls.add({staticLabel:"Нечетные", minWidth: 150, checkedState: true});
dialogRows.add().staticTexts.add({staticLabel: "Игнорировать страницы:"});
var pagesBox = dialogRows.add().textEditboxes.add({editContents: "2,3", minWidth:220});
dialogRows.add().staticTexts.add({staticLabel: ""});
var RB = radiobuttonGroups.add();
with (RB) {
var cleanRB = radiobuttonControls.add({ staticLabel: "Удалить", checkedState: true });
var moveRB = radiobuttonControls.add({ staticLabel: "Сдвинуть на поля" });
}
dialogRows.add().staticTexts.add({staticLabel: ""});
removeLockedBox = checkboxControls.add({staticLabel:"Включая заблокированные объекты", minWidth: 150, checkedState: true});
}
var myResult = myDialog.show();
if (!myResult) { exit(); }
// Страницы-исключения:
var exceptPages = pagesBox.editContents;
exceptPages = exceptPages.replace(" ", "");
var exceptPages = exceptPages.split(",");
// Стили объектов-исключения
var objStyles = [];
for (p = 0, pLen = Doc.pages.length; p < pLen; p++) {
var myPage = Doc.pages[p];
if (checkExceptPages(myPage, exceptPages)) { continue }
// Размеры и координаты:
var pageBounds = myPage.bounds;
var margPref = myPage.marginPreferences;
var y1 = pageBounds[0];
var x1 = pageBounds[1];
var y2 = pageBounds[2];
var x2 = pageBounds[3];
var pageWidth = (x2-x1);
var pageHeight = (y2-y1);
var xOffset = ((x2 - x1) + 10);
// чет-нечет
pN = +myPage.name;
if (pN % 2 == 0 ) {
if (!oddBox.checkedState) { continue; }
var areaBounds = [y1 + margPref.top, x1 + margPref.right, y2 - margPref.bottom, x2 - margPref.left];
xOffset = -xOffset;
} else {
if (!evnBox.checkedState) { continue; }
var areaBounds = [y1 + margPref.top, x1 + margPref.left, y2 - margPref.bottom, x2 - margPref.right];
}
for (z = myPage.pageItems.length-1; z >= 0; z--) {
var item = myPage.pageItems[z];
// Исключения:
if (item.itemLayer.locked == true) { continue } // Заблокированные слои
if (item.itemLayer.visible == false) { continue } // Невидимые слои
if (item.locked == true) {
if (removeLockedBox.checkedState) {
item.locked = false;
} else {
continue;
}
}
if (checkObjStyles(item, objStyles)) { continue }
// Исключения по типу:
if (item.parent.constructor.name === "Group") { continue }
if (item.constructor.name === "Group") { continue }
// Исключения по коррдинатам:
bounds = item.geometricBounds;
if (!objectsAreCrossing(bounds, areaBounds)) { continue }
if (cleanRB.checkedState) {
item.remove();
} else {
item.move([bounds[1] + xOffset, bounds[0]]);
}
}
}
function GB (element, point) {
return element.geometricBounds[point];
}
function objectsAreCrossing(itemBounds, areaBounds) {
var iX = itemBounds[1] + ((itemBounds[3] - itemBounds[1])/2);
var iY = itemBounds[0] + ((itemBounds[2] - itemBounds[0])/2);
var aLft = areaBounds[1];
var aRht = areaBounds[3];
var aTop = areaBounds[0];
var aBot = areaBounds[2];
if (iX > aLft && iX < aRht && iY > aTop && iY < aBot) {
return true;
}
return false;
}
function checkObjStyles(frame, styles) {
for (s = 0, sLen = styles.length; s < sLen; s++) {
if (frame.appliedObjectStyle.name === styles[s]) { return true; }
}
return false;
}
function checkExceptPages(myPage, exceptPages) {
for (e =0, eLen = exceptPages.length; e < eLen; e++) {
if (myPage.name === exceptPages[e].toString()) { return true; }
}
return false;
}
}