InDesign標準の繰り返し複製は便利なのだが、縦横まとめて複製することができません。
これってちょっとめんどくさいかなっと思ってしまいます。
そこで自分が便利かなと思う、繰り返し複製を実現できるよう考えてみた。
Javascriptで書いています。
以下のソースをコピーしてテキストエディタ等の新規書類として作成し、utf8フォーマットで拡張子にjsxを付けて保存してください。
私はそのまま繰り返し複製.jsxと名付けています。
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
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; } } } |
複製するオブジェクトを選択し、スクリプトパネルの繰り返し複製を起動。
ダイアログに必要な情報を入力して実行します。
繰り返し複製
510 Downloads