InDesign標準の繰り返し複製は便利なのだが、縦横まとめて複製することができません。
これってちょっとめんどくさいかなっと思ってしまいます。
そこで自分が便利かなと思う、繰り返し複製を実現できるよう考えてみた。
Javascriptで書いています。
以下のソースをコピーしてテキストエディタ等の新規書類として作成し、utf8フォーマットで拡張子にjsxを付けて保存してください。
私はそのまま繰り返し複製.jsxと名付けています。
main();
function main(){
if (app.documents.length == 0){
alert("ドキュメントを開いてください");
return;
}
if (app.selection.length == 0){
alert("オブジェクトを選択してください");
return;
}
//ダイアログを作成する
myDialog = app.dialogs.add({name:"繰り返し複製"});
with(myDialog){
with(dialogColumns.add()){
with(borderPanels.add()){
staticTexts.add({staticLabel:"選択されたオブジェクトを繰り返し複製します(単位はドキュメント依存)"});
}
with(borderPanels.add()){
var Listpercent = new Array( "0","1","2", "3", "4", "5", "6", "7", "8", "9", "10");
staticTexts.add({staticLabel:"繰り返し回数"});
var xcount = integerComboboxes.add({editValue:1,minimumValue:0,maximumValue:255,stringList:Listpercent});
staticTexts.add({staticLabel:"水平方向オフセット"});
var xmove = realEditboxes.add({editValue:0,minimumValue:0,maximumValue:2000});
}
with(borderPanels.add()){
staticTexts.add({staticLabel:"繰り返し回数"});
var ycount = integerComboboxes.add({editValue:1,minimumValue:0,maximumValue:255,stringList:Listpercent});
staticTexts.add({staticLabel:"垂直方向オフセット"});
var ymove = realEditboxes.add({editValue:0,minimumValue:0,maximumValue:2000});
}
}
}
var myReturn = myDialog.show();
//ここから処理を行う
if (myReturn == true){
var xmovevalue = xmove.editValue;
var xcountvalue = xcount.editValue+1;
var ymovevalue = ymove.editValue;
var ycountvalue = ycount.editValue+1;
myDialog.destroy();
indd_dup_selected_box(app.selection,xmovevalue,xcountvalue,ymovevalue,ycountvalue);
}
else{
myDialog.destroy();
}
}
function indd_dup_selected_box(motoobj,xmovevalue,xcountvalue,ymovevalue,ycountvalue){
for(var N = 0; N < motoobj.length;N++){
var moto_bounds = motoobj[N].geometricBounds;
var newx_pos = moto_bounds[1] ;
for(var X = 0;X < xcountvalue;X++){
var newy_pos = moto_bounds[0];
for(var Y = 0;Y < ycountvalue;Y++){
if(X == 0 && Y == 0){}else{
var newobj = motoobj[N].duplicate();
newobj.move([newx_pos,newy_pos]);
}
newy_pos = newy_pos + ymovevalue;
}
newx_pos = newx_pos + xmovevalue;
}
}
}
複製するオブジェクトを選択し、スクリプトパネルの繰り返し複製を起動。
ダイアログに必要な情報を入力して実行します。
繰り返し複製
367 Downloads