gp:Calculate-and-Draw-Tiles の他の呼び出しを修正する

リアクタ コールバックでは、引数 ObjectCreationStyle として、コード内に記述された文字列 "ActiveX"gp:Calculate-and-Draw-Tiles に渡されます。しかし、その他のときに gp:Calculate-and-Draw-Tiles が呼び出されたらどうなるのでしょう。

レッスン 4 で、骨格となる関数を変更したときは常に、次の質問に答える必要があることを述べました。

アプリケーションの作成、改訂、更新で、作業関数を変更したときは常に、同じ質問に答える必要があります。この場合、プロジェクト内で gp:Calculate-and-Draw-Tiles を呼び出している他の関数を検索する必要があります。Visual LISP には、これを支援する機能が用意されています。

プロジェクト内で、gp:Calculate-and-Draw-Tiles のすべての呼び出しを検索するには

  1. Visual LISP のテキスト エディタ ウィンドウで、ファイル gpdraw.lsp 内の単語 gp:Calculate‑and-Draw-Tiles をダブルクリックします。
  2. Visual LISP のメニューから[検索] [文字検索]を選択します。

    関数名を事前に選択したので、この関数名は既に検索する文字列として表示されています。

  3. [文字検索]ダイアログ ボックスの[検索範囲]領域で、[プロジェクト]ボタンをクリックします。

    このボタンをクリックすると、[文字検索]ダイアログ ボックスの下部が拡張され、検索するプロジェクトを選択できるようになります。

  4. 現在のプロジェクト名を指定し、[検索]ボタンをクリックします。

    [検索結果]ウィンドウに、結果が表示されます。

  5. [検索結果]ウィンドウに表示された結果を見て、他に gp:Calculate‑and‑Draw-Tiles を呼び出している個所がないか調べます。gpmain.lsp 内に 1 個所のみあるはずです。
  6. [検索結果]ウィンドウで、gp:Calculate‑and‑Draw-Tiles を呼び出しているコード行をダブルクリックします。

    テキスト エディタ ウィンドウがアクティブになり、gpmain.lsp 内のコードの該当する行が表示されます。コードは現在、次のようになっています。

    (setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData))
  7. 上記のコードを、次のコードに置き換えます。
    (setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData nil))

    なぜ、nil なのでしょう。疑似コードは、次のようになっています。

    If ObjectCreationStyle is nil, assign it from the BoundaryData.

    パラメータとして gp:Calculate-and-Draw-Tilesnil が渡されると、関数は、ユーザが選択したタイル作成方法(ダイアログ ボックスで選択され、gp_PathData に格納されます)をチェックします。しかし、リアクタ コールバック command-ended からの次の呼び出しでは、強制的に ActiveX が使用されるように変更されます。

おめでとう。これで、基本的なリアクタ機能が完成しました。必要なら、Tutorial¥VisualLISP¥Lesson7 からファイル gpmain.lspgpdraw.lsp を作業フォルダにコピーし、デバッグ後の完成したコードを調べてください。

行わなければならない作業はまだ多く、それはすべて、gp:Command-ended 関数内の次のコードから起動されます。

(setq NewReactorData
    (gp:RedefinePolyBorder CurrentPoints reactorData)
) ;_ end of setq