|
|
// 图层批量重命名工具
// 支持多种重命名模式
(function(){
var win = new Window("dialog", "批量重命名");
win.orientation = "column";
// 模式选择
var modeGroup = win.add("group");
modeGroup.add("statictext", undefined, "模式:");
var mode = modeGroup.add("dropdownlist", undefined, [
"添加前缀",
"添加后缀",
"查找替换",
"序号命名"
]);
mode.selection = 0;
// 参数输入
var paramGroup = win.add("group");
paramGroup.orientation = "column";
var prefixGroup = paramGroup.add("group");
prefixGroup.add("statictext", undefined, "前缀:");
var prefixInput = prefixGroup.add("edittext", undefined, "图层_");
var suffixGroup = paramGroup.add("group");
suffixGroup.add("statictext", undefined, "后缀:");
var suffixInput = suffixGroup.add("edittext", undefined, "_v1");
var replaceGroup = paramGroup.add("group");
replaceGroup.add("statictext", undefined, "查找:");
var findInput = replaceGroup.add("edittext", undefined, "");
replaceGroup.add("statictext", undefined, "替换为:");
var replaceInput = replaceGroup.add("edittext", undefined, "");
var seqGroup = paramGroup.add("group");
seqGroup.add("statictext", undefined, "起始序号:");
var startInput = seqGroup.add("edittext", undefined, "1");
startInput.characters = 5;
seqGroup.add("statictext", undefined, "位数:");
var digitsInput = seqGroup.add("edittext", undefined, "2");
digitsInput.characters = 5;
// 初始显示
prefixGroup.visible = true;
suffixGroup.visible = false;
replaceGroup.visible = false;
seqGroup.visible = false;
mode.onChange = function() {
prefixGroup.visible = (mode.selection.index === 0);
suffixGroup.visible = (mode.selection.index === 1);
replaceGroup.visible = (mode.selection.index === 2);
seqGroup.visible = (mode.selection.index === 3);
};
// 执行按钮
var btnGroup = win.add("group");
btnGroup.alignment = "center";
var applyBtn = btnGroup.add("button", undefined, "应用");
var cancelBtn = btnGroup.add("button", undefined, "取消");
applyBtn.onClick = function() {
var comp = app.project.activeItem;
if(!comp || !(comp instanceof CompItem)) {
alert("请先激活一个合成");
return;
}
var selectedLayers = comp.selectedLayers;
if(selectedLayers.length === 0) {
alert("请至少选择一个图层");
return;
}
app.beginUndoGroup("批量重命名");
switch(mode.selection.index) {
case 0: // 前缀
for(var i=0; i<selectedLayers.length; i++) {
selectedLayers[i].name = prefixInput.text + selectedLayers[i].name;
}
break;
case 1: // 后缀
for(var i=0; i<selectedLayers.length; i++) {
selectedLayers[i].name = selectedLayers[i].name + suffixInput.text;
}
break;
case 2: // 查找替换
var find = findInput.text;
var replace = replaceInput.text;
if(find) {
for(var i=0; i<selectedLayers.length; i++) {
selectedLayers[i].name = selectedLayers[i].name.split(find).join(replace);
}
}
break;
case 3: // 序号
var start = parseInt(startInput.text);
var digits = parseInt(digitsInput.text);
if(isNaN(start)) start = 1;
if(isNaN(digits)) digits = 2;
for(var i=0; i<selectedLayers.length; i++) {
var num = (start + i).toString();
while(num.length < digits) num = "0" + num;
selectedLayers[i].name = num;
}
break;
}
app.endUndoGroup();
win.close();
};
cancelBtn.onClick = function() {
win.close();
};
win.show();
})();
|
|