Скриптовым Гуру :)

  • Автор темы Автор темы bossrus
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

bossrus

шибка умный, аднака
Топикстартер
12 лет на форуме
Сообщения
447
Реакции
74
сам я в скриптах полный нуль :(
но очень нужно. помогите, пожалуйста, сделать скрипт, который делает Indesign CS 3, 4 следующие шаги:
1. выставляет блиды по 5 мм со всех сторон
2. убивает неиспользованные цвета
3. добавляет в палитру необозванные цвета
4. -опционально- включает режим отображения Separation
5. -опционально- открывает окошко префлайта

всенепременно скажу большое спасибо :)
 
Ответ: Скриптовым Гуру :)

1.
Код:
app.activeDocument.documentPreferences.documentBleedBottomOffset = 5;
app.activeDocument.documentPreferences.documentBleedInsideOrLeftOffset = 5;
app.activeDocument.documentPreferences.documentBleedOutsideOrRightOffset = 5;
app.activeDocument.documentPreferences.documentBleedTopOffset = 5;
2. http://forum.rudtp.ru/resources/inwash.19/
4. Alt-Shift-Ctrl-Y или Shift-F6 и стрелка вниз
5. Alt-Shift-Ctrl-F
 
Ответ: Скриптовым Гуру :)

4. Alt-Shift-Ctrl-Y или Shift-F6 и стрелка вниз
5. Alt-Shift-Ctrl-F

огромное спасибо. теперь из скачанного скрипта и этого сооружу требуемое.
на счет 4. и 5. — я в курсе клавишных сокращений. я так и делаю, но если скрипт будет заканчиваться включенным режимом и открытым окном это еще сэкономит 10-20 секунд. при большом потоке материалов — это существенно
 
Ответ: Скриптовым Гуру :)

Пункты 2 и 3 желательно поменять местами - заодно убьются и неиспользованные необозванные цвета.
 
Ответ: Скриптовым Гуру :)

Пункты 2 и 3 желательно поменять местами - заодно убьются и неиспользованные необозванные цвета.

это как? точнее так — а что такое "неиспользованные необозванные"? тогда где оне? 0_о
 
Ответ: Скриптовым Гуру :)

Пункт 2. убивает неиспользованные цвета
Пункт 3. добавляет в палитру необозванные цвета
Работаем ручками (как бы скриптом):
- Идем в палитру Swatches, выбираем пункт Select All Unused. Выбрались НЕИСПОЛЬЗОВАННЫЕ.
- Убиваем выбранные.
- Опять идем в палитру Swatches, теперь выбираем пункт Add Unnamed Colors. В палитру Swatches добавились НЕОБОЗВАННЫЕ.
Где гарантия, что среди этих необозванных нет неиспользуемых?
Поэтому порядок действий должен быть не Select All Unused - Delete - Add Unnamed Colors, а Add Unnamed Colors - Select All Unused - Delete,
т.е. сначала надо выполнять пункт 3, а затем пункт 2.
 
Ответ: Скриптовым Гуру :)

apg_777, со всем уважением, но необозванный цвет — это цвет, который ИСПОЛЬЗУЕТСЯ, но при этом не добавлен в браши.
если цвет не используется, то ОТКУДА он возьмется, при добавлении в браши ИСПОЛЬЗУЕМЫХ НЕОБОЗВАННЫХ цветов?


Не по теме:
отсыпьте и мне тоже, плиз :)
 
Ответ: Скриптовым Гуру :)

Запросто!
Color из списка не всегда удаляется при уничтожении объектов, окрашенных этим цветом.
Особенно грешат наличием таких "неиспользованных необозванных" файлы, которые верстаются не с нуля, а из какого-нибудь старого документа - берется первый попавшийся, в нем убиваются ненужные элементы и заверстываются новые. Это очень часто встречается при верстке периодических изданий. Мало того, в процессе разработки макета никто не затачивается чисткой (сегодня покрасили одним цветом, завтра не понравилось перекрасили и т.д.).
Поэтому нет никакой гарантии, что после добавления необозванных, в swatches окажутся только используемые.
У меня на выводе такие регулярно встречаются, при этом, зачастую, цвета оказываются RGB или Spot.

Хотя весь спор о том, в каком месте скрипта ставить строки:
var cAddUnnamedColors = app.menuActions.item("$ID/Add Unnamed Colors");
cAddUnnamedColors.invoke();
 
Ответ: Скриптовым Гуру :)

Ну и остальное:):
Код:
app.activeDocument.layoutWindows[0].overprintPreview = true;
var myPref = app.menuActions.item("$ID/Preflight...");
myPref.invoke();
 
  • Спасибо
Реакции: dumbm1
Ответ: Скриптовым Гуру :)

весьма еще раз спасибо. осталось теперь только с 2.3 разобраться. а то в той теме качается не тот скрипт :)
 
Ответ: Скриптовым Гуру :)

Насчет 3 см. пост №8, а насчет 2 - похоже, что да, не тот скрипт...
Ну простейший способ я вижу такой:
Код:
var unuS= app.activeDocument.unusedSwatches;
for (i=0;i<unuS.length;i++){
	try{unuS[i].remove()}catch(e){}
	}
 
Ответ: Скриптовым Гуру :)

Пункт 3 я уже указал:
Для JavaScript:
var cAddUnnamedColors = app.menuActions.item("$ID/Add Unnamed Colors");
cAddUnnamedColors.invoke();

Для AppleScript:
set cAddUnnamedColors to translate key string for "$ID/Add All Unnamed Colors"
invoke menu action cAddUnnamedColors

С JavaScript я практически не общаюсь, поэтому выложу пункты 3 и 2 на AppleScript. Может кто-нибудь переведет?

tell application "Adobe InDesign CS4"
-- Три строки получают названия команд для текущей локализации InDesign
set cAddUnnamedColors to translate key string for "$ID/Add All Unnamed Colors"
set cSelectAllUnused to translate key string for "$ID/Select All Unused"
set cDeleteSwatches to translate key string for "$ID/Delete Swatch..."
-- Выполнение
invoke menu action cAddUnnamedColors
invoke item 3 of menu action cSelectAllUnused -- Для Select All Unused menu action возвращает список до 7 команд. Нужна третья, поэтому item 3.
invoke menu action cDeleteSwatches
end tell
 
Ответ: Скриптовым Гуру :)

ага. завтра буду экспериментировать на работе.
ну и может тот файл заменят. уже и модерам, и владельцу написал
 
Ответ: Скриптовым Гуру :)

apg_777, а можешь вышенаписанные куски на яваскрипте перевести в эппл скрипт? я тогда целиком на эппле сделаю
 
Ответ: Скриптовым Гуру :)

всем еще раз спасибо.

скрипт
Код:
app.activeDocument.documentPreferences.documentBleedBottomOffset = 5;
app.activeDocument.documentPreferences.documentBleedInsideOrLeftOffset = 5;
app.activeDocument.documentPreferences.documentBleedOutsideOrRightOffset = 5;
app.activeDocument.documentPreferences.documentBleedTopOffset = 5;
var cAddUnnamedColors = app.menuActions.item("$ID/Add Unnamed Colors");
cAddUnnamedColors.invoke();
var unuS= app.activeDocument.unusedSwatches;
for (i=0;i<unuS.length;i++){
	try{unuS[i].remove()}catch(e){}
	}
app.activeDocument.layoutWindows[0].overprintPreview = true;
var myPref = app.menuActions.item("$ID/Preflight...");
myPref.invoke();

работает именно так, как нужно.
тему можно закрывать
 
Ответ: Скриптовым Гуру :)

Например так:
invoke item 3, конечно, не по-человечески, лучше включить проверку поля area в этом menu action. Да и 5 мм будет только если в установках InDesign'а миллиметры. Но работает и в CS3 и в CS4.
Код:
property bleedSize : 5
property runPreflight : false
property overpintPreview : false

tell application "Adobe InDesign CS3" -- или CS4
	set activeDocument to active document
	-- Получаем названия команд для текущей локализации InDesign
	set cAddUnnamedColors to translate key string for "$ID/Add All Unnamed Colors"
	set cSelectAllUnused to translate key string for "$ID/Select All Unused"
	set cDeleteSwatches to translate key string for "$ID/Delete Swatch..."
	set cPreflight to translate key string for "$ID/Preflight..."
	
	-- Установка вылетов (пункт 1)
	set docProperties to document preferences of activeDocument
	tell docProperties
		set document bleed bottom offset to bleedSize
		set document bleed inside or left offset to bleedSize
		set document bleed outside or right offset to bleedSize
		set document bleed top offset to bleedSize
	end tell
	
	-- разборки с цветом (пункты 3 и 2)
	invoke menu action cAddUnnamedColors
	invoke item 3 of menu action cSelectAllUnused
	invoke menu action cDeleteSwatches
	
	-- Preview (пункт 4)
	set overprint preview of item 1 of layout windows of activeDocument to overpintPreview
	
	-- окно Preflight (пункт 5)
	if runPreflight then invoke menu action cPreflight
end tell
P.S. В Apple script editor в меню "File" говоришь "Open library", выбираешь InDesign и вперед к написанию скрипта.
 
Ответ: Скриптовым Гуру :)

да я уже на яваскрипте написал.
включая выставление измерения в миллиметры, и сдвиг по клаве в 0.1 мм :)

но все равно большое спасибо за отзывчивость. а если вы на это сможете ответить — я буду совсем благодарен :)
 
Ответ: Скриптовым Гуру :)

А что, если не закрывать эту тему, а по горячим, так сказать, следам не обсудить ещё один инересный момент:
Для чего в данных для последующего вызова функции invoke используется '$ID/' ?
Пробуя в деле скрипт из поста 15, я обнаружил, что в CS5 он спотыкается на строке myPref.invoke();.
Попробовал в предыдущей версии, но CS4 он рухнул, пытаясь выполнить строку cAddUnnamedColors.invoke();
После перезагрузки стал работать.
Полгода тому назад была тема
http://forum.rudtp.ru/showthread.php?t=44237&page=1 "Крэш индизайна CS4 при выполнении menu action".
но решения не было. И у меня налицо повторение описанной в той теме неустойчивости работы скрипта с этой инструкцией.
CS5 устойчивее в том плане, что не сваливается. :) :(
НО!
Если исключить из кода это загадочное '$ID/'
var cAddUnnamedColors = app.menuActions.item("Add Unnamed Colors");
cAddUnnamedColors.invoke();
var unuS= app.activeDocument.unusedSwatches;
for (i=0;i<unuS.length;i++){
try{unuS.remove()}catch(e){}
}
app.activeDocument.layoutWindows[0].overprintPreview = true;
var myPref = app.menuActions.item("Preflight");
да, Preflight... тоже заменен на Preflight,
то этот скрипт работает устойчиво в обеих версиях.
Может, в строке app.menuActions и так ясно, что берутся названия процедур для используемого приложения, и поэтому '$ID/' избыточно?
 
Ответ: Скриптовым Гуру :)

Иногда избыточно, иногда нет. Поэтому реальную строку для menu action лучше получать через translate key string, при этом скрипт станет независим от локализации InDesign.

Тема про крэш моя, adobe ничего не ответил, поэтому пришлось воспользоваться обходным маневром.
Кстати сейчас InDesign при выполнении этой команды не рушится! Ничего не менял!
 
Ответ: Скриптовым Гуру :)

Так когда избыточно, а когда нет?
Попробовал еще раз на CS4:
строки
var cAddUnnamedColors = app.menuActions.item("$ID/Add Unnamed Colors");
cAddUnnamedColors.invoke();
опять убивают программу.
И скрипт в обеих версиях без проблем работает, когда нет этого указателя на приложение $ID.
Вот такая пока "независимость от локализации"...
Да, возможно, это тема для обсуждения с разработчиками.
Но посмотрим, какие ещё будут отклики на этот вопрос.
 
Статус
Закрыто для дальнейших ответов.