| グラフから点を取得Getting-Points-from-Graph Originのプロット操作・オブジェクト作成ツールバのどのボタンも、スクリプトから初期化でき、3つはマクロとリンクして、プログラミングすることができます。
 ツールをプログラミングするには、pointproc マクロを定義して、適切なコードを実行します。pointproc マクロは、ユーザがダブルクリックまたはシングルクリックしてEnterキーを押すときに実行します。
 スクリーンリーダこのスクリプトは、スクリーンリーダツールを使って、グラフにラベルを配置します。
 dotool 2;  // スクリーンリーダツールを開始
dotool -d; // シングルクリックをダブルクリックのように動作させる
// ここで'''pointproc''' マクロを定義
def pointproc {
    label -a x y -n MyLabel Hello;
    dotool 0;  // ツールをポインタにリセット
    done = 1;  // 変数を終わりまで無限ループを許可するようにセット
}
// ツールを使うときスクリプトは停止しない 
// そのため、これ以上の実行を止める必要がある
// この無限ループはユーザが点を選択するのを待つ
for( done = 0 ; done == 0; ) sec -p .1; 
// A .1 秒の遅延によりループに何かを与える
type Continuing script ...; 
// マクロが実行されると無限ループは解放されるデータリーダデータリーダツールは、スクリーンリーダに似ていますが、カーソルは実際のデータポイントで固定されます。
定義されると、ユーザがEsc キーを押すか、ポインタツールをクリックして、データリーダを停止する場合にquittoolbox マクロが実行されます。
 この例は、グラフウィンドウがアクティブであることが前提で、そのグラフ上の3つのポイントを選択することを待ちます。
 @global = 1;
dataset dsx, dsy;  // XとY値を保持する2つのデータセットを作成
dotool 3;          // ツールを開始
// 各点の選択に対して実行するマクロを定義
def pointproc {
    dsx[count] = x;  //  X座標を取得
    dsy[count] = y;  //  Y座標を取得
    count++;         // 増分をカウント
    if(count == 4) dotool 0;  // 3つの点を持つかどうかを見ることをチェック
    else type -a Select next point;
}
// ユーザがEscキーを押すかポインタツールをクリックすると
// 実行するマクロを定義:
def quittoolbox {
    // Error : Not enough points
    if(count < 4) ty -b You did not specify three datapoints;  
    else
    {
        draw -l {dsx[1],dsy[1],dsx[2],dsy[2]};
        draw -l {dsx[2],dsy[2],dsx[3],dsy[3]};
        draw -l {dsx[3],dsy[3],dsx[1],dsy[1]};
        double ds12 = dsx[1]*dsy[2] - dsy[1]*dsx[2];
        double ds13 = dsy[1]*dsx[3] - dsx[1]*dsy[3];
        double ds23 = dsy[3]*dsx[2] - dsy[2]*dsx[3];
        area = abs(.5*(ds12 + ds13 + ds23));
        type -b Area is $(area);
    }
}
count = 1;  // 初期の点
type DoubleClick your first point (or SingleClick and press Enter);次のサンプルは、Escキー押されるか、ユーザがポインタツールをクリックまで任意のポイントを選択するものです。
 @global = 1;
dataset dsx, dsy;  // XとY値を保持する2つのデータセットを作成
dotool 3;          // ツールの開始
// 各ポイントの選択を実行するマクロを定義
def pointproc {
    count++;         // 増分のカウント
    dsx[count] = x;  //  X座標を取得
    dsy[count] = y;  //  Y座標を取得
}
 
// ユーザがEscキー押すか、ポインタツールをクリックすると 
// 実行するマクロを定義
def quittoolbox {
   count=;
   for(int ii=1; ii<=count; ii++)
   {
      type $(ii), $(dsx[ii]), $(dsy[ii]);
   }
}
count = 0;  // 初期の点
type "Click to select point, then press Enter";
type "Press Esc or click on Pointer tool to stop";
	|  | Enterキーを押してポイントを選択することは、ダブルクリックしてポイントを選択するより確実です。 
 | 
 また、グラフからデータ値を収集する getpts コマンドを使うこともできます。
 データセレクタデータセレクタツールは、データセットの範囲をセットするのに使うことができます。
範囲は開始行番号(インデックス)と終了行番号で定義されます。
データセットの複数範囲を定義でき、Originの分析ルーチンは、これらの範囲を入力に使い、これらの範囲外のデータは除外されます。
 以下は、グラフの範囲を選択させるスクリプトです。
     // ツールの開始
    dotool 4;
    // ユーザが行ったとき実行するマクロを定義
    def pointproc {
        done = 1;
        dotool 0;
    }
    // ループで待ち押すことで完了 
    // (1) Enterキーまたは (2) ダブルクリック
    for( done = 0 ; done == 0 ; )
    {
        sec -p .1;
    }
    // ユーザがツールを終了させると、追加のスクリプトが実行
    ty continuing ..;領域データセレクタ または 領域マスクツール を使うとき、ユーザがEscキーを押すことをきっかけとして、quittoolboxマクロを実行できます。
     // グラフをアクティブにして、領域データ選択ツールを開始
    dotool 17;
    // ユーザが行ったとき実行するマクロを定義
    def quittoolbox {
        done = 1;
    }
    // ループで待ち押すことで完了 ...
    // (1) Escキーまたは (2) ポインタツールをクリック
    for( done = 0 ; done == 0 ; )
    {
        sec -p .1;
    }
    // ユーザがツールを終了させると、追加のスクリプトが実行
    ty continuing ..;Xファンクションを使って、これらの範囲を見つけ、使用することができます。
 // データセット内の範囲を取得
dataset dsB, dsE;
mks ob:=dsB oe:=dsE;
// For each range
for(idx = 1 ; idx <= dsB.GetSize() ; idx++ )
{
    // その範囲に対して曲線以下の積分を取得
    integ %C -b dsB[idx] -e dsE[idx];
    type Area of %C from $(dsB[idx]) to $(dsE[idx]) is $(integ.area);
}
 プロット操作・オブジェクト作成ツールバーのリスト太字はプログラミングで役立ちます。
 
| ツールの番号 | 説明 |  
| 0 | ポインタ - ポインタはマウスのデフォルトの状態で、マウスはセレクタとして動作します。
 |  
| 1 | 拡大 - グラフ上で矩形を選択し、その矩形の範囲の軸で再スケールします。(グラフのみ)
 |  
| 2 | スクリーンリーダ - ページ上のポイントの位置を読み込みます。
 |  
| 3 | データリーダ - ページ上のデータポイントの位置を読み込みます。(グラフのみ)
 |  
| 4 | データセレクタ - データ範囲を示すデータマーカをセットします。(グラフのみ)
 |  
| 5 | マウスで作図 - グラフ上にデータポイントを描画します。(グラフのみ)
 |  
| 6 | テキスト - テキスト注釈をページに追加します。
 |  
| 7 | 矢印 - 矢印をページに追加します。
 |  
| 8 | 曲線矢印 - 曲線矢印をページに追加します。
 |  
| 9 | 直線 - 直線をページに追加します。
 |  
| 10 | 四角形 - 四角形をページに追加します。
 |  
| 11 | 円 - 円図形をページに追加します。
 |  
| 12 | 多角形 - 多角形の図形をページに追加します。
 |  
| 13 | 折れ線 - 折れ線をページに追加します。
 |  
| 14 | 自由閉曲線 - 閉曲線をページに追加します。
 |  
| 15 | 自由曲線 - 自由曲線をページに追加します。
 |  
| 16 | 縮小 - グラフ上のクリックした場所を中心に縮小します。(グラフのみ)
 |  
| 17 | 領域データセレクタ - データ範囲を選択します。(グラフのみ)
 |  
| 18 | 領域マスクツール - データ範囲のポイントをマスクします。(グラフのみ)
 |  |