[ID CC-CC2021] Удалить все прямоугольники с определенной высотой

khh1

Участник
Топикстартер
Сообщения
21
Реакции
1
Доброго времени суток! В документе очень много прямоугольников с разными цветами (содержимое=не назначено). Мне нужно удалить именно те прямоугольники, высота которых 2,8 мм. Это можно сделать скриптом?
 

George

I wish I was a monster you think I am
15 лет на форуме
Сообщения
17 323
Реакции
7 870
Весна?
 

Oleg Butrin

20 лет на форуме
Сообщения
1 990
Реакции
1 216
JavaScript:
#target indesign

function getSize (item) {
    if (item.hasOwnProperty('geometricBounds')) { // geometricBounds or visibleBounds
        var gb = item.geometricBounds;
        var h = gb[2] - gb[0];
        var w = gb[3] - gb[1];
        return {height: h, width: w};
    } else {
        return null;
    }
}

function main () {
    if (!app.documents.length) {
        return false;
    }
    var doc = app.activeDocument;
    var sizeH = 2.8 // set height value
    doc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
    doc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
    var rectangles = doc.rectangles.everyItem().getElements();
    var rem = [];
    for (var i = 0; i < rectangles.length; i++) {
        var size = getSize(rectangles[i]);
        if (size && Math.abs(size.height - sizeH) < 0.001) { // 0.001 precision
            rem.push(rectangles[i]);
        }
    }
    rem.reverse();
    for (var i = 0; i < rem.length; i++) {
        rem[i].remove();
    }
}

main();
 
  • Спасибо
Реакции: afalbert, LeonidB и khh1

khh1

Участник
Топикстартер
Сообщения
21
Реакции
1
JavaScript:
#target indesign

function getSize (item) {
    if (item.hasOwnProperty('geometricBounds')) { // geometricBounds or visibleBounds
        var gb = item.geometricBounds;
        var h = gb[2] - gb[0];
        var w = gb[3] - gb[1];
        return {height: h, width: w};
    } else {
        return null;
    }
}

function main () {
    if (!app.documents.length) {
        return false;
    }
    var doc = app.activeDocument;
    var sizeH = 2.8 // set height value
    doc.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
    doc.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
    var rectangles = doc.rectangles.everyItem().getElements();
    var rem = [];
    for (var i = 0; i < rectangles.length; i++) {
        var size = getSize(rectangles[i]);
        if (size && Math.abs(size.height - sizeH) < 0.001) { // 0.001 precision
            rem.push(rectangles[i]);
        }
    }
    rem.reverse();
    for (var i = 0; i < rem.length; i++) {
        rem[i].remove();
    }
}

main();
Спасибо все работает. Только оказывается некоторые из этих прямоугольников находятся в группе с другими объектами. Их скрипт не удалил, можно их тоже удалить?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 228
Реакции
10 851
Да