たまにPhotoshopの自動処理を書いていると必要になってくるのでメモ書き。
使用方法
引数には並び替えたい順番でレイヤー名が格納されている配列を渡してあげると動作します。
例)[‘レイヤー名1′,’レイヤー名2′,’レイヤー名3’]
例の配列を渡してあげるとレイヤー名1が最前面に、レイヤー名3が再背面に来る感じです。
処理の動きとしては、もらった配列の後ろのレイヤーからどんどん最前面に押し上げていってソートを実現している感じ。
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
function sortLayers ( layerNameList ) { var layerNameList = layerNameList.reverse(); for( var i=0; i<layerNameList.length; i++ ) { var layerName = layerNameList[i]; activeDocument.activeLayer = activeDocument.layers[ layerName ]; if( layerName.name != activeDocument.artLayers[0].name ) { var idmove = charIDToTypeID( "move" ); var desc26557 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref3177 = new ActionReference(); var idLyr = charIDToTypeID( "Lyr " ); var idOrdn = charIDToTypeID( "Ordn" ); var idTrgt = charIDToTypeID( "Trgt" ); ref3177.putEnumerated( idLyr, idOrdn, idTrgt ); desc26557.putReference( idnull, ref3177 ); var idT = charIDToTypeID( "T " ); var ref3178 = new ActionReference(); var idLyr = charIDToTypeID( "Lyr " ); var idOrdn = charIDToTypeID( "Ordn" ); var idFrnt = charIDToTypeID( "Frnt" ); ref3178.putEnumerated( idLyr, idOrdn, idFrnt ); desc26557.putReference( idT, ref3178 ); executeAction( idmove, desc26557, DialogModes.NO ); } } } |