基板CAD Eagle ULP入門

晴れて正規ユーザー(?)になった訳ですが、単純作業が出てきたので今後も恐らく使うであろうEagleのULP(User Language Program)を勉強してみます。

まずはマニュアルとサンプルの確認から。
マニュアルは恐らく英語版のみ。Eagleのインストールされているディレクトリの、、と思ったらダウンロードしなければなりませんでした。
ftp://ftp.cadsoft.de/eagle/userfiles/doc/ulp_en.pdf

サンプルコードはEagleのインストールされているディレクトリの「ulp」ディレクトリ内の「ex-」で始まるのがサンプルのようです。他のも「動くサンプル」なので、もっと分かるようになったら見てみようと思います。

まずは、お約束の「Hello, World」ですが、一番簡単そうなサンプルコード、ulpディレクトリ内の「ex-dlglist.ulp」を見てみます。
string Text = "This is some text.\nLine 2\nLine 3";
string Text2 = "This is text number 2\nLine 2\nLine 3";
Text2 += "\n...\n...\n...\n...\n...\n...\n...\n...\n";
Text2 += "end of text2.";
int Result = dlgDialog("List-Fenster") {
dlgVBoxLayout {
dlgLabel("&View text 1");
dlgTextView(Text);
dlgLabel("Vie&w text 2");
dlgTextView(Text2);
}
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") dlgAccept();
}
};
if (Result == 0) exit (0);

1~4行目はstring型に文字列を入れたり連結しているようです。「+=」演算子でくっつけられるんですね。
また、クラス(型?)名は小文字始まり、ユーザ変数は大文字始まりのようです。
string Text = "This is some text.\nLine 2\nLine 3";
string Text2 = "This is text number 2\nLine 2\nLine 3";
Text2 += "\n...\n...\n...\n...\n...\n...\n...\n...\n";
Text2 += "end of text2.";

次のブロックは「List-Fenster」というタイトルのダイアログボックスを出して結果をResultに入れよ、というところのようです。よくあるパターンですね。
int Result = dlgDialog("List-Fenster") {

次のブロックは「dlgVBoxLayout」ということで、マニュアルを見ると、「Opens a vertical box layout context. 」縦ボックスレイアウトを描き始めます、というような感じでしょうか。
dlgLabel(“&View text 1”);
ラベルの描画、先頭の&はホットキー用の識別子(?)で、Alt+&に続く文字でそのラベルにフォーカスが当たるようです。(MacOSXの環境なのか、ラベルにフォーカスが当たらないのか、再現されませんでした)

dlgTextView(Text);
テキストビュー、編集不可の複数行テキストを表示します。
(編集可能なのはdlgTextEdit()の模様)

次はほぼ同じなので割愛
dlgLabel("Vie&w text 2");
dlgTextView(Text2);
}

(&がwの前に入っていますね。)
これで「dlgVBoxLayout」ブロック終了、次は「dlgHBoxLayout」ブロックです。横レイアウトボックス開始、とのことですが、違いがよく分かりません。。ちなみにひとつ前のdlgVBoxLayoutをdlgHBoxLayoutにしたところ、テキストビューが横並びになりました。

dlgStretch(1);
これを消してみて上のdlgVBoxLayoutとdlgHBoxLayoutの違いが分かりました。各々のブロック内の並び順のようです。dlgHBoxLayoutブロックが始まってdlgStretch(1);を入れると横方向に伸びる空の要素が入り、その右側にdlgPushButton(“+OK”) dlgAccept();の要素が入るようです。

dlgPushButton(“+OK”) dlgAccept();
プッシュボタンとその後何をするかの定義。+記号はデフォルトボタン(ーはキャンセル)となります。

ということで、HelloWorldをするためには dlgLabel();かdlgTextView();の中身を「Hello, World」とすればよさそうです。


コメントを残す

メールアドレスが公開されることはありません。

85 + = 93