プログラムでローカル変数を使用する

レッスン 1 で作成した gp:getPointInput 関数を見直します。

(defun gp:getPointInput	()
  (alert
    "Function gp:getPointInput will get user drawing input"
  )
  ;; For now, return T, as if the function worked correctly.
  T
)

現在のところ、この関数はほとんど何も行っていません。これから、歩道の始点、終点、幅を決定するためのユーザ入力を取得する関数を追加します。

AutoLISP プログラムを作成するときに、AutoCAD での具体的な操作を思い浮かべることは重要です。つまり、直線形状の中心線に対して、図面上で点を指定して幅を指定するようにユーザに求めずに、幅の 1/2 を指定するように求めるべきです。

gp:getPointInput 関数が終了すると、それに割り当てられた変数およびその値は存在しなくなります。したがって、ユーザが入力した値は、ローカル変数に格納します。関数は、次のようになります。

(defun gp:getPointInput	(/ StartPt EndPt HalfWidth)
  (if (setq StartPt (getpoint "\nStart point of path: "))
    (if (setq EndPt (getpoint StartPt "\nEndpoint of path: "))
      (if (setq HalfWidth (getdist EndPt "\nhalf-width of path: "))
          T
      )
    )
  )
)

ローカル変数は、関数の先頭の defun 文のスラッシュの後ろで宣言されています。最初の getpoint は、始点を指定するようユーザに求めます。次に、選択された始点に関連して、終点を取得します。終点を選択するとき、始点から伸びるラバーバンドが表示されます。同様に、幅の 1/2 の値を指定するときも、別のラバーバンドが表示されます。このとき、終点からの直線距離が幅の 1/2 の値になります。

gp:getPointInput の動作を確認するには

  1. Visual LISP のコンソール ウィンドウに gp:getPointInput のコードを入力します。
  2. [コンソール]ウィンドウのカーソルを、コード ブロックの最後の括弧の直後(または直後の行)に置き、[Enter]を押して、以前にロードした旧バージョンの gp:getPointInput 関数を置き換えます。
  3. コンソール プロンプトに対し、(gp:getPointInput) と入力して、コンソール ウィンドウから関数を実行します。
  4. プロンプトが表示されたら、始点と終点の位置を指定し、次に幅の 1/2 の値を入力します。