Origin CでXファンクションを呼び出す

Originは様々なタスクを実行するXファンクションと共に出荷されます。XファンクションはLabTalkとOriginCの両方から呼び出すことができます。このセクションはOriginCのXFBaseクラスを使用してXファンションを呼び出す方法を示します。この仕組みはXファンクションをもう1つ、別のXファンクションで呼び出す時に使用できます。

XFBaseクラスはOrigin CシステムフォルダにあるXFBase.hヘッダファイルで宣言されます。XFBase.hヘッダファイルはOrigin.hヘッダファイルに含まれている物ではありません。そして、他のXFBase クラスを使用するOrigin Cとは別に含まれる必要があります。

#include <XFBase.h>

Origin Cから impFile Xファンクションを呼び出す

以下のOrigin CコードはファイルをOriginにインポートする一般的な何数を定義します。関数は2つの引数、データファイル名とインポートファイル名を使用します。関数はまずXFBaseクラスのインスタンスを作成します。これは呼び出されるXファンクションの名前を元に作成されます。この場合、Xファンクション名は「impFile」です。それから、Xファンクションの引数を SetArg メソッドでセットし、最終的にXファンクションをEvaluateメソッドで呼び出します。

bool call_impFile_XF(LPCSTR lpcszDataFile, LPCSTR lpcszFilterFile)
{
    string strDataFile = lpcszDataFile;
    string strFilterFile = lpcszFilterFile;
 
    // XFBaseのインスタンスをXファンクション名を使って作成
    XFBase xf("impFile");
    if (!xf)
        return false;
 
    // 「fname」引数をセット
    if (!xf.SetArg("fname", strDataFile))
        return false;
 
    // 「filtername」引数をセット
    if (!xf.SetArg("filtername", strFilterFile))
        return false;
 
    // XFBaseの「Evaluate」メソッドを呼び出し、Xファンクションを実行
    if (!xf.Evaluate())
        return false;
 
    return true;
}

以下のOrigin Cコードは上記で定義したcall_impFile_XF関数をどのように呼び出すのか示します。イメージファイルをインポートするために呼び出します。

// Originのサンプルフォルダにある、Carビットマップをインポート
string strImageFile = GetAppPath(TRUE) +
    "Samples\\イメージ処理と分析\\Car.bmp";
 
// Lets import the bitmap using the Image import filter.
string strFilterFile = GetAppPath(TRUE) + "Filters\\Image.oif";
 
// impFile Xファンクションを呼び出す一般的な関数を呼び出す
call_impFile_XF(strImageFile, strFilterFile);