よろよろ帳

InDesign JavaScript 勉強中

フレーム分割

選択フレーム(1個)を分割数と間隔指定でバラします。
promptまとめたいけど放置……。

//横に分割
app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel = app.activeDocument.selection[0];
var N=prompt ("分割数","2");
if(N==null)exit();
var S=prompt("間隔","2");
if(S==null)exit();
var G=sel.geometricBounds;
var W=(G[3] -G[1]-(S*(N-1)))/N;
for(i=0;i<N-1;i++){
    sel.geometricBounds=[G[0],G[1],G[2],G[1]+W];
    sel.duplicate(undefined,[(i+1)*W+(i+1)*S,0]);
    }
}
//縦に分割
app.doScript (main, ScriptLanguage.JAVASCRIPT, [], UndoModes.FAST_ENTIRE_SCRIPT);
function main (){
var sel = app.activeDocument.selection[0];
var N=prompt ("分割数","2");
if(N==null)exit();
var S=prompt("間隔","2");
if(S==null)exit();
var G=sel.geometricBounds;
var H=(G[2] -G[0]-(S*(N-1)))/N;
for(i=0;i<N-1;i++){
    sel.geometricBounds=[G[0],G[1],G[0]+H,G[3]];
    sel.duplicate(undefined,[0,(i+1)*H+(i+1)*S]);
    }
}

追記 まとめる方法きいてみました

parseIntて何かしらと検索すると使わんほうがいいとのこと
JavaScript で parseInt / parseFloat を使わない方が良い理由