Gp:getPointInput 関数を検査する

gp:getPointInput 関数が実行されると、コントロールは自動的に Visual LISP から AutoCAD に移ります。3 つのプロンプトに応答すると、コントロールは AutoCAD から Visual LISP に戻り、コンソール ウィンドウにシンボル T が表示されます。

プログラムは、次のように動作します。

  1. Visual LISP は、最初の点が指定されるまで待機します。
  2. 最初の点を指定すると、指定した場所(位置)を表す値(3 つの座標値、XYZ が含まれたリスト)が変数 StartPt に格納されます。
  3. 最初の if 関数は、結果を調べて、有効な値が入力されたか、それとも値が入力されなかったかを判断します。始点を指定すると、コントロールは次の getpoint 関数に移ります。
  4. 終点を指定すると、その点の値が変数 Endpt に格納されます。
  5. この文の結果が次の if 文によって検査され、コントロールが getdist 関数に移ります。
  6. getdist 関数は、画面上で点をクリックしても、数値を入力しても、同じように動作します。getdist 関数の戻り値は、変数 HalfWidth に格納されます。
  7. プログラムの流れは、関数内に深くネストされた T に達します。これ以上関数はないので、これが関数の終端で、値 T が返されます。これが、コンソール ウィンドウに表示される T です。

1 つの関数から他の関数に値を返す何らかの方法が必要です。この方法の 1 つは、次のコードの太字で示された個所のように、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: "))
         (list StartPt EndPt HalfWidth)
       )
     )
  )
)

gp:getPointInput のこのバージョンをコンソール ウィンドウにコピーし、[Enter]を押してください。次に、コンソール ウィンドウの他の機能を試します。

コンソール ウィンドウのヒストリ機能を使用して gp:getPointInput を実行するには

  1. [Tab]を押します。

    これによりコンソール ヒストリ コマンドが呼び出され、以前に[コンソール]ウィンドウに入力したコマンドを循環的に表示させることができます。目的のコマンドから遠く離れているときは、[Shift]+[Tab]を押します。これにより、表示されるコマンドの順序が逆になります。

  2. コンソール プロンプトに (gp:getPointInput) が表示されたら、[Enter]を押して関数をもう一度実行します。
  3. プロンプトに対して、前と同じように応答します。

関数は、ネストされた 2 つのリストと 1 つの実数(浮動小数点数)を含むリストを返します。戻り値は、次のようになります。

((4.46207 4.62318 0.0) (7.66688 4.62318 0.0) 0.509124)

これらの値は、変数 StartPtEndPtHalfWidth に対応しています。