イラレJavaScript - デフォルト原点とマルチアートボードへの対応案

イラレスクリプトで CS5 のデフォルト原点変更に対応する方法を考えてみた。
最初に原点をアクティブなアートボードの左下に移し、最後に元に戻すというもの。
CS3 以前では、特に原点の位置を変更しない。

Win 版 Illustrator CS, CS3, CS4, CS5 で動作確認。
※ 21:25 少し修正しました。(this.activeDocument となってた箇所を app.activeDocument に訂正)
※ 2013.02.11:〔修正〕this にする必要がないところは var にしました。

// ---------------------------------------------------------
// A fix for the change of the document origin in CS5,
// and for the multi-artboard in CS4 or later.
// This function locates the active artboard's origin on the
// bottom left at first, and restores it at the end.
//
// USAGE:
// var g_origin = Origin();
// ... (do something in legacy style)
// g_origin.restore();

function Origin(){
    var ver15_or_later = (parseFloat(version.substr(0, 2)) >= 15); // CS5 or later
    var ver14 = (version.substr(0, 2) == "14"); // CS4
  
    if(ver15_or_later){
        var saved_coord_system = app.coordinateSystem;
        app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;

        var idx  = app.activeDocument.artboards.getActiveArtboardIndex();
        var ab  = app.activeDocument.artboards[idx];
        
        var o   = ab.rulerOrigin;
        var r   = ab.artboardRect;
        var saved_origin = [o[0], o[1]];
        ab.rulerOrigin = [0, r[1] - r[3]];

    } else if(ver14){
        var o = app.activeDocument.rulerOrigin;
        var saved_origin = [o[0], o[1]];
        app.activeDocument.rulerOrigin = [0, 0];
    }

    this.restore = function(){
        if(ver15_or_later){
            ab.rulerOrigin = saved_origin;
            app.coordinateSystem = saved_coord_system;

        } else if(ver14){
            app.activeDocument.rulerOrigin = saved_origin;
        }
    };

    return this;
}
// ---------------------------------------------------------
var g_origin = Origin();

main();

g_origin.restore();

作ってる最中に、現在公開中のスクリプトは CS4 のマルチアートボードに対応してなかったんだとわかった。
CS4 を入手したのが最近なもので。近いうちに CS5 対応と併せて更新します。