OriginCベースのLabTalk関数共有方法

イントロダクション

このチュートリアルでは、OPXファイルとして他のユーザに配布されたコードを共有する方法を紹介しています。このサンプルでは、Origin Cファイルのみが配布されています。しかし、OPXによる配布は、プロジェクトファイル、テンプレート、ツールバーを含む任意のファイルタイプを含めることができます。

チュートリアル

以下でOriginCコードを他のユーザに配布する方法を示します。このサンプルでは、ユーザファイルフォルダ(UFF)にある、フォルダ(MyFunctions)内のファイル(MyCode.c) のOrigin-C関数をパッケージします。

  1. ファイルの場所を作成

    ファイルのソースパスは、OPXが対象とする任意のコンピュータにおいて、利用可能である必要があります。一番簡単な方法は、OriginのUFF内のサブフォルダを使用することです。すると、UFFの任意のファイルやフォルダを配布用のOPXファイルに追加できます。それでは、UFF内にMyFunctionsというサブフォルダを作成します。

  2. ファイルをソースパスにコピーする

    前の操作で作成したサブフォルダに、パックする全てのファイルをコピーします。ここでは、1つのCファイル (MyCode.c)を置きます。このファイルの関数は、以下の通りです。

    void get_data_from_wks()
    {
        Worksheet wks = Project.ActiveLayer();
        if( !wks )
        {
            out_str("Please keep a worksheet active with data");
            return;
        }  
     
        // 以下の設定でrangeをすべてのワークシートとしてセットします。
        // インデックスオフセットは0、-1は行/列の最後を意味します。
        // ワークシートのサブレンジを指定するために、r1, c1, r2, c2 を変更します。
        // 例えば、 r1 = 0, c1 = 1, r2 = -1, c2 = 2 とし、 
        // 列2から3び全ての行を選択します。
        int r1 = 0; // 第1行
        int c1 = 0; // 第1列
        int r2 = -1; // 最後の行
        int c2 = -1; // 最後の列
     
        // ワークシートすべてのデータからデータ範囲のオブジェクトを構築
        DataRange dr;
        dr.Add("X", wks, r1, c1, r2, c2); 
     
        // 1列ずつワークシートからベクトルにデータを取得  
        matrix mData; 
        dr.GetData(mData); // 全てのデータを行列に取得
     
        for(int nColIndex = 0; nColIndex < mData.GetNumCols(); nColIndex++)
        {
                vector vOneCol;
                mData.GetColumn(vOneCol, nColIndex);
     
                double min, max;
                vOneCol.GetMinMax(min, max);
     
                printf("Maximum value of %d column = %f\n", nColIndex+1, max);
        }  
    }
  3. パッケージを作成

    ツール:パッケージマネージャを選択してパッケージマネージャを開きます。そして、次の図のように、ダイアログの設定を行います。

    Shared OC LT tutorial package-vNext.png

    • モジュール名は、アンインストールの際パッケージの名前として表示されます。
    • バージョンは、パッケージファイルが要求するOriginの最小バージョンを入力します。8.0SR6などではなく、8.0988といったバージョン番号を入力します。
    • Origin Cソースファイルをシステムフォルダワークスペースにするために、LabTalkスクリプトインストール後内で run.addoc() メソッドを使用します。このサンプルでは、以下を入力します。
    run.addoc(%YMyFunctions\MyCode.c);
            
    • ファイルの追加またはフォルダの追加をクリックして必要に応じてファイルをブラウズし、追加します。ここでは、UFFのサブフォルダ (MyFunctions) にブラウズし、Cファイル (MyCode.c)を追加します。すると、UFFのパスがソースパスとして表示され、下部パネルにファイルがリストされます。
  4. パッケージの保存

    パッケージマネージャダイアログのメニューファイル:保存を選択します。名前を付けて保存ダイアログが開くので、パッケじファイルの名前を入力し(ここでは、MyCodeとしています)、OPXファイルとして保存します。

  5. パッケージを配布

    保存したOPXファイルを他のユーザに送ります。パッケージファイルを取得したユーザは、OPXファイルをOriginのワークスペースにドラッグアンドドロップすれば、インストールでき、Cファイル内の関数を使用可能になります。

    • MyCode.opx をOriginにドラッグアンドドロップでインストールします。インストール後、MyCodeで定義した関数get_data_from_wksは、以下のようなLabTalkコマンドで利用可能です。
    get_data_from_wks;