連想リストを使用して作業する

次のように関数を呼び出すことにより、変数 gp_PathData 内の連想リストを、gp:drawOutline 関数に渡すことができます。

(gp:drawOutline gp_PathData)

非常に単純ですが、連想リストに格納されている情報がどのように処理されるかを調べる必要があります。Visual LISP の検査機能は、何をすべきかを決定する際に役立ちます。

Visual LISP の検査機能を使用して連想リストを分析するには

  1. テキスト エディタ ウィンドウのコードをロードします。
  2. コンソール プロンプトに対して、次の式を入力します。
    (setq BoundaryData (gp:getPointInput))

    入力した情報は、BoundaryData という名前の変数に格納されます。

  3. 始点、終点、幅の 1/2 に対するプロンプトに応答します。
  4. コンソール ウィンドウで、変数 BoundaryData をダブルクリックして選択します。
  5. Visual LISP のメニューから[表示] [検査]を選択します。

    次のようなウィンドウが表示されます。

    [検査]ウィンドウに、変数 BoundaryData 内の各サブリストが表示されます。

  6. Visual LISP のコンソール プロンプトに次のように入力します。
    (assoc 50 BoundaryData)

    assoc 関数は、連想リスト内の、指定されたキーによって識別される項目を返します。この例ではキーとして 50 を指定しますが、これは庭園の歩道の角度に関連付けられています(このアプリケーションで定義されたキーと値の組み合わせについては、「使用する連想リストを作成する」を参照)。

  7. Visual LISP のコンソール プロンプトに次のように入力します。
    (cdr (assoc 50 BoundaryData))

    cdr 関数は、リストの 2 番目以降のすべての要素を返します。この例では cdr 関数によって、assoc 関数が返した項目内の 2 番目かつ最後の要素である角度の値を取得します。

    現時点では、次のコードが理解できなくても問題ありません。

    (setq PathAngle  (cdr (assoc 50 BoundaryData))
            Width      (cdr (assoc 40 BoundaryData))
            HalfWidth  (/ Width 2.00)
            StartPt    (cdr (assoc 10 BoundaryData))
            PathLength (cdr (assoc 41 BoundaryData))