グラフ/データ/ビデオ のエクスポート一般的なエクスポート
グラフのエクスポート
プロジェクトエクスプローラーのフォルダ階層をエクスポートパスとして使用してグラフをエクスポート
この例では、プロジェクトのフォルダ構造に従って同じサブフォルダ階層を作成し、グラフウィンドウのロングネームを使用した名前のグラフをフォルダにエクスポートします。
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.0SR0
この例では新しい行列を作成し、値をセットして、等高線グラフとしてプロットします。この処理は50回ループし、毎回行列値が調整され、グラフを更新します。生成されたそれぞれのグラフは、1フレームとして動画に追加されます。完了すると、50フレームの動画が作成されます。
このサンプルは、LabTalkスクリプトで、リアルタイムでグラフを変更し、 vw_(オブジェクト) を使って動画を作成する方法を示します。"d:\test.avi"はあなたのシステムに応じて変更してください。
// 行列ウィンドウの作成
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つのcodecを使用可
// すべてのcodecがすべてのコンピュータで利用できるわけではない
// いくつかのサンプル:
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'); // シネパック
//int codec = vw.FourCC('F', 'M', 'P', '4'); // MPEG4
// ビデオライターの作成(fileName, codec, framesPerSec, width, height)
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 表をご覧ください。
|