039.【ID】選択対象群を位置関係を保ったままページ中央に
書いたコード
var doc = app.activeDocument; var sel = doc.selection; var pBounds = sel[0].parentPage.bounds; // [y1, x1, y2, x2] var pHeight = pBounds[2] - pBounds[0]; var pWidth = pBounds[3] - pBounds[1]; var pCenter = [pWidth / 2, pHeight / 2]; var tmpGrp = app.activeWindow.activeSpread.groups.add(sel); var gBounds = tmpGrp.geometricBounds; // [y1, x1, y2, x2] var gHeight = gBounds[2] - gBounds[0]; var gWidth = gBounds[3] - gBounds[1]; var gCenter = [gBounds[1] + gWidth / 2, gBounds[0] + gHeight / 2]; var diff = [pCenter[0] - gCenter[0], pCenter[1] - gCenter[1]]; app.activeDocument.undo(); for (var i = 0; i < sel.length; i++) { sel[i].move("", [diff[0], diff[1]]) }
メモ
分からなかったところ
- undo()
applicationにもundo()があるが、どんな動きをするものなのか分からなかった。
普通の「元に戻す」とは違うみたい。
感想
pageやpageItemにwidth/heightプロパティが欲しいです。
参考
- InDesign:move()メソッドの思い違い / 車車車く本牛勿 -Rollin' Real-
move()の引数の謎挙動について