VectorScript-PluginObject プログラミング

VectorScript-PluginObject プログラミング
(3)変数をダイアログ入力
【コマンド名:Table_B】
■テーブル・モデル(大きさ可変のテーブルモデル)
■プラグインオブジェクトの作成手順
以下の作業は、自作プラグインや作業画面のカスタマイ
PROCEDURE table;
ズを格納しておく個人用フォルダの設定がなされ、
VAR
[ツール]メニュー>[スクリプト]>[環境設定...]
x,y,z,a,b:REAL;
BEGIN
x:=RealDialog('Wide=','900');
③ [新規作成]ダイアログ>名称入力し、
1 点型オブジェクトのラジオボタンをチェック
>[OK]
>[環境設定]ダイアログの[ユーザフォルダ]指定が
『Z:\AppData\VW2009』になっていることを前提とする。
実行前に[ユーザフォルダ]指定を確認のこと。
y:=RealDialog('Depth=','600');
z:=RealDialog('Hight=','700');
① ツールメニュー>スクリプト
a:=RealDialog('Column=','50');
>プラグインコマンド…実行
B:=RealDialog('Board=','50');
BeginXtrd(z,z+b);
Rect(0,0,x,y);
EndXtrd;
BeginXtrd(0,z);
600
Rect(0,0,+a,+a);
900
Rect(0,y,+a,y-a);
Rect(x,0,x-a,+a);
Rect(x,y,x-a,y-a);
(1)基本モデル
EndXtrd;
(2)数値を変数化
幅(900) ⇒ 変数[x]、奥行(600) ⇒ 変数[y]、
END;
④ [プラグインコマンド編集]ダイアログ
RUN (table);
>プロパティの設定…
>[プロパティ(プラグインオブジェクト)]ダイアログ
脚高さ(700) ⇒ 変数[z]、脚断面(50) ⇒ 変数[a]、
天板厚(50) ⇒ 変数[b]
【コマンド名:Table_A】
PROCEDURE table;
(4)原点を平面中央へ移動
>とりあえずそのまま[OK]
(これを PluginObject の原型プログラムとする)
先ずはこのプログラムを考える!
⑤ [プラグインコマンド編集]ダイアログ
【コマンド名:Table_C】
VAR
x,y,z,a,b:REAL;
BEGIN
x:=900;
>パラメータの設定…
② [プラグインコマンド編集]ダイアログ
>新規…実行
>[フィールドフォーマットの設定]ダイアログ
>新規にデータパレットで使用するパラメータを作成
>[OK]
y:=600;
z:=700;
a:=50;
B:=50;
BeginXtrd(z,z+b);
Rect(0,0,x,y);
EndXtrd;
BeginXtrd(0,z);
名称
フィールド名
型
初期値
Rect(0,0,+a,+a);
x
Width
Number
900
Rect(0,y,+a,y-a);
y
Depth
Number
600
Rect(x,0,x-a,+a);
z
Height
Number
700
Rect(x,y,x-a,y-a);
a
Column
Number
50
b
Board
Number
50
EndXtrd;
END;
RUN (table);
⑥ [プラグインコマンド編集]ダイアログ>コマンド編集
■原型プログラムをプラグイン化する際の付加プログラム
…
PROCEDURE Pobj;
>[VectorScript エディタ]が起動
VAR
■大きさだけでなく、形も変わると、より面白い!
長方形テーブルと楕円テーブルを選択可能なプラグイン
●長方形テーブル【コマンド名:TablePO】
parmName : STRING;
>コンパイル>「コンパイル成功」を確認
parmHand : HANDLE;
PROCEDURE Table;
>[OK]
parmRecordHand : HANDLE;
BEGIN
変数[x] が 100 以下である
⇒ (x=<100)
変数[x] が 100 より小さい
⇒ (x<100)
Rect(-px/2,-py/2,px/2,py/2);
resultStatus : BOOLEAN;
EndXtrd;
{----この部分に原型プログラムの変数を宣言----}
●分岐条件処理で長方形と楕円を描き分ける
BeginXtrd(0,pz);
・コマンド内(プログラム内)で変数宣言(VAR)をおこ
Rect(-px/2,-py/2,-px/2+pa,-py/2+pa);
なう必要はない。
Rect(-px/2, py/2,-px/2+pa, py/2-pa);
・但し、プログラム内では変数名の前にパラメータで
ある指標として接頭文字 p を付ける。例えばパラメ
Rect( px/2,-py/2, px/2-pa,-py/2+pa);
BEGIN
○分岐条件の為のパラメータを追加する
名称 フィールド名
t
Shape
EndXtrd;
また、コマンド(プログラム)の入力は、原型となるプ
parmHand := nil;
ログラムの前後にプラグインとして機能させるための
parmRecordHand := nil;
END;
PROCEDURE Table;
プログラムを付加する必要があるので注意。
wallHand := nil;
RUN(Table);
BEGIN
resultStatus := GetCustomObjectInfo
IF (resultStatus = TRUE) AND (parmHand <> NIL)
AND (parmRecordHand <> NIL) THEN BEGIN
>『その他』であることを確認して[OK]
{----ここからプログラム原型の BEGIN 以降を記述----}
●楕円形テーブル【コマンド名:TablePOR】
BEGIN
PROCEDURE Table;
BeginXtrd(pz,pz+pb);
Rect(-px/2,-py/2,px/2,py/2);
BeginXtrd(pz,pz+pb);
EndXtrd;
Oval(-px/2,-py/2,px/2,py/2);
⑧ プラグインオブジェクトの組み込み方法(作業画面設
計での新規パレットへの組み込み)は…外部のプラグ
Rect(-px/2,-py/2,-px/2+pa,-py/2+pa);
BeginXtrd(0,pb);
Rect(-px/2, py/2,-px/2+pa, py/2-pa);
Oval(-px/3,-px/3,px/3,px/3);
{----ここまでプログラム原型の END 以前を記述----}
END;
EndXtrd;
(2) [作業画面の設計]ダイアログ
END;
BeginXtrd(pb,pz);
Oval(-pa/2,-pa/2,pa/2,pa/2);
RUN(Pobj);
EndXtrd;
>[OK]
(3) [作業画面]ダイアログ内で
a)[ツール]タブ選択
>[作成]項目の[新規パレット]選択
b)[作成]項目[新規パレット]
以上の書式に従うと、プラグインのベーシックなエラー
処理がおこなわれるが、授業ではエラー処理を必要とする
BeginXtrd(0,pz);
EndXtrd;
(1)[ツール]メニュー>作業画面>設計を実行
>『現在の画面の複製を設計変更』をチェック
END;
Rect( px/2,-py/2, px/2-pa,-py/2+pa);
Rect( px/2, py/2, px/2-pa, py/2-pa);
EndXtrd;
END
ELSE
BEGIN
RUN(Table);
BeginXtrd(pz,pz+pb);
ような高度な作業をおこなわないので、パラメータの部分
Oval(-px/2,-py/2,px/2,py/2);
以外は VectorScript と同じように記述する。
EndXtrd;
>[パレット]項目へドラッグ
BeginXtrd(0,pb);
c)[新規パレット]
(4) [作業画面]ダイアログ内で
a) [ツール]項目「その他」の【所定のプラグイン】
IF (条件式) THEN
EndXtrd;
BEGIN
BeginXtrd(pb,pz);
Oval(-pa/2,-pa/2,pa/2,pa/2);
処理 1 のブロック(条件式が真の時に実行される)
を [新規ツールセット]の下へドラッグ>[OK]
>新規パレット内に【所定のプラグイン】がある。
Oval(-px/3,-px/3,px/3,px/3);
【条件分岐処理】について
>[新規ツールセット]が追加される
(5) [ウィンドウ]メニュー>パレット>新規パレット
REC
○分岐条件処理で長方形と楕円を描き分けるプログラム
BEGIN
>[作業画面カテゴリーの設定]ダイアログ
インオブジェクトを組み込んだ方法と同じです。
Pop-Up(REC/OVA)
初期値
IF (pt='REC') THEN
(parmName,parmHand,parmRecordHand,wallHand);
>カテゴリの設定…
型(設定)
Rect( px/2, py/2, px/2-pa, py/2-pa);
parmName := 'BAD';
ータ[x]の、プログラム内変数名は[px]とする。
⑦ [プラグインコマンド編集ダイアログ]
⇒ (x=100)
BeginXtrd(pz,pz+pb);
wallHand : HANDLE;
データパレットで使用するパラメータは
変数[x] が 100 に等しい
変数[x] が 100 に等しくない ⇒ (x<>100)
>VectorScript と同じ要領で入力編集
【⑤-⑥にかけての留意事項(重要)】
IF (条件式) THEN ~における(条件式)の例
EndXtrd;
END
省略可能
(条件式が偽の時は処理しない)
ELSE
BEGIN
処理 2 のブロック(条件式が偽の時に実行される)
END;
END;
END;
RUN(Table);