Подсчет площади рисунков в документе
Скрипт для подсчета площади рисунков
Обрабатываются фреймы с рисунками и привязанные к тексту иллюстрации.
Рисунки с одинаковыми именами учитываются один раз за исключением тех, что вставлены через буфер.
Эти объекты не появляются в программе LINKS и учитываются всякий раз при появлении их в вёрстке.
Пользователь должен удалить все неиспользуемые объекты с монтажного стола,
т.к. не задействовано определение, где размещен рисунок — на полосе или за её пределами.
Программа также не учитывает возможное наличие атрибута «Nonprinting» у некоторых фреймов или групп.
Скачать скрипт SpaceOfPictures.jsx (zip)
Михаил Иванюшин
Интересно. Так и просится стать компонентом скрипта по подсчету авторских листов. Или такой уже есть?
«Так и просится стать компонентом скрипта по подсчету авторских листов. Или такой уже есть?»
Нет, Влад, пока нет. Сейчас в фоновом режиме делаю скрипт подсчета стихотворных строк, потом хорошо бы сделать упрощенный вариант подсчета знаков на выбранных пользователем страницах. Указание диапазона страниц позволит отделить авторский текст от выходных и пр. служебных данных. Знак — это удар по клавише, т.е. разделение на буквы/знаки и пробелы избыточно.
Если есть охота — сделайте такой подсчет знаков. Буду рад освободившемуся времени, т.к. мыслей, что можно автоматизировать, гораздо больше, чем свободного времени на скриптинг. Только известите, что взялись за эту задачку.
И мне кажется, на этом этапе надо остановиться.
Имея число стихотворных строк, площадь рисунков, число знаков, редактор сам всё дальше подсчитает. Он ведь тоже должен поучаствовать в процессе… 🙂
Михаил, огромное спасибо за этот скрипт.
Число знаков я считал скриптом буквально в 1 строку:
myDocument = app.activeDocument;
mySelection = app.activeDocument.selection[0];
alert(«Всего символов: » + mySelection.length);
На большее моих мозгов не хватило 🙂
Спасибо за скрипт. Извините великодушно, но по моему хорошо было-бы добавить сколько цветных и сколько чёрно-белых и то после спуска полос или есть такое?
И если можно как-то объясните когда запускаю скрипт по замене набранных букв на английском на русский даёт вот токую картинку.
А как картинку сюда прикрепить а?
Вопрос подсчета числа знаков в верстке, возможно, решается одним из этих скриптов:
http://adobeindesign.ru/2008/10/27/script-textcounter/
http://adobescripts.info/statistics.html
Надо попробовать.
***
«хорошо было-бы добавить сколько цветных и сколько чёрно-белых и то после спуска полос или есть такое?»
Нет, такого нет. Если условиться предварять название ч/б иллюстраций, например, буквой D, а цветных — буквой S (буквы выбраны, чтобы не было их русского аналога по внешнему виду), то можно и такую статистику собирать. Пока этого нет.
«и то после спуска полос» — не ясно, что имеется в в виду.
***
«И если можно как-то объясните когда запускаю скрипт по замене набранных букв на английском на русский даёт вот токую картинку»
Тоже не понял, что имеется в виду. Пришлите на мой адрес (он на вкладке «Авторы сайта»), может тогда станет ясно.
ой я кажется Борису послал письмо. Сейчас и Вам перешлю письмо
…потом хорошо бы сделать упрощенный вариант подсчета знаков на выбранных пользователем страницах…
…Вопрос подсчета числа знаков в верстке, возможно, решается одним из этих скриптов: http://adobeindesign.ru/2008/10/27/script-textcounter/…
Вот этот скрипт, как мне кажется, хорошая основа для таких задач. Только его еще дорабатывать и дорабатывать. От разных людей накопились следующие задачи по его доработке:
1. Сделать так, чтобы учитывался только текст на страницах (текст на полях учитываться не должен)
2. Текст с шаблонов должен быть посчитан столько раз, сколько этот шаблон используется, т.к. редакторы-корректоры читают этот текст каждый раз, на каждой странице.
3. Упомянутый Вами «подсчет знаков на выбранных пользователем страницах» — тоже идея хорошая.
Вот только времени, как всегда, не хватает. Может действительно, кто возьмется?:)
Вот еще один скрипт от 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;
}
Спасибо, всегда интересно узнать, как другие решали схожую задачу.
На первый взгляд, тут не учитывается, что одна картинка может встречаться в верстке несколько раз.
Найду время, познакомлюсь с этим кодом поближе.