サイトアイコン tu-kazu.jp

繰り返し複製

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;
		}
	}
}

複製するオブジェクトを選択し、スクリプトパネルの繰り返し複製を起動。
ダイアログに必要な情報を入力して実行します。

繰り返し複製
モバイルバージョンを終了