研究開発

畳を敷く(1)

第1章 オブジェクトとは?

スクリプトで作れるプラグインは大きく分けて3種類です。

  • メニュー
  • ツール
  • オブジェクト

メニューはメニューからコマンド選んで実行するタイプのプラグインです。
ツールはツールパレットからツールを選んで実行するタイプのプラグインです。
では、オブジェクトとはなんなのでしょう?
オブジェクトは実行方法ではなくて、図形そのものを定義するものなのです。
ですから、使い方としてはツールはもちろん、メニューからも実行はできます。

オブジェクトの種類には「1点型オブジェクト」「2点型オブジェクト」「3点型オブジェクト」「2Dパスオブジェクト」「3Dパスオブジェクト」とあります。

今回は、「1点型オブジェクト」を例に、ツールとの違いをご説明します。

非常にシンプルですが、直角2等辺三角形を描くスクリプトを描いてみましょう。
この場合、必要な情報は、
底辺の長さ、高さの2つ。あとは図形を描くための挿入ポイント(座標)です。

まず、コマンドパレットで実行してみましょう。

PROCEDURE IsoscelesTriangle;
CONST
	pTeihen = 10.0;
	pTakasa = 15.0;
BEGIN
	ClosePoly;
	BeginPoly;
		AddPoint( 0.0, 0.0 );
		AddPoint( pTeihen, 0.0 );
		AddPoint( pTeihen / 2.0, pTakasa );
	EndPoly;
END;
Run( IsoscelesTriangle );

CONSTの部分では、底辺(pTeihen)、高さ(pTakasa)に予め、数値をいれておきます。
ここに定数を使っているのは、のちにオブジェクトにする場合に、プログラムの変更が少なくてすみます。

三角形は多角形で描画するので、まず、多角形を閉じるため、ClosePoly;をします。
そして、BeginPoly;と EndPoly;の間に AddPointすることで、頂点が3点ある多角形ができます。

AddPoint( 0.0, 0.0 );は三角形の左下の点。
AddPoint( pTeihen, 0.0 );は三角形の右下の点。
AddPoint( pTeihen / 2.0, pTakasa );は三角形の尖ったところの点になります。

実行してみましょう。コマンドエディタはリソースパレットをダブルクリックして、VectorScriptコマンドを選んで、OK、コマンド名を付けてOKすると開きます。

動くことが確認できたら、オブジェクトにしてみましょう。
ツールメニューのスクリプトのプラグインコマンド...を選択します。

新規ボタンを押し、新規作成ダイアログ上でプラグインコマンドの名称を「二等辺三角形」とし、1点型オブジェクトを選んで、OKを押します。

二等辺三角形というプラグインができましたので、そこにプログラムをコピーします。
プラグイン名を選択状態にし、コマンド編集ボタンを押してエディタをひらき、上記のプログラムをペーストします。ひとまず、OKでエディタを閉じます。
引き続き、 プラグイン名を選択状態のまま、パラメータ...ボタンを押して、フィールドフォーマットの設定ダイアログでパラメータを作ります。

パラメータとは、ユーザがプログラムへデータを引き渡すための入り口になります。
今回は、 底辺の長さ、高さの2つになります。

すでにプログラム内で変数として使っている pTeihen、pTakasaを利用します。ただし、頭のpは取って登録します。説明が逆になりますが、ここで付けた名前がプログラム上ではpを付けた変数として使用します。
新規ボタンを押して、フィールド設定ダイアログでパラメータを追加します。

パラメータの名前:Teihen
フィールド名:底辺
型:Number
初期値:10.0

パラメータの名前:Takasa
フィールド名:高さ
型:Number
初期値:15.0
とします。

フィールド名はあとで出てきますので後ほど。型は実数を扱うのでNumberとなります。初期値はCONSTのときに設定していた値を入れます。

次に、コマンド編集でCONSTの部分を削除します。プログラム上のpTeihen、pTakasaは外部よりパラメータとしてデータが入ってきて計算に使われます。変数宣言がないのにコンパイルボタンを押してもエラーはでません。

PROCEDURE IsoscelesTriangle;
BEGIN
	ClosePoly;
	BeginPoly;
		AddPoint( 0.0, 0.0 );
		AddPoint( pTeihen, 0.0 );
		AddPoint( pTeihen / 2.0, pTakasa );
	EndPoly;
END;
Run( IsoscelesTriangle );

最後にカテゴリボタンを押して作業画面カテゴリの設定をします。カテゴリは作業画面を作る場合に自分の作ったプラグインが分別されるので探しやすくなります。

これで、オブジェクトの作成は終了、続いて作業画面にいれて実行してみましょう。
ツールメニューの作業画面の設計...を開きます。予め入れたい作業画面を選んでおく必要があるので、選ばれてない場合は、設計...をするまえに、作業画面を変更しておきましょう。
設計...を選択した後は、追加の場合、「現在の画面を設計変更」選択している作業画面をベースにしたい場合には、「現在の画面の複製を設計変更」を選択し、OKを押します。

作業画面ダイアログでは、ツールタブを選んで、右側のツールセットの三角をクリックして開いておきます。
そこに左側の作成にある、新規ツールセットを一番上にドラッグします。新規ツールセットが入りましたので、また三角をクリックして開いておきます。さらに左下のツールのカテゴリ(例では手習い帖)の三角をクリックすると、二等辺三角形がありますので、右の新規ツールセットの下にドラッグしてOKで閉じます。

ツールセットからツールを選んで、ドキュメント上にクリックしてみましょう。
クリックした位置が左下になる二等辺三角形が描かれます。

さて、コマンドで描いたものと、オブジェクトと何が違うのか?見た目は同じように見えますが、データパレットを見てください。コマンドで描いた方は多角形を描いていますので、データタイプも多角形になっています

一方、オブジェクトは二等辺三角形というデータタイプになります。このように、オブジェクトはユーザが任意のデータタイプを作り出すことができるのです。

さらにいえば、このオブジェクト図形はプログラムを背負っているので、データパレットから底辺や高さなどのパラメータ(ここで出てきました)を変更するだけで、図形が再描画されます。いくつも配置(複製)しても各オブジェクトごとにパラメータを保持しているので、それぞれ違った二等辺三角形を配置することができます。