2008年11月19日水曜日

Illustartor→InDesign間でBridgeTalk

IllustratorのvisibleBoundsとgeometricBoundsが、yが上に向かって増える仕様なのでInDesignと合わない。むかついたので、腹いせにBoundsをInDesign風に置き換えるfunctionを書いた。
#target "Illustrator"

forIndBounds=function(bounds){
var h=app.activeDocument.height;
var ary=[h-bounds[1],bounds[0],h-bounds[3],bounds[2]];
return ary;
};

//AIの場合は単位を設定しても常にポイントでくる
var selObj = app.activeDocument.selection;
for(var i=0;i<selObj.length;i++){
var aivb=selObj[i].visibleBounds;
var aigb=selObj[i].geometricBounds;
};

ただ、これだけではInDesignに流用は全くできない。
せっかくならアプリ間連携してInDesignで直接テキストフレーム生成できるといいよね?
そういうわけで余計な苦労をはじめるのだ。

とりあえず拾ったgeometricBoundsを全部Arrayにつっこむ。
そしてInDesignに渡す方法を考える。
illustrator13.executeScriptの正体 - なにする?DTP WEB
↑ここの記事で、AdobeCS間で通信するメソッドがあるのを知った。
indesign5.executeScript("alert(\"こんにちはInDesign\")");

だけども、scriptがレアなままでは渡せない、一度Stringになっている必要がある。
変数はどうやって渡すの?
同じブログの記事で、executeScriptの正体はBridgeTalkだと知る。
BridgeTalkって何? - なにする?DTP WEB
BridgeTalk!!

それを使って、functionと変数をなんとか渡そうとしてるうちに、それもfunctionになった。
とりあえず、InD側の単位は全部ポイントに合わせ、線幅や色も決めうち。
あっはっは!

0 件のコメント: