/* ====================================================================== Версия: 1.3.1 Автор: Рахимов Денис Сайт: alt3d.ru Почта: alt3d@yandex.ru ====================================================================== Описание: Скрипт предназначен для пакетого экспорта групп слоев в отдельные *.tga файлы. Для определения групп которые нужно экспортировать их название должно содержать определенные префиксы. Каждая группа помеченная префиксом будет экспортирована независимо от остальных. При этом будет скрыты все остальные группы. Отдельные слои верхнего уровня не скрываются и будут экспортированы как есть (кроме слоя развертки с именем "UV"). Скрипт работает только с сохраненными *.psd файлами. Экспортированный файлы будут сохранены в папку с этим файлом. Экспортированные файлы будут иметь то же имя что и исходный файл, с добавлением постфикса. Постфикс - первый символ названия группы после префикса и последующего пробела. Описание и порядок префиксов: < - префикс для имени сохраняемой группы. Должен быть первым символом в названии группы. * - префикс для сохранения альфа-канала. Должен стоять вторым символом в названии группы. 2 - префикс для даунскейла. Должен стоять последним в названии группы. # - префикс для группы которая будет перезаписана в альфа-канал. Должен быть первым в названии группы. Остальные префиксы не учитываются. Пример: <*2 Normal - сохранение с альфа-каналом, с постфиксом "N", с даунскейлом = 2 ====================================================================== Примечание: Не забывайте пробел после префикса. Скрипт имеет несколько настроек которые вы можете изменить. Например имя слоя развертки, или символы кодировки префиксов Если вы хотите экспортировать группу с постфиксом отличающимся от первого символа в названии группы, вы можете вписать его сразу после символа <. При этом вы можете использовать более одного символа. Пример: 10) return false; // Даунскейл возможен только в пределах от 2 до 9 return true; } // Даунскейл function Downscale(_prefix) { if (!CheckDownscale(_prefix)) return; // Проверка на даунскейл lastPrefixChar = _prefix.charAt(stringArray[0].length - 1); // Занесение последнего символа префикса в переменную downscaleWidth = activeDocument.width / lastPrefixChar; // Расчет ширины изображения downscaleHeight = activeDocument.height / lastPrefixChar; // Расчет ширины изображения activeDocument.resizeImage(UnitValue(downscaleWidth, "px"), UnitValue(downscaleHeight, "px")); // Изменение размера изображения } // Проверяет на сохранение с альфа-каналом function CheckAlpha(_prefix) { if (_prefix.indexOf(prefixSaveWithAlpha) == -1) return false; else return true; } // Возвращает путь до файла сохранения function GetSavePath(_groupName, _prefix) { saveFolder = originDoc.path; saveName = originDoc.name.substring(0, originDoc.name.length - 4); savePostfix = GetPostfix(_groupName, _prefix); return saveFolder + "/" + saveName + "_" + savePostfix + ".tga"; } // Возвращает постфикс function GetPostfix(_groupName, _prefix) { if (CheckPostfixInPrefix(_prefix)) return GetPostfixByPrefix(_prefix); else return GetPostfixByFirstLetter(_groupName); } // Проверка на наличие постфикса в префиксе function CheckPostfixInPrefix(_prefix) { lastPrefixCharPos = _prefix.length; if (CheckDownscale(_prefix)) lastPrefixCharPos = _prefix.length - 1; if (CheckAlpha(_prefix)) lastPrefixCharPos = _prefix.indexOf(prefixSaveWithAlpha); if (lastPrefixCharPos > 1) return true; else return false; } // Возвращает постфикс из префикса function GetPostfixByPrefix(_prefix) { lastPrefixCharPos = _prefix.length; if (CheckDownscale(_prefix)) lastPrefixCharPos = _prefix.length - 1; if (CheckAlpha(_prefix)) lastPrefixCharPos = _prefix.indexOf(prefixSaveWithAlpha); return _prefix.substring(1, lastPrefixCharPos); } // Возвращает постфикс по первой букве названия группы function GetPostfixByFirstLetter(_groupName) { stringArray = _groupName.split(" "); // Разбиение названия на массив строк return stringArray[1].substring(0, 1); // Возврат первого символа второго элемента массива } // ====================================================================== // Скрытие всех групп кроме указанной function HideAllGroupsButThis(_groupName) { for (var i = 0; i < activeDocument.layerSets.length; i++) { if (activeDocument.layerSets[i].name.indexOf(_groupName) == 0) activeDocument.layerSets[i].visible = true; else activeDocument.layerSets[i].visible = false; } } // Скрытие всех слоев кроме указанного function HideAllLayersButThis(_layerName) { for (var i = 0; i < activeDocument.artLayers.length; i++) { if (activeDocument.artLayers[i].name.indexOf(_layerName) == 0) activeDocument.artLayers[i].visible = true; else activeDocument.artLayers[i].visible = false; } } // Скрытие указанного слоя function HideThisLayer(_layerName) { for (var i = 0; i < activeDocument.artLayers.length; i++) { if (activeDocument.artLayers[i].name.indexOf(_layerName) == 0) { activeDocument.artLayers[i].visible = false; return; } } } // ======================================================================