InDesignで円グラフを作成する(2)
title = "グラフタイトル"; vals = [30, 25, 20, 15, 5, 3, 1, 1]; //パーセンテージ
外部から読み込む変数です。あとから全体を関数化するときの引数になります。あと凡例に使う項目名も必要なんだけれど、まだそこまでいってない。
var r = 30; //半径 var s = 2; //グラフ周囲のアキ var tw = 6; //数値の枠の幅 var th = 2; //数値の枠の高さ
各種設定値。汎用性を持たせるなら別ファイル(設定ファイル)にしておいて読み込むものです。
//円グラフの中心位置
//CS5で回転をトラブルなく行うには座標をページの左端中央にする
var x = 0;
var y = (app.activeWindow.activePage.bounds[2] -
app.activeWindow.activePage.bounds[0]) / 2;
app.activeWindow.transformReferencePoint = [x, y];
あとから図形を回転させるので、その回転の中心を設定するのが、transformReferencePointです。このプロパティは定数AnchorPoint(左上などのオブジェクトの端点または中心)もしくは座標値を設定できるはずですが、CS5のバグなのか、座標を指定してもいうことを聞いてくれない。
本当は
transformReferencePoint = ["100mm", "120mm"];
てな具合に指定したいのだけども、なぜか別の場所を中心に回転してしまう。となれば、その別の場所を特定するしかないので、調査の結果、ページの左端中央だったというわけ。
仕方がないので、とりあえずそこに作成して、あとから移動しましょう。
var d = 0.552284746666667; //Directionの定数(半径を1)
ベジエ曲線で作る円の、半径に対するハンドルの長さ。これを求めるにはInDesign上で円を作成し、選択したうえで次のスクリプトをESTK上で走らせると教えてくれます。
var sel = app.selection; var pps = sel[0].paths[0].pathPoints; for (i=0;i<pps.length;i++){ $.writeln(i+" leftD.x:" + pps[i].leftDirection[0]); $.writeln(i+" leftD.y:" + pps[i].leftDirection[1]); $.writeln(i+" x:" + pps[i].anchor[0]); $.writeln(i+" y:" + pps[i].anchor[1]); $.writeln(i+" righD.x:" + pps[i].rightDirection[0]); $.writeln(i+" righD.y:" + pps[i].rightDirection[1]); }