まず、よく使用されるサンプルを使い、LabTalkスクリプトを実行する方法を紹介します。 この例ではLabTalkコマンドtypeを使用します。なお、OriginのLabTalkコマンドは大文字と小文字を区別しません。
type "Hello World"
コマンドは一意である限り省略可能です。次の2つとも動作します。 typ "Hello Word"
ty "Hello World"
|
では、スクリプトウィンドウで複数の行を実行する方法を確認しましょう。
type "The current workbook is %h"; type "This book has $(page.nlayers) sheet(s)"; type "There are $(wks.ncols) columns in the active sheet";
The current workbook is Book1 This book has 1 sheet(s) There are 2 columns in the active sheet
上記の例の場合、%Hという文字列レジスタを使用しました。これは現在アクティブなウィンドウ名(ワークブック、行列、グラフのいずれか)を保持します。そして、LabTalk オブジェクトのpageとwksを使用し、ブックのシートの数と、シート内の列数を取得しました。$()は、置換表記の1つで、()内の変数を評価し、その値を返すようOriginに通知します。
スクリプトウィンドウに複数行のスクリプトを入力する場合、
|
= 記号は、通常、左辺と右辺を持ち、代入演算子として使われます。右辺が無い場合、インタプリタが=の左側(左辺)の式を評価し、スクリプトウィンドウに結果を出力します。
左に評価用の数式を表示し、結果をインタラクティブに出力します。
3 + 5 =
Originは計算を行い、結果を次の行に出力します。
3 + 5 = 8
出力文字列レジスタとOriginオブジェクトのプロパティ
%H =; //現在のウィンドウ名 wks.ncols=; //列数 wks.col1.name$=; //第一列のショートネーム
現在のウィンドウが1シート2列を持つBook1の場合、上記のスクリプトを実行すると以下のように出力されます。
Book1 wks.ncols=2 A
以下のサンプルでは、LabTalkでの変数の考え方を説明します。変数名は大文字と小文字を区別しません。スクリプトウィンドウに次の代入文を入力します。
double A = 2
これにより変数Aを作成し、Aに2が割り当てられます。そして、変数Aに対してPI(Originで定義される定数)を掛けるなどの算術演算を行い、変数Aに再割り当てすることができます。
A = A*PI
現在のAの値を表示するには、次のように入力します。
A =
Enterキーを押すと、次のように値が返ってきます。
A = 6.2831853071796
変数や変数の値のリストを見るListコマンドもあります。以下のコマンドを入力してEnterを押します。 list Originは、LabTalkの変数と関数ダイアログを開き、Originの変数をすべて表示します。 また、特定のタイプの変数を取得することもできます。 list v これは、数値変数をリストします。 |
newbook; //ワークブックを作成 wks.ncols=3; //ワークシートを3列設定
col(B)=2*col(A); //col(B)の値をcol(A)で設定
//Y列をあらかじめ選択 plotxy; //選択されたY列を対応するXデータに対してプロット
layer.x.from=5; //X 軸の開始値を設定
先程のサンプルでは、スクリプトをスクリプトウィンドウからスクリプトを実行しました。Originには他にもLabTalkスクリプトを整理して実行する機能があります。詳細については LabTalk スクリプトの実行とデバッグの章を確認してください。ここでは、スクリプトを実行するメソッドをいくつか確認します。(1)カスタムルーチンツールバーボタン、(2)カスタムメニューアイテム、(3)グラフページ内のボタンを紹介します。
Originには、スクリプトを保存し、ツールバーのボタンを押すだけで実行する便利な方法があります。
[Main] type -b $General.Userbutton;
これを次の行で置き換えます。
[Main] type -b "Hello World";そして、コードビルダウィンドウの保存ボタンをクリックします。
これにより、OriginはHello Worldのテキストを表示しますが、ここではtypeコマンドに-bスイッチが付いているので、ポップアップウィンドウに表示されます。
LabTalkスクリプトはカスタムメニューアイテムから実行できます。
type -b "Hello World";
Originはグラフやワークシートにボタンを追加する事ができ、そのボタンを押す事でLabTalkスクリプトの実行が可能です。これにより、スクリプトを特定のプロジェクトやウィンドウに保存できます。
type -b "Hello World";
ここで紹介するスクリプトサンプルでは、インポートとデータ処理に関連する特定のシナリオをステップごとに実行し、プロジェクトを保存します。このサンプルでは、いくつかのLabTalk言語、例えばコマンド、オブジェクト、Xファンクションに焦点を当てています。これらの言語についての詳細は、この後に続く章で説明します。
NOTE: ここでは、コマンド文を実行するためにスクリプトウィンドウを使用します。コードの1行分だけを実行する場合、;は入力せずに、Enterキーを押してください。複数行にわたるコードの場合、各行の末尾に;を入力してからEnterを押すと、そのまま入力を続ける事ができます。全ての行を入力後、行を全選択してEnterキーを押すと実行します。
それではdocコマンドと-nスイッチを使用して、新しいプロジェクトを始めましょう。現在のプロジェクトを保存する必要がある場合、このコマンドはユーザに保存をするように促します。
doc -n
サンプルフォルダからデータファイルをインポートしましょう。インポートするファイルを参照するために、Xファンクションdlgfile を使用します。
dlgfile gr:=ASCII
インストールフォルダの、\Samples\Import and Export サブフォルダから、S15-125-03.datを選択し、開くをクリックします。
上記操作により、ファイルのパスをロードし、fname$変数にファイル名が入力されます。この変数の値を確認するには、以下のコードを実行します。
fname$=
このファイルをアクティブなワークブックにインポートします。impasc Xファンクションを命名制御オプションと共に使用し、ファイル名はワークブック名に設定されません。
impasc Options.Names.FNameToBk:=0
では、Position列のデータを処理しましょう。まず、範囲変数を定義し、この列を指定します。
range rpos = "Position"
指定する列は、現在のワークシートの4番目の列なので、インデックス番号を使用し、以下のように定義することもできます。
range rpos = 4
次のコマンドを使用すると、範囲変数に現在定義されている値を確認できます。
list a
列データを正規化し、データが0から100までの値をになるようにします。正規化に必要なXファンクションを確認するには、次のコマンドを使用します。
lx *norm*
このコマンドで、Xファンクション名にnormを含むものが表示されます。データを正規化するXファンクションは複数あります。今回の例では、rnormalizeXファンクションを使用します。
このXファンクションのシンタックスに関するヘルプを参照するには、以下のように入力します。
rnormalize -h
これにより、情報が一覧表示されます。あるいは、以下のように入力します。
help rnormalize
これにより、ヘルプファイルが開きます。
では、position列を正規化します。
rnormalize irng:=rpos method:=range100 orng:=<input>
正規化データは同じ列、つまり、元のデータを置き換えて出力されます。これは出力範囲変数 orngを<input>に設定したためです。
Xファンクションを使用する場合、正しい順序で変数値を指定している時は、変数名を入力する必要はありません。つまり、上記コマンドは次のように省略して記述できます。
rnormalize rpos range100 orng:=<input>
ここでもorngを指定した理由は、この変数に先立つ他の変数があるからです。それらの変数は、ここで行いたい計算には関係ないため、今回のコマンドには含めていません。
次に、プロジェクト中のフォルダに変更を加えます。プロジェクトを管理するいくつかのXファンクションがあり、そのうちのいくつかを使用します。
// 現在のワークシート名を取得 string name$ = wks.name$; // ルートフォルダに移動 pe_cd ..; // Folder1をワークシートと同じ名前にする pe_rename Folder1 name$;
では、ルートフォルダにある全てのサブフォルダとワークブックをリストしましょう。
pe_dir
最後に、OriginプロジェクトをUser Filesフォルダに保存します。User Filesフォルダの場所は文字列レジスタ%Yに保存されています。この変数を確認すると、User Filesフォルダの場所を確認できます。
%Y =
saveコマンドを使用し、現在のプロジェクトをMyProject.opjという名前でUser Filesフォルダに保存します。
save %yMyProject
上記コマンドの%YはUser Filesフォルダのパスに置き換えられ、このプロジェクトはこのパスに保存されます。
Originのメニューコマンドやツールバーボタンなど、GUIの機能はLab Talkのスクリプトで実行することができます。次の方法で、スクリプトを確認できます。
これは、自分でスクリプトを作る時に便利です。
Origin 2024b以降CTRL+SHIFTによるミニツールバーボタンスクリプトのコピーが可能です。 |
すると、次の2つが実行されます。
Menu id=33248 (0x81e0) run.section(Plot,Scatter)
このスクリプトの情報をもとに、自分で折れ線グラフのスクリプトを作成できます。このスクリプトの動作を確認するには、行番号の入った2列がアクティブなことを確認して、スクリプトウィンドウを開き(ウィンドウ: スクリプトウィンドウ)、次のいずれかを入力してエンターキーを押します。
menu -e 33248
run.section(Plot, Scatter)
詳細は、次のトピックをご覧ください。
LabTalkスクリプトガイドの残りの項目を学習することが重要です。 上述の例は、表面的なものですが、LabTalkの学習を始めるにあたっては十分な情報といえます。次の章では、LabTalkを学ぶ上で便利なリソースの一覧を表示します。