リアクタ コールバックでは、引数 ObjectCreationStyle として、コード内に記述された文字列 "ActiveX" が gp:Calculate-and-Draw-Tiles に渡されます。しかし、その他のときに gp:Calculate-and-Draw-Tiles が呼び出されたらどうなるのでしょう。
レッスン 4 で、骨格となる関数を変更したときは常に、次の質問に答える必要があることを述べました。
アプリケーションの作成、改訂、更新で、作業関数を変更したときは常に、同じ質問に答える必要があります。この場合、プロジェクト内で gp:Calculate-and-Draw-Tiles を呼び出している他の関数を検索する必要があります。Visual LISP には、これを支援する機能が用意されています。
関数名を事前に選択したので、この関数名は既に検索する文字列として表示されています。
このボタンをクリックすると、[文字検索]ダイアログ ボックスの下部が拡張され、検索するプロジェクトを選択できるようになります。
[検索結果]ウィンドウに、結果が表示されます。
テキスト エディタ ウィンドウがアクティブになり、gpmain.lsp 内のコードの該当する行が表示されます。コードは現在、次のようになっています。
(setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData))
(setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData nil))
なぜ、nil なのでしょう。疑似コードは、次のようになっています。
If ObjectCreationStyle is nil, assign it from the BoundaryData.
パラメータとして gp:Calculate-and-Draw-Tiles に nil が渡されると、関数は、ユーザが選択したタイル作成方法(ダイアログ ボックスで選択され、gp_PathData に格納されます)をチェックします。しかし、リアクタ コールバック command-ended からの次の呼び出しでは、強制的に ActiveX が使用されるように変更されます。
おめでとう。これで、基本的なリアクタ機能が完成しました。必要なら、Tutorial¥VisualLISP¥Lesson7 からファイル gpmain.lsp と gpdraw.lsp を作業フォルダにコピーし、デバッグ後の完成したコードを調べてください。
行わなければならない作業はまだ多く、それはすべて、gp:Command-ended 関数内の次のコードから起動されます。
(setq NewReactorData (gp:RedefinePolyBorder CurrentPoints reactorData) ) ;_ end of setq