Share-OCBased-LT-Func
このチュートリアルでは、OPXファイルとして他のユーザに配布されたコードを共有する方法を紹介しています。このサンプルでは、Origin Cファイルのみが配布されています。しかし、OPXによる配布は、プロジェクトファイル、テンプレート、ツールバーを含む任意のファイルタイプを含めることができます。
以下でOriginCコードを他のユーザに配布する方法を示します。このサンプルでは、ユーザファイルフォルダ(UFF)にある、フォルダ(MyFunctions)内のファイル(MyCode.c) のOrigin-C関数をパッケージします。
ファイルのソースパスは、OPXが対象とする任意のコンピュータにおいて、利用可能である必要があります。一番簡単な方法は、OriginのUFF内のサブフォルダを使用することです。すると、UFFの任意のファイルやフォルダを配布用のOPXファイルに追加できます。それでは、UFF内にMyFunctionsというサブフォルダを作成します。
前の操作で作成したサブフォルダに、パックする全てのファイルをコピーします。ここでは、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); } }
ツール:パッケージマネージャを選択してパッケージマネージャを開きます。そして、次の図のように、ダイアログの設定を行います。
run.addoc(%YMyFunctions\MyCode.c);
パッケージマネージャダイアログのメニューファイル:保存を選択します。名前を付けて保存ダイアログが開くので、パッケじファイルの名前を入力し(ここでは、MyCodeとしています)、OPXファイルとして保存します。
保存したOPXファイルを他のユーザに送ります。パッケージファイルを取得したユーザは、OPXファイルをOriginのワークスペースにドラッグアンドドロップすれば、インストールでき、Cファイル内の関数を使用可能になります。
get_data_from_wks;