LabTalkを使いましょう

Hello World

まず、よく使用されるサンプルを使い、LabTalkスクリプトを実行する方法を紹介します。

  1. Originを開き、ウィンドウメニューからスクリプトウィンドウを選択します。 スクリプトウィンドウが開きます。
  2. このウィンドウで次のように入力し、Enterキーを押します。
    type "Hello World"

    ここでは、LabTalkコマンド typeを使用しました。コマンドは2文字の省略形でも記述できます。その場合、次のコマンドを実行してください。

    ty "Hello World"

Originは、コマンド行の下に直接Hello Worldという文字を出力します。

エンターキーを押すと、Originがセミコロン;を行の最後に入力し、そのスクリプトを実行します。
スクリプトを繰り返し実行するには、行内にカーソルを移動してエンターキーを押します。カーソルを行の最後に移動する場合、Enterを押してスクリプトを実行する前に、セミコロン(;)を削除する必要があります。

では、スクリプトウィンドウで複数の行を実行する方法を確認しましょう。

  1. Origin内でワークブックがアクティブな状態で スクリプトウィンドウを開きます。
  2. スクリプトウィンドウに次の3行を入力します。各行の最後に ; を入力してから、Enterキーを押します。これにより、それぞれの行が実行されません。後から全ての行を一度に実行します。
    type "The current workbook is %h";
    type "This book has $(page.nlayers) sheet(s)";
    type "There are $(wks.ncols) columns in the active sheet";
  3. マウスでドラッグし、すべてのスクリプト行を選択します。キーボードを使用する場合、スクリプトの最初にカーソルを合わせ、Shiftキーを押しながら矢印キーを使用して全ての行を選択します。
  4. 選択した全てのスクリプト行を実行するためにEnterキーを押します。現在どのワークブックがアクティブであるかによって、スクリプトウィンドウに出力される情報は異なりますが、以下のような出力になります。
    The current workbook is Book1
    This book has 1 sheet(s)
    There are 2 columns in the active sheet

上記の例の場合、%Hという文字列レジスタを使用しました。これは現在アクティブなウィンドウ名(ワークブック、行列、グラフのいずれか)を保持します。そして、LabTalk オブジェクトpagewksを使用し、ブックのシートの数と、シート内の列数を取得しました。$()は、置換表記の1つで、()内の変数を評価し、その値を返すようOriginに通知します。

スクリプトウィンドウに複数の行を入力する場合、各行の最後に ; を追加してからEnterを押すと、その行を実行せずに改行できます。これにより、それぞれの行で実行せずに複数行入力できます。そして、全行を選択してEnterキーを押すことで一括で実行できます。

記号を使った素早い出力

スクリプトウィンドウは対話形式で結果を返す計算機のように使うことができます。スクリプトウィンドウに、以下のスクリプトを入力し、Enterキーを押します。

3 + 5 =

Originは計算を行い、結果を次の行に出力します。

3 + 5 = 8

= 記号は、通常、左辺と右辺を持ち、代入演算子として使われます。右辺が無い場合、インタプリタが=の左側(左辺)の式を評価し、スクリプトウィンドウに結果を出力します。

以下のサンプルでは、LabTalkでの変数の考え方を説明します。スクリプトウィンドウに次の代入文を入力します。

double A = 2

これにより変数Aを作成し、Aに2が割り当てられます。そして、変数Aに対してPI(Originで定義される定数\;\pi)を掛けるなどの算術演算を行い、変数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には、スクリプトを保存し、ツールバーのボタンを押すだけで実行する便利な方法があります。

  1. キーボードでCtrl+Shiftキーを押しながら、標準ツールバーカスタムルーチンボタン Button Custom Routine.png を押します。
  2. これによりOriginの標準のスクリプトエディタであるコードビルダが開きます。 編集しているファイルは、Custom.ogsです。 コードには、1つのセクション [Main]があり、以下のスクリプト1行を含みます。
    [Main]
    type -b $General.Userbutton;

    これを次の行で置き換えます。

    [Main]
    type -b "Hello World";
    そして、コードビルダウィンドウの保存Button Save Project.pngボタンをクリックします。
  3. Originのウィンドウに戻り、 Button Custom Routine.pngボタンをクリックします(キーボードショートカット: ALT + F5)。

これにより、OriginはHello Worldのテキストを表示しますが、ここではtypeコマンドに-bスイッチが付いているので、ポップアップウィンドウに表示されます。

カスタムメニューアイテム

LabTalkスクリプトはカスタムメニューアイテムから実行できます。

  1. メニューから環境設定:カスタムメニューオーガナイザを選択してカスタムメニューオーガナイザダイアログを開きます。
  2. カスタムメニュー追加タブを開きます。左側パネルの内部を右クリックし、新しいメインポップアップをコンテキストメニューから選択します。
  3. 右側のパネルでは、ポップアップテキストに名前、例えばMy Menuを入力してから編集ボックスの外側をクリックします。
  4. 左側パネルからMy Menuを選択してから右クリックし、項目の追加をコンテキストメニューから選びます。
  5. 右側のパネルでは、項目テキストHello Worldに変更し、次のスクリプトをLabTalkスクリプトボックスに追加します。
  6. type -b "Hello World";
  7. 閉じるボタンをクリックした後、ポップアップするウィンドウではYesをクリックして、メニューの変更をデフォルトメニューに設定します。開いたファイルダイアログでは、保存ボタンを押し、デフォルト名でデフォルトフォルダ(User Filesフォルダ)に保存します。
  8. これで新しいメニュー(My Menu)がメニューバーのウィンドウメニューの左側に追加されます。この新しいメニューアイテムをクリックし、Hello Worldの項目をドロップダウンから選択します。Hello World と表示されたダイアログがポップアップします。

グラフ内のボタン

Originはグラフやワークシートにボタンを追加する事ができ、そのボタンを押す事でLabTalkスクリプトの実行が可能です。これにより、スクリプトを特定のプロジェクトやウィンドウに保存できます。

  1. 標準ツールバー新規グラフボタン(Button New Graph.png)をクリックし、新しいグラフを作成します。
  2. プロット操作・オブジェクト作成ツールバーの中のテキストツールボタン(Button Text Tool.png)をクリックし、作成したグラフ上でクリックしてMy Button と入力します。テキストの入力が終わったら、テキストの外側をクリックして編集を終了します。
  3. テキストを右クリックしてコンテキストメニューを表示し、プロパティを選択してテキストオブジェクトダイアログを開きます。
  4. ダイアログでは、のあとでスクリプトを実行のドロップダウンリストから、ボタンアップを選択し、以下のスクリプトを編集ボックスに入力します。
  5. type -b "Hello World";
  6. OKをクリックして、ダイアログを閉じます。これで、テキストラベルがボタンになりました。ボタンをクリックします。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フォルダのパスに置き換えられ、このプロジェクトはこのパスに保存されます。

CTRL + SHIFTを利用してメニューコマンドとツールバーボタンのスクリプトをキャプチャする

Originのメニューコマンドやツールバーボタンなど、GUIの機能はLab Talkのスクリプトで実行することができます。次の方法で、スクリプトを確認できます。

  1. キーボードのCTRL + SHIFTを押しながら、
  2. メニューコマンドかツールバーボタンをクリックします。

これは、自分でスクリプトを作る時に便利です。

サンプル

  1. 新規ワークブックを開き、列AとBを選択・右クリックして、列値の一律設定: 行番号を選択します。
  2. ワークシートがアクティブになっていることを確認して、CTRL + SHIFTを押して散布図ツールバーボタンButton Scatter.pngをクリックします。(または、作図 > 2D: 散布図: 散布図を選択します。)

すると、次の2つが実行されます。

  • Code Builder(Originの開発環境)が開き、Plot.ogs(Originのシステムスクリプトファイル)のツールバーボタンやメニューコマンドの実行箇所が表示されます。
  • スクリプトウィンドウにメニューIDとrun.sectionコマンドを書き出します。
Menu id=33248 (0x81e0)
run.section(Plot,Scatter)

このスクリプトの情報をもとに、自分で折れ線グラフのスクリプトを作成できます。このスクリプトの動作を確認するには、行番号の入った2列がアクティブなことを確認して、スクリプトウィンドウを開き(ウィンドウ: スクリプトウィンドウ)、次のいずれかを入力してエンターキーを押します。

menu -e 33248
run.section(Plot, Scatter)


詳細は、次のトピックをご覧ください。

これから行うこと

LabTalkスクリプトガイドの残りの項目を学習することが重要です。 上述の例は、表面的なものですが、LabTalkの学習を始めるにあたっては十分な情報といえます。次の章では、LabTalkを学ぶ上で便利なリソースの一覧を表示します。