Photoshop Scriptコード
Scripting Listenerで取得したコードやScriptUIコードを載せています。
指定したドキュメントにアクティブレイヤーを複製する
コード
/**
* 指定したドキュメントにアクティブレイヤーを複製する
* @param {Document} [toDoc=activeDocument] - 複製先ドキュメント
*/
function duplicateActiveLayer(toDoc) {
var getDocNum = function (doc) {
var num;
for (var i = documents.length; i--;) {
if (documents[i] == doc) {
num = i;
break;
}
}
return num;
};
toDoc = toDoc || activeDocument;
var toDocNum = getDocNum(toDoc);
var desc = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putEnumerated(charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
desc.putReference(charIDToTypeID('null'), ref1);
var ref2 = new ActionReference();
if (toDoc == activeDocument) {
ref2.putEnumerated(charIDToTypeID('Dcmn'), charIDToTypeID('Ordn'), charIDToTypeID('Trgt'));
}
else {
ref2.putOffset(charIDToTypeID('Dcmn'), toDocNum);
}
desc.putReference(charIDToTypeID('T '), ref2);
executeAction(charIDToTypeID('Dplc'), desc, DialogModes.NO);
}
補足
copy(), paste()を使っての移動と異なり、クリップボードを経由しません。
レイヤーへ適用している効果も複製されます。
また、透明部分を含むレイヤーを複製した場合でも、複製元と同じ位置(左上座標)に設置されます。
確認バージョン
CS2, CS6