LabTalk変数の値を取得およびセット

Origin Cには、LabTalkの数値および文字列値を取得またはセットしたり、LabTalkスクリプトを実行する機能があります。

LabTalkの数値を取得およびセット

Origin Cのグローバル関数LT_get_var および LT_set_varは、LabTalkの数値を取得およびセットするのに使うことができます。 数値には、変数、システム変数、オブジェクトプロパティが含まれます。 クラスメンバー関数OriginObject::GetProp および OriginObject::SetProp は、オブジェクトプロパティを取得、セットできます。

double dOriginVer;
LT_get_var("@V", &dOriginVer);
printf("Running Origin version %f\n", dOriginVer);

これは、データ表示ウィンドウで使用する最小のフォントサイズをセットする方法です。

LT_set_var("System.DataDisplay.MinFontSize", 12);

LabTalkの変数を一時的にセットし、操作を行い、LabTalk変数を元の値に戻したい場合があります。 これには主に2つの方法があります。最初の方法は、LT_get_var および LT_set_var を使って行うコードです。

double dProgressBar;
LT_get_var("@NPO", &dProgressBar); // 開始値の取得
LT_set_var("@NPO", 0); // 新しい値をセット
//
// 操作を行う
//
LT_set_var("@NPO", dProgressBar); // 開始値に戻す

次の方法は、LTVarTempChange クラスを使う単純な方法です。クラスを使うには、単に変数名と一時的な値を渡すだけです。コンストラクタは開始値をデータメンバーに保存し、変数を一時的な値にセットします。デストラクタは変数をその開始値に戻します。

{
    LTVarTempChange progressBar("@NPO", 0);
    //
    // 操作を行う
    //
}

以下は、線オブジェクトの色を設定、取得する方法です。

//このサンプルはアクティブグラフに線オブジェクトがあると仮定
void SetProp_Ex1(int nColor = 0, string strName = "line")
{
    GraphLayer    gl = Project.ActiveLayer();
    GraphObject    grobj;
    grobj = gl.GraphObjects(strName);
    double vv;
    if(grobj)
    {
        int nn = grobj.SetProp("color", nColor);
        out_int("SetProp return: ", nn);
        out_int("new color: ", grobj.GetProp("color"));
    }
    else
        out_str("no such obj");
}

LabTalkの文字列値を取得およびセット

Origin Cのグローバル関数LT_get_strおよびLT_set_str は、LabTalkの文字列値を取得およびセットするのに使うことができます。 文字列には、変数、文字列置換変数、オブジェクトプロパティが含まれます。クラスメンバー関数OriginObject::GetProp および OriginObject::SetProp は、オブジェクトプロパティを取得、セットできます。

char szCustomDateFmt[200];
LT_get_str("System.Date.CustomFormat1$", szCustomDateFmt, 200);
printf("Custom Date Format 1:  %s\n", szCustomDateFmt);

以下は、データ表示ウィンドウで使用するフォントをセットする方法です。

LT_set_str("System.DataDisplay.Font$", "Courier");

以下は、アクティブブックのアクティブシートの名前を変更する方法です。

LT_set_str("wks.name$", "MySheet");