前のレッスン終了後、gp:drawOutline 関数は次のようになっています。
;;;--------------------------------------------------------------; ;;; Function: gp:drawOutline ; ;;;--------------------------------------------------------------; ;;; Description: This function draws the outline of the ; ;;; garden path. ; ;;;--------------------------------------------------------------; (defun gp:drawOutline () (alert (strcat "This function will draw the outline of the polyline " "\nand return a polyline entity name/pointer." ) ) ;; For now, simply return a quoted symbol. Eventually, this ;; function will return an entity name or pointer. 'SomeEname )
このままでは、コードは不十分です。しかし、変数 gp_PathData 内に格納された連想リストの情報を使用すれば、歩道の境界を描くための点を計算することができます。ここで、その変数内の情報をどのような方法で gp:drawOutline に渡すかを決定する必要があります。
gp_PathData が、C:GPath 関数内で定義されたローカル変数であることを思い出してください。AutoLISP では、ある関数内で宣言されたローカル変数は、その関数から呼び出されたすべての関数で可視になります(「ローカル変数とグローバル変数を区別する」を参照)。gp:drawOutline 関数は、C:GPath 内から呼び出されます。gp:drawOutline 関数内の変数 gp_PathData を参照することはできますが、これは良いプログラミング習慣ではありません。
どうしてでしょう。同じ変数を使用する 2 つの関数が同じファイル内で定義されている場合、変数がどこで定義され、何のために使用されているかを判断するのは、それほど困難ではありません。しかし、関数が別のファイルで定義されていると(これは、よくあるケースです)、gp_PathData が何を表すかを判断するために、両方のファイルを調べなければなりません。