Home » Скрипты

Подсчет площади рисунков в документе

8 Апрель 2010 10 Comments

Скрипт для подсчета площади рисунков

Обрабатываются фреймы с рисунками и привязанные к тексту иллюстрации.
Рисунки с одинаковыми именами учитываются один раз за исключением тех, что вставлены через буфер.
Эти объекты не появляются в программе LINKS и учитываются всякий раз при появлении их в вёрстке.
Пользователь должен удалить все неиспользуемые объекты с монтажного стола,
т.к. не задействовано определение, где размещен рисунок — на полосе или за её пределами.
Программа также не учитывает возможное наличие атрибута «Nonprinting» у некоторых фреймов или групп.

SpaceOfPictScript

download

Скачать скрипт SpaceOfPictures.jsx (zip)

Михаил Иванюшин

10 Comments »

  • Vlad Ossipov said:

    Интересно. Так и просится стать компонентом скрипта по подсчету авторских листов. Или такой уже есть?

  • iv-mi said:

    «Так и просится стать компонентом скрипта по подсчету авторских листов. Или такой уже есть?»
    Нет, Влад, пока нет. Сейчас в фоновом режиме делаю скрипт подсчета стихотворных строк, потом хорошо бы сделать упрощенный вариант подсчета знаков на выбранных пользователем страницах. Указание диапазона страниц позволит отделить авторский текст от выходных и пр. служебных данных. Знак – это удар по клавише, т.е. разделение на буквы/знаки и пробелы избыточно.
    Если есть охота – сделайте такой подсчет знаков. Буду рад освободившемуся времени, т.к. мыслей, что можно автоматизировать, гораздо больше, чем свободного времени на скриптинг. Только известите, что взялись за эту задачку.

    И мне кажется, на этом этапе надо остановиться.
    Имея число стихотворных строк, площадь рисунков, число знаков, редактор сам всё дальше подсчитает. Он ведь тоже должен поучаствовать в процессе… :)

  • Savim said:

    Михаил, огромное спасибо за этот скрипт.

    Число знаков я считал скриптом буквально в 1 строку:

    myDocument = app.activeDocument;
    mySelection = app.activeDocument.selection[0];
    alert(«Всего символов: » + mySelection.length);

    На большее моих мозгов не хватило :)

  • riki44 said:

    Спасибо за скрипт. Извините великодушно, но по моему хорошо было-бы добавить сколько цветных и сколько чёрно-белых и то после спуска полос или есть такое?

  • riki44 said:

    И если можно как-то объясните когда запускаю скрипт по замене набранных букв на английском на русский даёт вот токую картинку.

    А как картинку сюда прикрепить а?

  • iv-mi said:

    Вопрос подсчета числа знаков в верстке, возможно, решается одним из этих скриптов:
    http://adobeindesign.ru/2008/10/27/script-textcounter/
    http://adobescripts.info/statistics.html
    Надо попробовать.
    ***
    «хорошо было-бы добавить сколько цветных и сколько чёрно-белых и то после спуска полос или есть такое?»
    Нет, такого нет. Если условиться предварять название ч/б иллюстраций, например, буквой D, а цветных — буквой S (буквы выбраны, чтобы не было их русского аналога по внешнему виду), то можно и такую статистику собирать. Пока этого нет.

    «и то после спуска полос» – не ясно, что имеется в в виду.
    ***
    «И если можно как-то объясните когда запускаю скрипт по замене набранных букв на английском на русский даёт вот токую картинку»
    Тоже не понял, что имеется в виду. Пришлите на мой адрес (он на вкладке «Авторы сайта»), может тогда станет ясно.

  • riki44 said:

    ой я кажется Борису послал письмо. Сейчас и Вам перешлю письмо

  • eugenyus said:

    …потом хорошо бы сделать упрощенный вариант подсчета знаков на выбранных пользователем страницах…
    …Вопрос подсчета числа знаков в верстке, возможно, решается одним из этих скриптов: http://adobeindesign.ru/2008/10/27/script-textcounter/…

    Вот этот скрипт, как мне кажется, хорошая основа для таких задач. Только его еще дорабатывать и дорабатывать. От разных людей накопились следующие задачи по его доработке:
    1. Сделать так, чтобы учитывался только текст на страницах (текст на полях учитываться не должен)
    2. Текст с шаблонов должен быть посчитан столько раз, сколько этот шаблон используется, т.к. редакторы-корректоры читают этот текст каждый раз, на каждой странице.
    3. Упомянутый Вами «подсчет знаков на выбранных пользователем страницах» – тоже идея хорошая.

    Вот только времени, как всегда, не хватает. Может действительно, кто возьмется?:)

  • Onger said:

    Вот еще один скрипт от mvlad123

    //Рассчитываем площадь всех размещенных (видимых) графических элементов в квадратных сантиметрах
    //Inline-графика, расположенная в неразмещенном тексте, а также на скрытых слоях не учитывается

    var myCalcSquare = CalcSquare();

    alert(«Количество всех иллюстраций (формул)\nв видимых слоях = » + myCalcSquare[0] + «\n\nОбщая площадь всех видимых иллюстраций = » + myCalcSquare[1] + » кв. см»);

    //**************************************************************************************Блок рабочей формулы***************************************************************************************//

    function CalcSquare() {

    var myDocument = app.activeDocument;
    var mySquare = 0; //Начальная площадь иллюстраций = 0
    var myReturn = [0,0];
    //Устанавливаем единицы измерения – сантиметры
    with (myDocument.viewPreferences)
    {
    myOldXUnits = horizontalMeasurementUnits;
    myOldYUnits = verticalMeasurementUnits;
    horizontalMeasurementUnits = MeasurementUnits.CENTIMETERS;
    verticalMeasurementUnits = MeasurementUnits.CENTIMETERS;
    }

    var Len = 0; //Начальное количество иллюстраций = 0
    var myLayers = myDocument.layers;
    for (var j = 0; j < myLayers.length; j++) {

    if (myLayers[j].visible) {

    var myRectangles = myLayers[j].rectangles;
    Len += myRectangles.length;
    for (var m = 0; m < myRectangles.length; m++) {
    var myGraphic = myRectangles[m].graphics.item(0);
    if (myGraphic != null) { //Если в Rectangle содержится графика, то работаем далее
    var myGraphicLink = myGraphic.itemLink;
    //Далее идущие две строки можно отключить, ибо они не связаны с основной фукнциональностью скрипта,
    //а проверяют правильность связи (УБЕРИТЕ ЗНАК КОММЕНТАРИЕВ – (//) ДЛЯ ВКЛЮЧЕНИЯ ЭТИХ ФУНКЦИЙ)
    //if (myGraphicLink.status != LinkStatus.NORMAL) {myGraphicLink.update()}
    //и подгоняют текстовый фрейм по графическому объекту – аналог команды Ctrl + C
    //myRectangles[m].geometricBounds = myGraphic.geometricBounds;
    mySquareGraph = (myRectangles[m].geometricBounds[2] – myRectangles[m].geometricBounds[0])*(myRectangles[m].geometricBounds[3] – myRectangles[m].geometricBounds[1]);
    mySquare += mySquareGraph;
    } //if (myGraphic != null)
    } //for (var m = 0; m < myRectangles.length; m++)

    var myTextFrames = myLayers[j].textFrames

    for (var k = 0; k < myTextFrames.length; k++) {
    var myRectangles = myTextFrames[k].rectangles;
    Len += myRectangles.length;
    for (var i = 0; i < myRectangles.length; i++) {
    var myGraphic = myRectangles[i].graphics.item(0);
    if (myGraphic != null) { //Если в Rectangle содержится графика, то работаем далее
    var myGraphicLink = myGraphic.itemLink;
    //Далее идущие две строки можно отключить, ибо они не связаны с основной фукнциональностью скрипта,
    //а проверяют правильность связи (УБЕРИТЕ ЗНАК КОММЕНТАРИЕВ – (//) ДЛЯ ВКЛЮЧЕНИЯ ЭТИХ ФУНКЦИЙ)
    //if (myGraphicLink.status != LinkStatus.NORMAL) {myGraphicLink.update()}
    //и подгоняют текстовый фрейм по графическому объекту – аналог команды Ctrl + C
    //myRectangles[i].geometricBounds = myGraphic.geometricBounds;
    mySquareGraph = (myRectangles[i].geometricBounds[2] – myRectangles[i].geometricBounds[0])*(myRectangles[i].geometricBounds[3] – myRectangles[i].geometricBounds[1]);
    mySquare += mySquareGraph;
    } //if (myGraphic != null)
    }//for (var i = 0; i < myRectangles.length; i++)
    } //if (myLayers[j].visible)
    } //for (var k = 0; k < myTextFrames.length; k++)
    } //for (var j = 0; j < myLayers.length; j++)

    //Возвращаем исходные единицы измерения
    with (myDocument.viewPreferences) {
    horizontalMeasurementUnits = myOldXUnits;
    verticalMeasurementUnits = myOldYUnits;
    }
    myReturn = [Len,mySquare];
    return myReturn;
    }

  • iv-mi said:

    Спасибо, всегда интересно узнать, как другие решали схожую задачу.
    На первый взгляд, тут не учитывается, что одна картинка может встречаться в верстке несколько раз.
    Найду время, познакомлюсь с этим кодом поближе.

Leave your response!

You must be logged in to post a comment.