選択したものの左上に共通のオブジェクトを追加します。追加するものは要グループ化。
★クリップボードから(コピーかカットしてから実行)
var Doc=app.activeDocument; var tempRuler = Doc.viewPreferences.rulerOrigin; Doc.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN; app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT); function main (){ var sel=Doc.selection; Doc.selection = null; //レイヤー指定したいなら //Doc.activeLayer= Doc.layers[0];//一番上 //Doc.activeLayer=Doc.layers.itemByName ("new");//名前指定 for(var i=0; i<sel.length; i++){ var VB=sel[i].visibleBounds; app.paste(); Doc.selection[0].move([VB[1],VB[0]]) } } Doc.viewPreferences.rulerOrigin = tempRuler;
★ライブラリから
var Doc=app.activeDocument; var tempRuler = Doc.viewPreferences.rulerOrigin; Doc.viewPreferences.rulerOrigin = RulerOrigin.SPREAD_ORIGIN; app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT); function main (){ var sel=Doc.selection; Doc.selection = null; for(var i=0; i<sel.length; i++){ var VB=sel[i].visibleBounds; var lib = app.libraries.itemByName("test.indl");//ライブラリ指定 var La=lib.assets.item("new").placeAsset(Doc);//アセット名指定 Doc.selection =La;//選ばないとだめみたい Doc.selection[0].move([VB[1],VB[0]]) } } Doc.viewPreferences.rulerOrigin = tempRuler;
右下用
var VB2=Doc.selection[0].visibleBounds; Doc.selection[0].move([VB[3]-(VB2[3]-VB2[1]),VB[2]-(VB2[2]-VB2[0])])
中央用
var VB2=Doc.selection[0].visibleBounds; var W=VB2[3]-VB2[1]; var H=VB2[2]-VB2[0]; Doc.selection[0].move([VB[1]+((VB[3]-VB[1]-W)/2),VB[0]+((VB[2]-VB[0]-H)/2)])
BoundsはY軸始まりでmoveがX軸始まり…嫌だ!
↓参考
1if-1for(4):複数のオブジェクトをあるオブジェクトに置き換えたい - DTPab