あ、よろこんで補足します。
CCでもCSでもない、もっと昔の6.0(日本語版は5.5Jが最終)までは左下がルーラー原点でした。
それが7.0から「Photoshopに合わせようぜー」と言ったかどうか、それ系の理由で左上に変更されました。
でもそれは外見上のことで、中での座標管理はプラスマイナスおよび座標原点は以前のままなのです。ここまではTen Aさんも言われてます(書きたかったのでわざわざ書いてしまいましたが)。
CS4以降はマルチアートボードが実装され、ますますややこしくなりました。
こんなかんじですね。
(※瞬間的に掲示板の不具合が起きているようで画像の配置ができないため、添付ファイルを参照してください…)
スクリプトによる座標の原点はアートボード左下に合致していますが、正確には「ウィンドウ定規」が原点となっています。複数のアートボードがあっても原点は常に1つです。
ウィンドウ定規の確認・設定は、ドキュメントのルーラーを右クリックで切り替えることができます。
(※添付画像)
以上が「何故」への回答です。
・対象アートボードのartboardRectから左上座標を算出し、そこをルーラー原点に設定する
var doc = app.activeDocument;
var aab = doc.artboards[doc.artboards.getActiveArtboardIndex()]; //アクティブアートボード
var rect = aab.artboardRect;
doc.rulerOrigin = [0, rect[1] - rect[3]]; //ウィンドウ定規の原点をアートボード左上にセット
プラマイが反転するのは直りませんので、
出力時だけ、値 * - 1 するのが妥当でしょう。
原点を変更したくない場合は
・なんかもうがんばって毎回計算する(関数を通す)
となります。これも一回書いてしまえばあとは使いまわせます。
なお、すでにお気づきと思いますが、スクリプトで扱う距離はすべてPoint値です。UI上でミリメートルでも、いつでもポイントの単位で格納されています。
近似値になりますが、
function mm_to_pt(val){
return val / 72 * 25.4;
}
function pt_to_mm(val){
return val / 25.4 * 72;
}
などでしのいでいます。
Illustratorの標準パネル上の値はPoint値の小数第4位を四捨五入してあれこれしているので完全に一致させるにはもうちょっとひねらないとだめですが。