グラフ/データ/ビデオ のエクスポート
一般的なエクスポート
グラフエクスポート
プロジェクトエクスプローラーのフォルダ階層をエクスポートパスとして使用してグラフをエクスポート
この例では、プロジェクトのフォルダ構造に従って同じサブフォルダ階層を作成し、グラフウィンドウのロングネームを使用した名前のグラフをフォルダにエクスポートします。
Origin2016以降での方法
doc -e P
{
if(page.IsEmbedded==0&&exist(%H)!=11) {//埋め込みグラフやレイアウトウィンドウはスキップ
expGraph type:=jpg filename:="<long name>" path:="<Project Folder><PE Path>" theme:=<Original> tr.Margin:=2;
}
}
Origin2015以前での方法
doc -e P //すべてのグラフでループします
{
if(page.IsEmbedded==0&&exist(%H)!=11) //埋め込まれたグラフまたはレイアウトウィンドウをスキップします
{
string proj_path$=%X; //保存されたプロジェクトの
//"the project path is:"+proj_path$;を入力
window -a %H;
string graph_fullPath$;
pe_path path:=graph_fullPath$; //グラフのプロジェクトエクスプローラーパスを取得;
%A=graph_fullPath$;
string graph_path$=%[%A,>2]; //パスからルートフォルダ名を削除
//"the graph path is:"+graph_path$;を入力
// "graph title is:"+%H;を入力
string path$=proj_path$+graph_Path$; //上記の文字列を連結してエクスポートフォルダを作成;
path.Replace("/","\");
expGraph type:=jpg filename:="<long name>" path:=path$ theme:=<Original> tr.Margin:=2;
};
}
データのエクスポート
すべてのフォルダ内のすべてのブックにあるすべてのワークシートをテキストファイルとしてエクスポート
このサンプルは、プロジェクト内の全ブックの全シートを"WorkbookName_WorksheetName"という名前のファイルとして指定パスにエクスポートします。
fdlog.openpath(B); // ファイルを保存するディレクトリを指定
doc -e W{ //プロジェクト内の全ブックでループ
doc -e LW // ブック内の全シートでループ
{ string temp$ = wks.name$; // ワークシートショートネームを取得 // string temp$ = wks.longname$; // ワークシートロングネームを取得するためにこの行を実行
expASC type:=text path:=%B%H_%(temp$) shortname:=1; // 列名がエクスポートされた.txtファイルとしてファイルをエクスポート
};
}
現在アクティブなフォルダでループするには、doc -e Wをdoc -ef Wに置き換えます。Originのさまざまなオブジェクトでループする他の例についてはこちらをご覧ください。
この例のバリエーションでは、すべてのワークシート列を.datファイルにエクスポートし、プロジェクトのプロジェクトエクスプローラのフォルダ構造を使用してそれらを整理します:
string fname$ = "%YMap Data.opju";
doc -o %(fname$); //User Files\Map Data.opju を開きます
doc -e W{ // プロジェクト内の全ブックでループ
doc -e LW // ブック内の全シートでループ
{
string temp$ = wks.name$; // ワークシートのショートネームを取得
// string temp$ = wks.longname$; // ワークシートロングネームを取得するためにこの行を実行
expASC path:="<Project Folder><PE Path>%(temp$)" shortname:=1; // プロジェクトエクスプローラのフォルダ構造を使ってファイルを整理しエクスポートします
};
}
ビデオのエクスポート
必要なOriginのバージョン: 9.0 SR0以降
この例では新しい行列を作成し、値をセットして、等高線グラフとしてプロットします。これを50回繰り返し、その都度、行列値を調整してグラフを更新します。作成されたグラフは毎回動画の1フレームとして追加されます。完了したら、50フレーム分の動画が作成されます。
このサンプルでは、リアルタイムにグラフを変更する方法と、LabTalkスクリプトにvw_オブジェクトを使用して動画を作成する方法を紹介します。(Cドライブ直下のtempというフォルダに保存するようにしています。ない場合は作成してから実行してください)
// 行列ウィンドウの作成
string matbk$;
newbook mat:=1 result:=matbk$;
// シート内で行列オブジェクトを指す
range rmat = [matbk$]1!1;
// 次数の値をセットし、等高線を作成
mdim c:=100 r:=100;
double a=1;
string formula$; formula$="i*sin(a*x)-j*cos(y/a)";
msetvalue im:=rmat formula:=formula$;
wo -p 226 contour;
// 等高線をカスタマイズ
layer.cmap.zmin=-250;
layer.cmap.zmax=250;
layer.cmap.nummajorlevels=10;
layer.cmap.numminorlevels=9;
layer.cmap.setlevels(1);
layer.cmap.updatescale();
layer.cmap.load(Rainbow.PAL);
// codecを選択4文字コードで指定
// (マシンにより利用可能なコーデックが異なるので注意)
// 以下はサンプル
int codec = vw.FourCC(0, 0, 0, 0); // 無圧縮
//int codec = vw.FourCC(1, 0, 0, 0); // Microsoft連長圧縮
//int codec = vw.FourCC('c', 'v', 'i', 'd'); // Cinepak
//int codec = vw.FourCC('F', 'M', 'P', '4'); // MPEG4
// ビデオを作成(ファイル名, コーデック, フレーム毎秒, 幅, 高さ)
int err = vw.Create(d:\test.avi, codec, 15, 1024, 768);
if( 0 == err )
{
for( a=1; a<=1.5; a+=0.01 )
{
%C -= 1;
formula$="i*sin(a*x)-j*cos(y/a)+grnd()";
msetvalue im:=rmat formula:=formula$;
// グラフウィンドウの再描画を待つ
// これにより動画ファイル作成中に動画を確認できる
sec -pw %h;
// グラフを1つのフレームとして動画に書き込む
err = vw.WriteGraph();
if( err )
break;
}
// リリース
vw.Release();
if( err )
type "WriteGraph error $(err)";
}
else
type "VideoWriter Create error $(err).";
Note:codecについて詳しく知りたい場合にはFourCC 表をご覧ください。
|