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);
© Copyright 2024