JavaScript и автоматизация

Статус
Закрыто для дальнейших ответов.

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Предлагаю открыть топик на тему JavaScript и автоматизации шопа. :confused:
Кто что знает по этому вопросу кидайте все сюда!
Кто знает какие-нибудь ресурсы или ссылки в сети на русском языке посвященные этому вопросу?
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

Так вот он топик, открыт. Чего кидать?

Если вы хотите предложить завести отдельную рубрику - она будет практически пуста.
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Предлагаю сюда кидать всю информацию по Java для Photoshop. Советы, линки и т.д.
Я вот например нашел книги по Java ftp://194.105.193.56/pub/warez/books/java/ но для Photoshop ничего нету.
Меня вот сейчас например интересует конкретно такой вопрос: как из edittext можно вытащить введенный пользователем текст. Никак у меня это не получается.
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

А свойство text вы не используете что ли? Почитайте включенный в стандартную поставку Фотошопа CS - JavaScript Reference Guide.pdf
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Стандартый JavaScript Reference Guide читал. Там во первых по английски, но эта не основная прблема. Основная проблема в том, что там очень мало примеров. Но я уже нашел мою ошибку. Просто JavaScript чувствителен к регистрам. Я писал .Text а надо было .text
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

Не Ява-скрипт, а вообще ява, наследно от С различает регистр в именах и наименованиях.
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Я вот сегодня столкнулся с такой проблемой: никак не могу средствами Java переместить слой или выделение. Выход примерный нашел: делаю lect.copy. Потом выделение curdoc.selection.select(array(....). Далее select.paste. И вставляется в выделение. Потом снимаю выделение. Но это-же ненормально? Перечитал весь ScriptingGuide и ничего не нашел как переместить слой или хотя-бы выделение. Может кто подскажет?
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

Вот так вот весь и перечитали? И метод translate не встретили?

Objects > ArtLayer > translate

translate
moves the position relative to its current position
DeltaX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Number(double)
DeltaY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Number(double)

Обратите внимание на то, что в комментариях к методу есть слово "moves" (двигает) по которому вы могли бы запросто найти этот метод, который имеет неочевидное, в отличии от rotate и resize имя.

----

Objects > Selection > translate (or translateBoundary)

translate
moves the position relative to its current position
DeltaX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Number(double)
DeltaY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Number(double)

translateBoundary
moves the boundary of selection relative to its current position
DeltaX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Number(double)
DeltaY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Number(double)

Метод translate объекта Selection перемещает пикселы попавшие в селекцию, а метод translateBoundary - собственно саму селекцию.

Перемещение относительное, относительно текущей позиции.
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Я эту команду нашел. Но я так понял что это free transform (отображается в history). И испрользуя translate не могу понять как задать перемещение в милиметрах или см, т.к. мне не надо перемещатся в пикселях. Пробовал менять typeUnits и rulerUnits на мм, все равно перемещается в пикселях.
Кстати сегодня обнаружил, что в JavaScript Reference описаны не все функциию. Я вот например нашел функции для работы со строковыми переменными: substr(start,end) - обрезает строку от start до end. В JS Reference об этой функции вообще не упоминается.
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Наконец разобрался с translate. Оказывается там перемещение задается в POINTS. И поменять на PIXELS или MM нельзя. Приходится пересчитывать.
Кстати кто знает? Такая задача: есть изображение слева вверху холста на background. Мне необходимо сместить вниз и вправо холста, также на background. Делаю selectall() потом translate(x,y). И нифига почему то не смещается. Кто может знает?
 

WereVarg

Участник
Сообщения
571
Реакции
0
Ответ: JavaScript и автоматизация

Товарищи, подскажите (в первую очередь уважаемый CMYK): как сдублировать леерсет из одного файла в другой на яве напрямую. Если Не подскажете - буду таскать послойно.
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Из файла или открытого документа?
 

WereVarg

Участник
Сообщения
571
Реакции
0
Ответ: JavaScript и автоматизация

Из одного открытого документа в другой открытый документ.
Волнует - есть ли возможность в методе (или как он по-научному) duplicate указывать пункт назначения как в такой же команде в фотошопе.
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

Я вот например нашел функции для работы со строковыми переменными: substr(start,end) - обрезает строку от start до end.

В референсах описана объектная среда явы Фотошопа, а не всей явы.

Коэффициент пересчета из мм в пункты: 2.8346457

Можете попробовать с помощью листенера проследить за тем как дублируется слой в новый или указанный документ и немного обработав код создать функцию.

Дублирование в новый документ:

Код:
if (documents.length > 0) 
{

	FreeLayerDuplicate ("Set 1");
	    
}
else
{
	alert("There must be at least one open document.");
}


function FreeLayerDuplicate ( ActiveLayerOrLayerSet )
{
var ref12 = new ActionReference();
var ref13 = new ActionReference();
var desc17 = new ActionDescriptor();

ref12.putClass( charIDToTypeID( "Dcmn" ) );
desc17.putReference( charIDToTypeID( "null" ), ref12 );
ref13.putName( charIDToTypeID( "Lyr " ), ActiveLayerOrLayerSet.toString() );
desc17.putReference( charIDToTypeID( "Usng" ), ref13 );

executeAction( charIDToTypeID( "Mk  " ), desc17, DialogModes.NO );
}

Скрипт выше требует названия слоя или набора слоев для дублирования в новый документ. Если указанный в переменной ActiveLayerOrLayerSet слой или набор слоев будет отсутствовать - получите сообщение об ошибке.

Дублирование в определенный документ:

Код:
if (documents.length > 0) 
{

	TargetedLayerDuplicate ("Untitled-2");

}
else
{
	alert("There must be at least one open document.");
}

function TargetedLayerDuplicate ( TargedDocName )
{
	var desc19 = new ActionDescriptor();
	var ref15 = new ActionReference();
	var ref16 = new ActionReference();

	ref15.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ) );
	desc19.putReference( charIDToTypeID( "null" ), ref15 );
	ref16.putName( charIDToTypeID( "Dcmn" ), TargedDocName.toString() );
	desc19.putReference( charIDToTypeID( "T   " ), ref16 );

	executeAction( charIDToTypeID( "Dplc" ), desc19, DialogModes.NO );
}

Функция требует имя документа в который будет дублироваться выбранный, активный в данный момент слой или набор слоев. Если такого документа не окажется - получите сообщение об ошибке.
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

Если Не подскажете - буду таскать послойно.

А как вы таскаете "послойно"?
 

WereVarg

Участник
Сообщения
571
Реакции
0
Ответ: JavaScript и автоматизация

Да явно фотошопу не хватает приложения хотя б части основных ява обьектов и классов, я уже сто лет как не программировал и пришлось открывать для себя модуль Math, чтобы ввести хоть какую то математику приличную.
Не люблю я тот хлам, что выдает экшин. Хочется чистенькой программки.
А послойно ношу методами копи - пасте. Хотя, после того, как выяснилось, что шоп копирует только графическую информацию, пересмотрел построение скрипта.
Я все про те винетки ака фотоальбомы.
Сперва хотел породить несколько отдельный файлов с уложенными туда портретиками фонами и т.д. для возможности отдельного редактирования. А уже потом, чтоб это всё шоп вставил на большой фон.
В итоге отказался и собираю все сразу на большом фоне, отсортированое по леерсетам и т.д.

А по поводу предыдущего оратора, имха транслейт работает в выбраных единицах, указанных в настройках. Как их сменить на мм или см прописано даже в примере ущербного референса.
 

WereVarg

Участник
Сообщения
571
Реакции
0
Ответ: JavaScript и автоматизация

CMYK а вы физически где находитесь?
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

Так как изменить скрипт, чтобы translate таскал в ММ. Я уже менял rulerUnits на ММ. Проверял - в шопе меняется, а translate все равно по POINTS таскает. Ну киньте хоть один пример если знаете. Я то уже скрипт сделал пересчетом, просто интересно.
 

-=CMYK=-

Забанен
Сообщения
3 320
Реакции
2
Ответ: JavaScript и автоматизация

Физически - за столом. На стуле.
 

tolik777

Участник
Топикстартер
Сообщения
13
Реакции
0
Ответ: JavaScript и автоматизация

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