研究開発

マウスクリックで図形を描く(6)

第6章 ツールの最適化

コマンドからツール化したことで、よりVectorworksらしいインタフェースになってきましたが、まだまだやれることはあります。
まずは、ツールの説明やアイコンを付けてみましょう。
プラグインコマンド編集で、プロパティ...を開きます。

「ツールバーに表示する文字」にメッセージをいれると、ツール選択時にツールバーに文字を表示できます。

「アイコン」は予め26×20のPNGデータを用意しておき、PNGアイコンを取り込む...でファイルを選択すると、
ツールのアイコンがデフォルトのスパナアイコンから、任意のアイコンにすることができます。

「バルーンヘルプの内容」にメッセージをいれると、ツールにマウスポインタを乗せるとヘルプが出るようになります。

続いては、パラメータを付けてみましょう。パラメータとはプログラム内で使う初期データを、プログラムの外から変更できるようにする機構です。ツールの場合、ツール選択時にツールバーのところにポタンが付きます。そこでデータを変更することで、プログラム内のパラメータを変更することができます。

プラグインコマンド編集で、 パラメータ...を開きます。
フィールドフォーマットの設定ダイアログで新規を選びフィールドの設定をします。
今回は団子の数を変更できるようにしてみましょう。

「パラメータの名前」はプログラム上で使う名だと思ってください。
「フィールド名」はパラメータの見出し名です。
「型」は変数の型になります。今回は整数ですので、INTEGERとします。
「初期値」は初めてプログラムを実行するときにセットされる値です。

パラメータを使うようにプログラムも修正します。
CONSTで
kNUM = 3;
としていましたが、kNUMにパラメータを渡すようにすればプログラムを変えずに団子の数を変えられるようになります。
kNUMを変数にしなければならないので、CONSTからVARをもっていきます。
kNUMは整数扱いですので、INTEGERとします。
さらにプログラムの最初の段階で、kNUMにパラメータを割り当てなければいけませんので、BEGINの直後にkNUMにパラメータを代入します。パラメータはプログラム上では頭にPを付けます。
kNUM := PNUM;

PROCEDURE sample;
CONST
	kstartAngl = 0.0;
	ksweepAngle = 360.0;
VAR
	p1X, p1Y, p2X, p2Y : REAL;
	angle : REAL;
	dist, radius : REAL;
	ii : INTEGER;
	kNUM : INTEGER;
BEGIN
	kNUM := PNUM;
	GetLine( p1X, p1Y, p2X, p2Y );
	MoveTo( p1X, p1Y );
	LineTo( p2X, p2Y );
	angle := HAngle( LNewObj );
	angle := angle * PI / 180.0;
	dist := Distance( p1X, p1Y, p2X, p2Y );
	radius := dist / ( kNUM + 1 ) / 2;

	dist := radius * 2;
	FOR ii := 1 TO kNUM DO
	BEGIN
		ArcByCenter( p1X + Cos( angle ) * dist, p1Y + Sin( angle ) * dist, radius, kstartAngl, ksweepAngle );
		dist := dist + radius * 2;
	END;
END;

ツールを選択して、ツールバーのボタンを押してみましょう。
プロパティダイアログで団子の数を変更して、描いて見ましょう。