数学曲線を描く

同じネタがやや連続気味ですが今度はInDesignです。各ソフトでの違いが分かっていいかもしれませんが、まあInDesignにも標準では数学曲線を描く機能はないので何かの時に役立つかもしれません。
InDesignの場合はマルチページIllustratorといった感じなのでスクリプトもIllustrator CSに近いものになっています。いまいち不明な点もありますが、パスの元になる図形を作成しておいて、後から座標値を設定する、という方法で描いています。InDesignは後発のソフトだけあって、構造が結構すっきりしています。
スクリプトを実行するにはスクリプトを.jsの拡張子で保存します。CS2の場合は.jsxが良いでしょう。保存先はInDesign CS(CS2)フォルダ内にあるPresetsフォルダ内にあるScriptsフォルダです。後から、このフォルダにスクリプトファイルを移動させても構いません。また、InDesign実行中に移動させても問題ありません。InDesignは自動的に認識してくれます。

w = 0.1; // 横の拡大率
h = 10; // 縦の拡大率
step = 5; // 計算上の間隔
startP = 0; // 開始角度
endP = 360; // 終了角度
passData = [];
count = 0;
for (i=startP; i<=endP; i+=step)
{
r = i * Math.PI / 180;
y = Math.sin(r) * h;
x = i * w;
passData[count++]= [x, y];
}
docObj = app.activeDocument;
pObj = docObj.rectangles.add();
pObj.geometricBounds = [0,0,0,0];
pObj.paths[0].entirePath = passData;
pObj.paths[0].pathType = PathType.openPath;


InDesign CS2の場合はESTK (Extend Script ToolKit) から実行させて数学曲線を描かせることができます。以下のファイルの一番最初の行で実行するファイルのパス名を指定します。ESTKから実行ボタンをクリックするとアクティブになっているInDesignのドキュメントに数学曲線が描かれます。

fileObj = new File("/sample1.js");
flag = fileObj.open("r");
if (flag == true)
{
scrt = fileObj.read();
indesign4.executeScript(scrt);
}


indesign4がInDesign CS2を示しています。4の数字はInDesign CS2はバージョン4なので、この値になります。InDesign CS3が出ればindesign5になります。バージョンが指定できるので、特定のInDesignに対して処理することができます。




[サンプルをダウンロード]