今回のスクリプトは、アクティブになっているレイヤーの内容を複製するものです。手作業だとレイヤーの複製は簡単にできます。ところが、スクリプトではなぜかレイヤーを複製する機能がありません。図形や文字を複製する機能はあるのですが、不思議です。
まず、以下のスクリプトはサブレイヤーを除くレイヤー内容を複製します。サブレイヤーを複製したくない場合や、サブレイヤーがないときに使えます。
まず、以下のスクリプトはサブレイヤーを除くレイヤー内容を複製します。サブレイヤーを複製したくない場合や、サブレイヤーがないときに使えます。
var srcLayer = app.activeDocument.activeLayer;
var dstLayer = app.activeDocument.layers.add(); // 新規レイヤーを作成
for(var i=0; i<srcLayer.pageItems.length; i++){
var src = srcLayer.pageItems[i].duplicate();
src.move(dstLayer, ElementPlacement.PLACEATEND);
}
サブレイヤーが含まれる場合には、以下のスクリプトを使うとサブレイヤーごと複製されます。サブレイヤーの名前なども、そのままコピーされます。ただし、通常の図形とサブレイヤーの順番に関しては、同じように複製されません。
var srcLayer = app.activeDocument.activeLayer;
var dstLayer = app.activeDocument.layers.add(); // 新規レイヤーを作成
dupLayer(srcLayer, dstLayer);
// レイヤーを複製(再帰)
function dupLayer(srcLayer, dstLayer){
for(var i=0; i<srcLayer.pageItems.length; i++){
var src = srcLayer.pageItems[i].duplicate();
src.move(dstLayer, ElementPlacement.PLACEATEND);
}
for(i=0; i<srcLayer.layers.length; i++){
var dstLayer2 = dstLayer.layers.add(); // 新規レイヤーを作成
dstLayer2.name = srcLayer.layers[i].name;
dupLayer(srcLayer.layers[i], dstLayer2);
}
}
【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/
>
本業とは関係ないものが多々やってきて、なかなか仕事が進まず。マシンパワーがあれば、早く終わる仕事もあるけど基本的には自分の能力、技術力不足が大きい感じ。という事で、今回は短めの原稿。時間を見てAdobe系のアプリのライブラリを作っておきたいというのもあるけど......。あと、ブームが去って余った業務用3Dカメラを貸してもらったので、そこらへんも書きたいところ。
・Nexus 10(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus10/
>
・Kindle Fire HD使い方辞典
< http://www.openspc2.org/reibun/Kindle/Fire_HD/
>
・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/
>
・iPad mini(アイパッドミニ)使い方辞典
< http://www.openspc2.org/reibun/iPad/mini/2012/
>
・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082
>
・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199
>
・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/
>
・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/
>
・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/
>
吉田印刷所の「印刷の泉」でも購入できるようになりました。