レッスン 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 の値になります。